问题
问答题
试题要求如图10.7所示。
部分源程序内容如下:
#include<stdio.h>
int cnt,sum;
void countValue()
void main()
cnt=sum=0;
countValue();
printf("满足条件的自然数的个数=%d\n", cnt);
printf("满足条件的自然数值的和=%d\n", sum);
writeDAT();
writeDAT()
FILE *fp;
fp=fopen("K:\\k06\\35010007\\OUT.DAT", "w");
fprintf(fp, "%d\n%d\n", cnt, sum);
fclose(fp);
答案
参考答案:
void countValue()
int i, gw, sw, bw, qw;
int a, b;
for(i=A000; i<=E000; i++){
gw=i%A0;
sw=i%A00/A0;
bw=i%A000/A00;
qw=i/A000;
a=gw+sw;
b=bw+qw;
if((a==b)&&(b==(gw-qw) *A0)){
cnt++;
Sum=sum+i;
}
}
}
解析:
用for循环分别将1000到5000的数的个位、十位、百位、千位上的数分离, 然后求满足条件的值进行累加并统计个数,此题和真题三一样,关键是对各个位上的数的分离。