C语言,在输出框滚动的时候已经输出出来了,但是输出结束之后不能完全显示。

代码如下,本来应该显示10001-19999中间可以分解成两个素数相乘的所有数的,在输出界面滚动的时候还有一万一千多,一万两千多的数,但是输出界面滚动完毕之后就只有一万八千以上了,只有一部分了,为什么?

#include<stdio.h>
#include<math.h>
int sushu (int m)
{
int i;
if (m == 2) return 1;
if (m == 1 || m % 2 == 0) return 0;
for (i = 3; i * i <= m;)
{
if (m % i == 0) return 0;
i += 2;
}
return 1;
}
int main()
{
int i,n;
for(n=10000; n<20000; n++)
{
for(i=2; i<sqrt(n); i++)
{
if(sushu(i)&&sushu(n/i)&&n%i==0)
printf("%d\n",n);
}
}
return 0;
}

你一定是在Windows下的msdos窗口下运行显示的吧,当你输出的数据量过大时,由于显存缓冲区的关系,只保留最后一部分数据。
其实你可以输出到一个文本文件里,这样更文件查看.方法是使用fopen建立一个文本文件,然后向该文本文件中写入数据,代替你程序中的printf("%d\n",n);
即可。想查看的时候,打开你所建立的文本文件就可以了。追问

但是OJ上显示答案错误啊。

追答

你不是说你显示的内容不完整吗?难道你的程序在算法上有问题吗?

追问

我认为没错误啊。帮看看哪里有问题。

追答

你的程序在算法上当然没有错误,我的意思是说你不要把程序的输出结果直接输出到屏幕上,这样由于缓存在原因,当超过一定量时,必然会显示不全。你把显示的结果保存至一个文件中就可以了。实在不想写输出文件的话使用DOS中的输出符号>定向输出到一个文本文件中也行。

追问

但是是提交到OJ上。显示答案错误。。求解求解啊

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网