为什么会出现这样的问题呢
谁可以看看哪里出问题了,谢谢了
#include <iostream> //预编译命令
using namespace std;
int main() //主函数
{
int k, d;
int prime[100];
for (int c = 2; c <= 100; c++)
{
prime[c] = 0;
}
d = 2;
do
{
k = d;
if (prime[k] == 0)
{
k = k + d;
while (k <= 100)
{
prime[k] = 1;
k = k + d;
}
}
d = d + 1;
} while (d <= sqrt(100));
for (int c = 0; c <= 100; c++)
{
if (prime[c] == 0)
{
cout << c << endl;
}
}
}
下面这个是程序框图
没导包,sqrt依赖于math包
在头部加入
#include<math.h>
有帮助望采纳
第27行,for(int c=2;c<=100;c++) c不是从0开始的吧。
然后数组 int prime[] 应定义为: int prime[101]
这句
for (int c = 2; c <= 100; c++)
数组长度为100,则下标元素为0-99
c <=100 最后一次越界了
#include <iostream> //预编译命令
#include<math.h>//cmath也可以
using namespace std;
int main() //主函数
{
int k, d;
int prime[100];
for (int c = 2; c < 100; c++)//不是<=
{
prime[c] = 0;
}
d = 2;
do
{
k = d;
if (prime[k] == 0)
{
k = k + d;
while (k < 100)//不是<=
{
prime[k] = 1;
k = k + d;
}
}
d = d + 1;
} while (d <= sqrt(100));
for (int c = 0; c < 100; c++)//不是<=
{
if (prime[c] == 0)
{
cout << c << endl;
}
}
}