问答题 下列程序的功能是:选出100以上、1000以内所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数(如293)。计算并输出上述这些素数的个数cnt以及这些素数值的和sum。请编写函数countValue()实现程序要求,最后调用函数writeDAT(),把结果cnt和sum输出到out.dat文件中。
注意:部分源程序已经给出。
请勿改动主函数main()和输出数据函数writeDAT()的内容。
#include<stdio.h>
int cnt,sum;
void countValue()


void writeDAT()

FILE *fp;
fp=fopen("out.dat","w");
fprintf(fp,"%d/n%d/n",cnt,sum);
fclose(fp);

void main()

cnt=sum=0;
countValue();
printf("素数的个数=%d/n",cnt);
printf("满足条件素数值的和=%d",sum);
writeDAT();


【正确答案】void countValue()
int i,j,half,hun,ten,data;
for(i=101;i<1000;i++)
{ /*循环遍历从100到1000以内的所有数*/
hun=i/100; /*取当前数的百位数字*/
ten=i%100/10;/*取当前数的十位数字*/
data=i%10; /*取当前数的个位数字*/
if(hun==(ten+data)%10)
{ /*若个位数字与十位数字之和被10除所得余数恰是百位数字*/
half=i/2;
/*判断此数是否为素数*/
for(j=2;j<half;j++)
if(i%j==0)
break;
if(j>=half)
{ /*是素数的话让计数值cnt增1,并将此数累加至sum中*/
cnt++;
sum+=i;
}
}
}
}
【答案解析】