读书人

一道计算机三级的c语言上机题~着急

发布时间: 2012-02-05 12:07:15 作者: rapoo

一道计算机三级的c语言上机题~~着急 在线等
题目要求:
下列程序的功能:计算出自然数SIX和NINE,他们满足的条件是
SIX+SIX+SIX=NINE+NINE的个数cnt以及满足此条件所有的SIX和NINE的和sum。请编写函数countValue()实现程序的要求,最后调用函数writeDat()把结果cnt和sum,输出到文件out15.dat中。
其中S,I,X,N,E个代表一个十进制数字。

源程序如下:
#include <stdio.h>
int cnt,sum;
void countValue()
{
int i=100;
while(1)
{
if(3*i%2==0&&3*i/2> =1000&&3*i/2 <=9999&&i/10%10==(3*i/2)/100%10&&
(3*i/2)/1000==(3*i/2)%100/10)
{cnt++;sum+=i+3*i/2;i++;}
else i++;
if (i> 999||3*i/2> 9999) break;
}
}
void main()
{
cnt=sum=0;
countValue();
printf( "满足条件的个数=%d\n ",cnt);
printf( "满足条件所有的SIX与NINE的和=%d\n ",sum);
writeDat();
getchar();
}
writeDat()
{
FILE *fp;
fp=fopen( "OUT15.DAT ", "w ");
fprintf(fp, "%d\n%d\n ",cnt,sum);
fclose(fp);
}


我看不懂函数countValue()
高手帮我解释一下 为什么函数countValue()要这样写?~~??

谢谢~~~


[解决办法]
SIX最小为100,最大值为999
NINE最小为1000,最大值为9999
i为SIX,我觉得这样说已经很明显了
要是还不理解我再继续,这种题目最好自己花时间想,锻炼逻辑思维
[解决办法]
3*i%2==0 保证3个SIX加起来是偶数
3*i/2> =1000 3个SIX加起来分为两个NINE 保证NINE大于1000
3*i/2 <=9999 3个SIX加起来分为两个NINE 保证NINE小于9999
i/10%10==(3*i/2)/100%10 保证SIX中的I与NINE中的I相等
(3*i/2)/1000==(3*i/2)%100/10 保证NINE中的两个N相等

读书人网 >C++

热点推荐