c语言编程问题,一个小程序

来源:百度知道 编辑:UC知道 时间:2024/09/21 20:53:56
下列程序的功能是:选取出100以上1000以内所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数(如293)。计算并输出上述这些素数的个数CNT以及这些素数值的和SUM。请编写函数COUNTVALUE()实现程序要求,最后调用函数WRITEDAT()把结果CNT和SUM输出到文件OUT.DAT中.
#include <stdio.h>
int cnt, sum;
void countvalue()
{

}

void main()
{
cnt=sum=0;

countvalue();
printf("cnt=%d\n",cnt);
printf("sum=%d",sum);
writedat();
}

writedat()
{
FILE *fp;

fp=fopen("out.dat","w");
fprintf(fp,"%d\n%d\n",cnt,sum);
fclose(fp);
}

答案是:
void countValue()
{
int i,j,half,hun,ten,data;
for(i=100;i<1000;i++)
{
hun=i/100;
ten=i%100/10;
data=i%10;
if((data+ten)%10==hun)
{
half=i/2;
for(j=2;j<half;j++) /* 我的问题在这里*/
if(i%j==0) break;
if(j>=half) {cnt++;sum+=i;}

}
}

}
我的问题是:求素数

哈哈,貌似南开百题,当年在学校的时候还做过的。你的错误很明显,for循环下你不加{}只有一个语句是执行的,这里显然就是第一个if 即 if(i%j==0) break; 而第二个if语句肯定是不在for 循环内的。

for(……)紧跟的一句是循环;
或者
for(……){----花形弧以内的是循环-----}

这两种for格式一定要记住哦。^-^