程序可以运行,但是没有输出,没有任何反应。。怎么回事,求救
#include<stdio.h>
#include<stdlib.h>
#define SIZE 1000
#define TRUE 1
#define FALSE 0
int
main()
{
char sieve[SIZE];
char *sp;
int number;
for(sp=sieve;sp<&sieve[SIZE];)
*sp=TRUE;
for(number=3;;number+=2){
sp=&sieve[0]+(number-3)/2;
if(sp>=&sieve[SIZE])
break;
while(number%3==0||number%5==0)
*sp=FALSE;
}
printf("2\n");
for(number=3,sp=&sieve[0];
sp<&sieve[SIZE];
number+=2,sp++){
if(*sp)
printf("%d\n",number);
}
return ;
}
首先感谢大家的回答,问题解决了,确实进入了一个死循环没有出来。不过不是在大家说的哪里。在之前的地方,就已经进了死循环没有出来。
#include<stdio.h>
#include<stdlib.h>
#define SIZE 1000
#define TRUE 1
#define FALSE 0
int
main()
{
char sieve[SIZE];
char *sp;
int number;
for(sp=sieve;sp<&sieve[SIZE];)
*sp++=TRUE;
//我在这里,之前写的是*sp,但实际上应该是*sp++
for(number=3;;number+=2){
sp=&sieve[0]+(number-3)/2;
if(sp>=&sieve[SIZE])
break;
while(sp+=number,sp<&sieve[SIZE])
*sp=FALSE;
}
printf("2\n");
for(number=3,sp=&sieve[0];
sp<&sieve[SIZE];
number+=2,sp++){
if(*sp)
printf("%d\n",number);
}
return EXIT_SUCCESS;
}
while(number%3==0||number%5==0)
*sp=FALSE;
}
死循环,目测需要加上number++;
单步调试下程序,看看是卡在哪里了。
while(number%3==0||number%5==0)//这个要改成if吧
*sp=FALSE;
还有第一个for循环也退不出吧,没大括号
完全不知道写的什么,参考http://blog.csdn.net/chengyingzhilian/article/details/7314851