★☆题目41(无忧id 51 SIX/NINE问题)
下列程序prog1.c的功能是:计算出自然数SIX和NINE,它们满足的条件是SIX+SIX+SIX=NINE+NINE的个数cnt以及满足此条件所有的SIX与NINE的和SUM。请编写函数countValue()实现程序的要求,最后调用函数writeDat()把结果cnt和sum,输出到文件OUT15.DAT中。
其中的S,I,X,N,E各代表一个十进制数字。
部分源程序存在文件prog1.c中。
请勿改动主函数main()和输出数据函数writeDat()的内容。
#include <stdio.h>
int cnt,sum;
void countValue()
{ int s,i,x,n,e,six,nine;
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;
nine=n*1000+i*100+n*10+e;
if(3*six==2*nine)
{ cnt++;sum+=six+nine;}
}
}
void main()
{
cnt=sum=0;
countValue();
printf("满足条件的个数=%d/n",cnt);
printf("满足条件所有的SIX与NINE的和=%d/n",sum);
writeDat();
}
writeDat()
{
FILE *fp;
fp=fopen("OUT15.DAT","w");
fprintf(fp,"%d/n%d/n",cnt,sum);
fclose(fp);
}
另一种经典解法:
void countValue()
{ int i;
for(i=666;i<=999;i=i+2)
if((i/10%10==(3*i/2)/100%10)&&((3*i/2)/1000==(3*i/2)%100/10))
{cnt++;sum+=i+3*i/2;}
}
运算结果为:
满足条件的个数=4
满足条件所有的SIX与NINE的和=9430
① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;
② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。