0

我在其他程序中使用过 isPrime() 函数,它运行良好,我什至以前也以同样的方式引用过它。出于某种原因,在这个程序中该功能不起作用。我使用 printf() 检查函数返回的内容,它似乎是内存位置。我不知道要更改什么,因为正如我所说,我确信该功能有效。

#include <stdio.h>

int main(void){

 int isPrime(int a);
 int result;
 int x = 1;
 while(x <= 1000){

     result = isPrime(x);
     if (result == 1){
        printf("%d\n",x);
    }
    x++;
 }
 }

 int isPrime(int a){

 int count;
 int z;
 if(a == 1){
   return 0;
 } else {

   for (z = a; z != 0; z-- ){
      if(a % z == 0){
         count++;
      }
   }
   if(count <= 2){
      return 1;
   } else {
     return 0;
   }
 }  
}
4

3 回答 3

2

初始化count为 0。

除此之外,在我的系统上它工作正常。

于 2013-04-10T08:27:33.017 回答
0

移出int isPrime(int a);main()功能,在其上方。或者放到单独的头文件中。有时间时查看函数原型。

于 2013-04-10T08:22:54.420 回答
0

count变量在您的程序中是一个局部变量,因此就像所有局部变量一样,应该在使用前初始化,或者它使用堆栈中的剩余值,并且使用这种不可预测的随机值,您的程序行为是未定义的。

于 2013-04-10T08:35:59.973 回答