请教高手,这个程序该如何编写(C语言)
#include<stdio.h>voidWriteDat()voidGetAnswer(intnum,intmin,int*answer,intcurr){if(num...
#include <stdio.h>
void WriteDat()
void GetAnswer(int num, int min, int* answer, int curr)
{
if (num==0&&curr==7)
{
for (int i = 0; i < 7; ++i)
printf("%d\t", answer[i]);
printf("\n");
}
else if (curr>=7)
{
return;
}
else
{
for (int i = min+1; i < 33; ++i)
{
if (num-i<0)break;
answer[curr]=i;
GetAnswer(num-i,i,answer,curr+1);
}
}
}
int main()
{
int num,result[7];
printf("please input a number:");
scanf("%d",&num);
GetAnswer(num, 0, result, 0);
return 0;
void WriteDat();//是不是在这里加入WiteDat()函数
}
writeDat()
{
//怎么写代码啊,我不会,刚学,看了一下书,没看懂..
}
能调试成功,请问如何用 writeDat() 把调试的结果输出出D盘的A.TXT文件中...帮我把 writeDat() 函数写出来.
写出来,能调试成功就给分
原始的程序是这样的
#include <stdio.h>
void GetAnswer(int num, int min, int* answer, int curr)
{
if (num==0&&curr==7)
{
for (int i = 0; i < 7; ++i)
printf("%d\t", answer[i]);
printf("\n");
}
else if (curr>=7)
{
return;
}
else
{
for (int i = min+1; i < 33; ++i)
{
if (num-i<0)break;
answer[curr]=i;
GetAnswer(num-i,i,answer,curr+1);
}
}
}
int main()
{
int num,result[7];
printf("please input a number:");
scanf("%d",&num);
GetAnswer(num, 0, result, 0);
return 0;
}
我的要求是,如何把程序输出的结果写入到一个文本文件中(比如说输出的结果放在D盘的A.TXT文件中)..帮我补充一下程序就可以了... 展开
void WriteDat()
void GetAnswer(int num, int min, int* answer, int curr)
{
if (num==0&&curr==7)
{
for (int i = 0; i < 7; ++i)
printf("%d\t", answer[i]);
printf("\n");
}
else if (curr>=7)
{
return;
}
else
{
for (int i = min+1; i < 33; ++i)
{
if (num-i<0)break;
answer[curr]=i;
GetAnswer(num-i,i,answer,curr+1);
}
}
}
int main()
{
int num,result[7];
printf("please input a number:");
scanf("%d",&num);
GetAnswer(num, 0, result, 0);
return 0;
void WriteDat();//是不是在这里加入WiteDat()函数
}
writeDat()
{
//怎么写代码啊,我不会,刚学,看了一下书,没看懂..
}
能调试成功,请问如何用 writeDat() 把调试的结果输出出D盘的A.TXT文件中...帮我把 writeDat() 函数写出来.
写出来,能调试成功就给分
原始的程序是这样的
#include <stdio.h>
void GetAnswer(int num, int min, int* answer, int curr)
{
if (num==0&&curr==7)
{
for (int i = 0; i < 7; ++i)
printf("%d\t", answer[i]);
printf("\n");
}
else if (curr>=7)
{
return;
}
else
{
for (int i = min+1; i < 33; ++i)
{
if (num-i<0)break;
answer[curr]=i;
GetAnswer(num-i,i,answer,curr+1);
}
}
}
int main()
{
int num,result[7];
printf("please input a number:");
scanf("%d",&num);
GetAnswer(num, 0, result, 0);
return 0;
}
我的要求是,如何把程序输出的结果写入到一个文本文件中(比如说输出的结果放在D盘的A.TXT文件中)..帮我补充一下程序就可以了... 展开
7个回答
展开全部
/*下面是源程序,给出详细的解释*/
#include<conio.h>
#include<string.h>
#include <stdio.h>
/*函数声明*/
void WriteDat(int *result);
void GetAnswer(int num, int min, int* answer, int curr);
/*主函数*/
int main()
{
int num,result[7];
printf("please input a number:");/*输入一个整数*/
scanf("%d",&num);
GetAnswer(num, 0, result, 0);
WriteDat(result);/*将结果写入文件*/
getch();
return 0;
}
/***********************
函数功能:将result中的数据
写入文件中
***************************/
void WriteDat(int *result)
{
FILE *fp;
int i;
int len;
fp=fopen("D:\\result.txt","w+b");/*首先打开文件,如果文件还没有存在则新建一个文件.result.txt是文件名,你可以改别的名字*/
if(!fp)/*如果文件打开失败*/
{
printf("\ncan not create file\n");
return;
}
len=sizeof(result);/*得到result的长度*/
for(i=0;i<len;i++)/*用一个循环,将数据写入文件*/
{
fprintf(fp," %d ",result[i]);/*以整数的形式将数据写入文件*/
}
fclose(fp);/*数据写入完后关闭文件*/
}
void GetAnswer(int num, int min, int* answer, int curr)
{
int i;
if (num==0&&curr==7)
{
for (i = 0; i < 7; ++i)
printf("%d\t", answer[i]);
printf("\n");
}
else if (curr>=7)
{
return;
}
else
{
for (i = min+1; i < 33; ++i)
{
if (num-i<0)
break;
answer[curr]=i;
GetAnswer(num-i,i,answer,curr+1);
}
}
}
对你程序的指正:在你的程序里面,
return 0;
void WriteDat();//是不是在这里加入WiteDat()函数
这样调用是不正确的,因为"return 0; "后,程序不再往下运行了,所以WriteDat()是无法执行的.
#include<conio.h>
#include<string.h>
#include <stdio.h>
/*函数声明*/
void WriteDat(int *result);
void GetAnswer(int num, int min, int* answer, int curr);
/*主函数*/
int main()
{
int num,result[7];
printf("please input a number:");/*输入一个整数*/
scanf("%d",&num);
GetAnswer(num, 0, result, 0);
WriteDat(result);/*将结果写入文件*/
getch();
return 0;
}
/***********************
函数功能:将result中的数据
写入文件中
***************************/
void WriteDat(int *result)
{
FILE *fp;
int i;
int len;
fp=fopen("D:\\result.txt","w+b");/*首先打开文件,如果文件还没有存在则新建一个文件.result.txt是文件名,你可以改别的名字*/
if(!fp)/*如果文件打开失败*/
{
printf("\ncan not create file\n");
return;
}
len=sizeof(result);/*得到result的长度*/
for(i=0;i<len;i++)/*用一个循环,将数据写入文件*/
{
fprintf(fp," %d ",result[i]);/*以整数的形式将数据写入文件*/
}
fclose(fp);/*数据写入完后关闭文件*/
}
void GetAnswer(int num, int min, int* answer, int curr)
{
int i;
if (num==0&&curr==7)
{
for (i = 0; i < 7; ++i)
printf("%d\t", answer[i]);
printf("\n");
}
else if (curr>=7)
{
return;
}
else
{
for (i = min+1; i < 33; ++i)
{
if (num-i<0)
break;
answer[curr]=i;
GetAnswer(num-i,i,answer,curr+1);
}
}
}
对你程序的指正:在你的程序里面,
return 0;
void WriteDat();//是不是在这里加入WiteDat()函数
这样调用是不正确的,因为"return 0; "后,程序不再往下运行了,所以WriteDat()是无法执行的.
展开全部
调试通过:
#include <stdio.h>
#include <iostream.h>
#include <stdlib.h>
void GetAnswer(int num, int min, int* answer, int curr)
{
if (num==0&&curr==7)
{
for (int i = 0; i < 7; ++i)
printf("%d\t", answer[i]);
printf("\n");
}
else if (curr>=7)
return;
else
{
for (int i = min+1; i < 33; ++i)
{
if (num-i<0)break;
answer[curr]=i;
GetAnswer(num-i,i,answer,curr+1);
}
}
}
void writeDat(int r[7])
{
FILE * fp;
int result[7];
//创建记录文件
if((fp=fopen("D:\\A.txt","w+"))==NULL)
{
cout<<"Create file error!"<<endl;
exit(0);
}
fwrite(result,sizeof(int),7,fp);
fclose(fp);
return;
}
int main()
{
int num,result[7];
printf("please input a number:");
scanf("%d",&num);
GetAnswer(num, 0, result, 0);
// int i;
// for(i=0;i<7;i++) cout<<result[i]<<"\t";
//在这里加入writeDat()
writeDat(result);
return 0;
}
程序虽然通过,数据也得到保存,但我还是不知道你的程序是干什么的
通过我注释掉的语句你可以看到,经过GetAnswer后,result里的7个数大部分情况下是乱七八糟的数,不知道什么意思
#include <stdio.h>
#include <iostream.h>
#include <stdlib.h>
void GetAnswer(int num, int min, int* answer, int curr)
{
if (num==0&&curr==7)
{
for (int i = 0; i < 7; ++i)
printf("%d\t", answer[i]);
printf("\n");
}
else if (curr>=7)
return;
else
{
for (int i = min+1; i < 33; ++i)
{
if (num-i<0)break;
answer[curr]=i;
GetAnswer(num-i,i,answer,curr+1);
}
}
}
void writeDat(int r[7])
{
FILE * fp;
int result[7];
//创建记录文件
if((fp=fopen("D:\\A.txt","w+"))==NULL)
{
cout<<"Create file error!"<<endl;
exit(0);
}
fwrite(result,sizeof(int),7,fp);
fclose(fp);
return;
}
int main()
{
int num,result[7];
printf("please input a number:");
scanf("%d",&num);
GetAnswer(num, 0, result, 0);
// int i;
// for(i=0;i<7;i++) cout<<result[i]<<"\t";
//在这里加入writeDat()
writeDat(result);
return 0;
}
程序虽然通过,数据也得到保存,但我还是不知道你的程序是干什么的
通过我注释掉的语句你可以看到,经过GetAnswer后,result里的7个数大部分情况下是乱七八糟的数,不知道什么意思
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
也不知道你要求写的文件是什么格式的,我下面用二进制方式把num和result都写进文件了
#include <stdio.h>
void writeDat(int num, int result[])
{
FILE *fp;
int i;
if((fp=fopen("d:\\A.TXT","w")
{
fwrite(&num, sizeof(int), 1, fp);
fwrite(&result, sizeof(int), 7, fp);
}
fclose(fp);
}
void GetAnswer(int num, int min, int* answer, int curr)
{
if (num==0&&curr==7)
{
for (int i = 0; i < 7; ++i)
printf("%d\t", answer[i]);
printf("\n");
}
else if (curr>=7)
{
return;
}
else
{
for (int i = min+1; i < 33; ++i)
{
if (num-i<0)break;
answer[curr]=i;
GetAnswer(num-i,i,answer,curr+1);
}
}
}
int main()
{
int num,result[7];
printf("please input a number:");
scanf("%d",&num);
GetAnswer(num, 0, result, 0);
WriteDat();//在这里加入WiteDat()函数
return 0;
}
#include <stdio.h>
void writeDat(int num, int result[])
{
FILE *fp;
int i;
if((fp=fopen("d:\\A.TXT","w")
{
fwrite(&num, sizeof(int), 1, fp);
fwrite(&result, sizeof(int), 7, fp);
}
fclose(fp);
}
void GetAnswer(int num, int min, int* answer, int curr)
{
if (num==0&&curr==7)
{
for (int i = 0; i < 7; ++i)
printf("%d\t", answer[i]);
printf("\n");
}
else if (curr>=7)
{
return;
}
else
{
for (int i = min+1; i < 33; ++i)
{
if (num-i<0)break;
answer[curr]=i;
GetAnswer(num-i,i,answer,curr+1);
}
}
}
int main()
{
int num,result[7];
printf("please input a number:");
scanf("%d",&num);
GetAnswer(num, 0, result, 0);
WriteDat();//在这里加入WiteDat()函数
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
程序问题太多了,还有,你应该加点注释上来
楼主是要将标准输出重定向到文件的意思把
那读的时候是从标准输入读呢还是文件读入呢
楼主是要将标准输出重定向到文件的意思把
那读的时候是从标准输入读呢还是文件读入呢
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的main函数错了
怎么能return 0后又调用WritDat()呢?
而且你这样写void WriteDat();是声明,不是调用
怎么能return 0后又调用WritDat()呢?
而且你这样写void WriteDat();是声明,不是调用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询