一道计算机三级的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+SIX+SIX=NINE+NINE
设SIX组成的数字为i,则得出条件:
1 3*i%2==0 三个数字的和是偶数
2 3*i/2> =1000 三个数字的和大于1000
3 3*i/2 <=9999 三个数字的和小雨9999
4 i/10%10==(3*i/2)/100%10 SIX中和I值和NINE中的I值必须相同
5 (3*i/2)/1000==(3*i/2)%100/10 NINE中的两个N的值必须相同
同时满足这5个条件用&&链接
[解决办法]
writeDat()未声明
[解决办法]
2 3*i/2> =1000 三个数字的和大于1000
3 3*i/2 <=9999 三个数字的和小雨9999
==========
应该是1000= <NINE <=9999