```c
//打印100-200之间的素数
int ret(int a)
{
int n;
for (n = 2; n < a; n++)
{
if (0 == a % n)
return 0;
}
return 1;
}
int main()
{
int i;
for (i = 101; i <= 200; i+=2)
{
if(ret(i)==1);
printf("%d\t", i);
}
return 0;
}
//请问这个程序为什么把所有的数都打出来了?
```
第20行 if(ret(i)==1);
最后这里多了一个 “;”
如果解决,请采纳,感谢。
if(ret(i)==1); 分号删了
【以下回答由 GPT 生成】
这段C语言代码的错误在于if(ret(i) == 1);
这行的分号;
。 由于分号的存在,if
语句被提前终止,导致后面的printf
语句会被执行而不受if
语句的控制。 所以无论ret(i)
返回什么值,都会执行printf
语句,从而导致所有的数字都被打印出来。
正确的代码应该是:
if(ret(i) == 1)
printf("%d\t", i);
即去掉分号后的正确代码为:
int ret(int a)
{
int n;
for (n = 2; n < a; n++)
{
if (a % n == 0)
return 0;
}
return 1;
}
int main()
{
int i;
for (i = 101; i <= 200; i += 2)
{
if(ret(i) == 1)
printf("%d\t", i);
}
return 0;
}
【相关推荐】