C语言,求1-1000的素数并输入,程序代码问题
发布网友
发布时间:2024-10-10 00:47
我来回答
共5个回答
热心网友
时间:2024-11-08 08:51
.....它怎么会不停止呢?
for(;b==a;)
printf(/*管他是什么*/);
这样的语句能不死循环吗?不要怀疑,你的break;并不在循环体内。
更加不能明白的是你要这次循环有什么用呢?再好好想想算法。该用判断语句的时候不要用循环。
素数表输出不需要那么复杂,2次循环就够了。尽量把自加的循环变量放到循环语句内,不要放到语句块内。
热心网友
时间:2024-11-08 08:56
你的程序算法有些毛病
我稍微修改:
#include <stdio.h>
main(){
int a,b=2;
for (;b<=1000;b++){
for (a=2;b%a!=0;a++);
if(b==a)
printf ("%d ",b);
}
}
其实楼主的思路很不错,因此写出来的代码挺精简
热心网友
时间:2024-11-08 08:50
for(;;)
后面只能接一句话,
按照楼主的想法,其实只需要加一个括号就行了
for(;b==a;)
{
printf("%d ",a);
break;
}
热心网友
时间:2024-11-08 08:53
for (;b==a;)
printf ("%d ",a);
这里循环会一直执行,当然会无限循环啦。
printf ("%d ",a);
break;
把这两句用{},就行了
热心网友
时间:2024-11-08 08:52
当b=4、a=3的时候,执行到第三个for循环就永远无法趋向结束,条件一直满足就会不停输出a的值3!
正确程序:
#include <stdio.h>
main()
{
int a,b=2;
printf(" 1 2 ");
for (;b<=1000;)
{
b++;
for (a=2;b%a!=0;)
{
a++;
if(b==a)
printf(" %d",a);//这里一个小的改动就解决了
}
}
}
楼上说的加大括号的方式也行,其实你的思路是正确的,粗心忘记加大括号了吧?! 做大的程序时你一时的粗心,就造成调试的极大困难~