问答题 程序test.c的功能是:计算出自然数SIX和NINE满足条件SIX+SIX+SIX=NINE+NINE的个数cnt,以及满足此条件的所有SIX与NINE的和SUM。请编写函数countValue()实现程序的要求,最后main()函数调用函数writeDAT()把结果cnt和sum,输出到文件out.dat中。
其中的S,I,X,N,E各代表一个十进制数字,允许代表的数字相同,但S和N不能为0。例如:944+944+944=1416+1416
请勿改动主函数main()和输出数据函数writeDAT()的内容。

#include <stdio.h>
int cnt, sum;
void writeDAT();
void countValue()
{

}
void main()
{
cnt=sum=0;
countValue();
printf("满足条件的个数=%d\n", cnt);
printf("满足条件所有的SIX与NINE的和=%d\n", sum);
writeDAT ();
}
/*把结果cnt和sum输出到文件out.dat中*/
void writeDAT()
{
FILE *fp;
fp=fopen ("out.dat", "w"); //以只写的方式打开文件out.dat
fprintf(fp, "%d\n%d\n", cnt, sum); //把结果cnt和sum输出到文件out.dat中
fclose (fp); //关闭文件out.dat
}
【正确答案】
【答案解析】int s, l, x, n, e, six, nine;
/*计算出自然数six和nine满足条件six+six+six=nine+nine的个数cnt,以及满足此条件所有的six与nine的和sum*/
for(s=1; s<10;s++)
for(i=0;i<10;i++)
for(x=0;x<10;x++)
for(n=1;n<10;n++)
for(e=0;e<10;e++)
{
six=s*100+i*10+x; //由三个数字s,i,x组成一个三位数six
nine=n*1000+i*100+n*10+e; //由四个数字n,i,n,e组成一个四位数nine
if((3*six)==(2*nine)) //如果三倍的三位数six等于两倍的四位数nine
{
cnt++; //计数变量cnt加1
sum+=six+nine; //把三位数six与四位数nine的和累加到变量sum
printf("six=%d,nine=%d\n",six,nine); //输出满足条件的三位数six和四位数nine
}
} [解析] 计算满足条件的SIX+SIX+SIX=NINE+NINE的SIX和NINE的个数以及满足此条件所有的SIX与NINE的和,S,I,X,N,E各代表一个十进制数字。
①定义整型变量s,i,x,n,e,six,nine。
②在第一层for循环中,因为S的值不能为0,所以循环变量s从1开始,依次递增直到其值等于10,退出循环。在第二层for循环中,循环变量i从0开始,依次递增直到其值等于10,退出循环。在第三层for循环中,循环变量x从0开始,依次递增直到其值等于10,退出循环。在第四层for循环中,因为n的值不能为0,所以循环变量n从1开始,依次递增直到其值等于10,退出循环。在第五层for循环中,循环变量e从0开始,依次递增直到其值等于10。
③设置完所有for循环条件后,在循环体中,由变量S的值乘以100,变量i的值乘以10,以及变量x组成一个三位数赋给变量six,由变量n的值乘以1000,变量i的值乘以100,变量n的值乘以10,以及变量e组成一个四位数赋给变量nine,再用if条件语句判断,如果三倍的six等于两倍的nine,则计数变量cnt加1,把six与nine的和累加到变量sum,同时在屏幕上,输出six与nine的值。