问答题
下列程序的功能是:计算出自然数SIX和NINE,它们满足的条件是SIX+SIX+SIX=NINE+NINE的个数cnt以及满足此条件所有的SIX与NINE的和sum。请编写函数countValue()实现程序的要求,最后调用函数writeDat(),把结果cnt和sum输出到OUT.DAT文件中。
其中,S、I、X、N、E各代表一个十进制数。
注意:部分源程序已经给出。
请勿改动主函数main()和输出数据函数writeDat()的内容。
#include<stdio.h>
int cnt,sum;
void countValue()
void writeDat()
FILE *fp;
fp=fopen("OUT.DAT","w");
fprintf(fp,"%d/n%d/n",cnt,sum);
fclose(fp);
void main()
cnt=sum=0;
countValue();
printf("满足条件的个数=%d/n",cnt);
printf("满足条件所有的SIX与NINE的和=%d/n",sum);
writeDat();
【正确答案】void countValue()
int S,I,X,N,E;/*定义5个循环变量,他们分别代表题目所述的5个数字*/
int SIX,NINE;
/*用穷举法遍历这5个数字的所有组合*/
for(S=1;S<10;S++) /*S为SIX的百位数字不能为0,故取值范围为1~9*/
for(I=0;I<10;I++)
for(X=0;X<10;X++)
for(N=1;N<10;N++)/*N是NINE的千位不能为0,故范围为1~9*/
for(E=0;E<10;E++)
SIX=S*100+I*10+X; /*组合成SIX值*/
NINE=N*1000+I*100+N*10+E;/*组合成NINE值*/
if(SIX*3==NINE*2)
{ /*如果SIX*3等于NINE乘以2,则找到一个解*/
cnt++; /*计数值cnt增1*/
sum+=SIX+NINE; /*将SIXSHNINE累加进sum*/
}
}
【答案解析】