C语言的大神帮我看看哪里写错了?
已经修改完成,运行通过:
#include <stdio.h>
int isPrime(int x, int KnownPrimes[], int numberOfKnownPrimes );
int main(void)
{ const int number=10;
int prime [number]= {2}; //有修改
int count = 1;
int i = 3;
while ( count< number)
{ if(isPrime(i,prime,count))
{ prime[count++] = i; //有修改
}
i++;
}
for(i=0; i<number; i++)
{ printf("%d",prime[i]);
if((i+1)%5)printf("\t");
else printf("\n");
}
return 0;
}
int isPrime(int x,int KnownPrimes[],int numberOfKnownPrimes)
{ int ret = 1;
int i;
for(i=0; i<numberOfKnownPrimes; i++)
{ if(x%KnownPrimes[i] ==0)
{ ret=0;
break;
}
}
return ret;
}
2、你所用的编译器已经很清晰地提示了,变长数组不允许初始化。这可能是c99语法规则的限制,你可以把.c文件改成.cpp也许就过了
所以你最好了解一下老师是在什么环境下写代码的,尽可能在初学阶段避免这些麻烦。当然,很多问题知道出在哪了,解决就相对简单了
可变长数组,要求编译器支持C99标准
开启编译器的C99支持选项,具体方法自行搜索对应编译器关键字