C++ 我运行时,黑框一闪而过.

来源:百度知道 编辑:UC知道 时间:2024/06/05 02:22:41
C++ 我运行时,黑框一闪而过.而切在闪之前也没看到一些数字出来.
我的程序是这样的:
(题目是:对6-60的偶数验证哥德巴赫的猜想)
#include<iostream>
using namespace std;
int main()
{
int a[60],n,i,e[60],s,m;
m=0;
for (i=2;i<=60;i++)
{s=0;
for (n=1;n<=i/2;n++)
{if (i%n==0)
s=s+1;
if (s==1)
{m=m+1;
a[m]=i;
e[m]=i;}}}
m=0;
for (i=6;i<=60;i++)
for (n=1;n<=60;n++)
for (s=1;s<=60;s++)
{if (i=a[n]+e[s])
m=m+1;}
if (m==0)
cout<<"yes";
else
cout<<"no";
system("pause");
return 0;
}

a[m]=i;
e[m]=i;
这两句数组越界造成问题了,添加判断if(m<60)之后,不再闪烁退出,具体算法实现没有研究,不知道是否正确。

不知道你用什么编译系统和操作系统
system("pause");
我用VS2005+winxp是没什么问题的
实在不行用getchar()

你是在CMD下运行的你的程序吗?

我运行的时候也是黑屏一闪就过去了,你用的是DEV C++吧,我也是

不过发现了一个你的小错误if (i=a[n]+e[s]) 应该是if (i==a[n]+e[s])

如果这样改运行时不会一闪而过,但不知道是不是你要的结果:
------------------------------------
#include<iostream>
using namespace std;
int main()
{
int a[60],n,i,e[60],s,m;
m=0;
for (i=2;i<=60;i++)
{
s=0;
for (n=1;n<=i/2;n++)
{
if (i%n==0)
s=s+1;

}
if (s==1) //改的此处,从内层循环中拿出来了;
{
a[m]=i;
e[m]=i;m=m+1;
}
}
m=0;
for (i=6;i<=60;i++)
for (n=1;n<=60;n++)
for (s=1;s<=60;s++)