这个程序在 DEV C++ 下运行如何显示结果?

来源:百度知道 编辑:UC知道 时间:2024/05/30 17:37:58
我试过了在结尾加: system("pause"); getchar();
都报错啊?大侠教教我啊

#include<stdio.h>
#include<math.h>

int prime(int x)
{int i;
for(i=2;i<(int)sqrt(x);i++)
if(x%i==0)return 0;

return 1;
}

void main()
{
int n,i,j=0;
printf("n:");
scanf("%d",&n);
printf("СÓÚµÈÓÚ%dµÄËØÊý:\n",n);
if(n>2)
{printf("%4d",2);
j++;
}
for(i=3;i<=n;i+=2)
if(prime(i)==1)
{
printf("%4d",i);
if(j!=0&&++j%10==0)
printf("\n");

}
printf("\n");

}
各位啊,你们能把修改后的程序试运行一下,然后把正确的答案贴上来吗?你们的建议我试过,还是不行啊!

首先getchar(); 从上面的字符缓存里面读到了东西,就相当于没用了。

另外system("pause"); 在VC下需要#include<stdlib.h>,不知道Dev是不是。
/////////////////////////////////////////////////
转贴:
这种方法稍微有点复杂,但它通用于任何系统,只要这个系统拥有符合标准的 C/C++ 编译器。在您想要暂停的地方加上 getchar();(对于 C 和 C++)或者 cin.get();(仅适用于 C++)就可以使程序暂停,然后按回车程序就会继续执行。不过,您会发现,这种办法却不一定奏效。如果您够细心,会发现只有当 getchar();/cin.get(); 前面有接收输入的语句的时候,该办法才会失效。如果之前没有接收任何输入,该办法是 100% 奏效的!这是因为,如果前面接收了输入,输入流中可能会有残留数据,getchar();/cin.get(); 就会直接读取输入流中的残留数据,而不会等待我们按回车。解决该问题的办法是,先清空输入流,再用 getchar();/cin.get();。清空输入流的办法如下:

1). /* 适用于 C 和 C++。需要包含 stdio.h(对于 C)或者 cstdio(对于 C++)*/
while ( (c = getchar()) != '\n' && c != EOF ) ; /* 对于 C 和 C++ */

2). cin.clear(); // 仅适用于 C++,而且还需要包含标准头文件 limits
cin.ignore( numeric_limits<streamsize>::max(), '\n' );

dev c++ 是 GNU C标准
main() 函数要声明成返回int :

int main(){
... ...
... ...
return 0;
}