请教高手,这个程序该如何编写(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文件中)..帮我补充一下程序就可以了...
展开
 我来答
SSHHFF凤
2008-04-27 · TA获得超过1690个赞
知道小有建树答主
回答量:799
采纳率:83%
帮助的人:335万
展开全部
/*下面是源程序,给出详细的解释*/
#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()是无法执行的.
xlb_115
2008-05-05 · TA获得超过3730个赞
知道小有建树答主
回答量:469
采纳率:0%
帮助的人:391万
展开全部
调试通过:

#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个数大部分情况下是乱七八糟的数,不知道什么意思
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
高金山
2008-04-27 · TA获得超过1万个赞
知道大有可为答主
回答量:4101
采纳率:0%
帮助的人:1692万
展开全部
也不知道你要求写的文件是什么格式的,我下面用二进制方式把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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
井钰gQ
2008-04-27 · TA获得超过2480个赞
知道大有可为答主
回答量:1303
采纳率:0%
帮助的人:1489万
展开全部
程序问题太多了,还有,你应该加点注释上来

楼主是要将标准输出重定向到文件的意思把

那读的时候是从标准输入读呢还是文件读入呢
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
捡到的幸福
2008-04-27 · TA获得超过1282个赞
知道小有建树答主
回答量:568
采纳率:0%
帮助的人:348万
展开全部
你的main函数错了
怎么能return 0后又调用WritDat()呢?
而且你这样写void WriteDat();是声明,不是调用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式