楼主写C的过程中对于函数定义不太关注,如下是求m到n的素数求和例子
```
#include<stdio.h>
int isPrime = 1; //喜欢把函数定义放在main外
int sum = 0;
int cnt = 0;
int i;
int main()
{
int m,n = 0;
scanf("%d %d",&m,&n);
if(m == 1) m=2;
for ( i=m;i<=n;i++){
int k;
for (k=2;k<i-1;k++){
if( i%k == 0 ){
isPrime = 0;
break;
}
}
if ( isPrime ){
sum += i;
cnt ++;
}
}
printf("%d:%d\n",cnt,sum);
return 0;
}
```
当输入(3 8)时,输出为(1 :3),调试过程发现走到后部if(isPrime)出现
问题;然后多次提哦啊是最后照抄原版
```
#include<stdio.h>
int main()
{
int sum = 0;
int cnt = 0;
int i;
int m,n = 0;
scanf("%d %d",&m,&n);
//if(m == 1) m=2;
for ( i=m;i<=n;i++){
int isPrime = 1;
int k;
for (k=2;k<i-1;k++){
if( i%k == 0 ){
isPrime = 0;
break;
}
}
if ( isPrime ){
sum += i;
cnt ++;
}
}
printf("%d:%d\n",cnt,sum);
return 0;
}
```
几次调试发现isPrime必须在第一个for循环里,我的理由是:
每次遍历必须对isPrime置一次“1”,如果在一开始定义,会导致后期isPrime值得变化
导致结果出错