为了账号安全,请及时绑定邮箱和手机立即绑定

结果明显是错的。标准解答第一行少了cnt=0,sum=0,得到正确答案,这是为什么?

结果明显是错的。标准解答第一行少了cnt=0,sum=0,得到正确答案,这是为什么?

PHP
肥皂起泡泡 2023-03-20 17:13:35
下列程序的功能是:选取出100以上1000以内所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数(如293)。计算并输出上述这些素数的个数CNT以及这些素数值的和SUM。请编写函数COUNTvalue()实现程序要求,最后调用函数WRITEDAT()把结果CNT和SUM输出到文件OUT.DAT中.注意:部分源程序已给出。请勿改动主函数main()和函数readwriteDAT()的内容。 #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();}我的解答是:int i, j, half, hun, ten, data,cnt=0,sum=0;for (i=101; i<1000; i++){hun = i/100;ten = i%100/10;data = i%10;if (hun == (ten+data)%10){half = i/2;for (j=2; j<half; j++)if (i%j == 0)break;if (j >= half){cnt++; sum += i;}}}输出是:素数的个数=0满足条件素数值的和=0
查看完整描述

2 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

int i, j, half, hun, ten, data,cnt=0,sum=0; 
你等于定义了一个新的cnt、sum,是局部变量,全局变量cnt、sum并未改变

查看完整回答
反对 回复 2023-03-22
?
智慧大石

TA贡献1946条经验 获得超3个赞

你在countValue()函数中又定义了变量cnt,sum(与全局变量同名);这样就把全局变量cnt,sum给屏蔽掉了.
你在countValue()中对cnt,sum的操作都是在操作你那个函数中的局部变量.
而你在main函数中又是操作的全局变量.countValue()没有起到修改全局变量的作用.所以它的值还是0.

查看完整回答
反对 回复 2023-03-22
  • 2 回答
  • 0 关注
  • 108 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信