问题 问答题

试题要求如图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的数的个位、十位、百位、千位上的数分离, 然后求满足条件的值进行累加并统计个数,此题和真题三一样,关键是对各个位上的数的分离。

选择题
单项选择题