能运行但有bug,怎么解决?

img
为什么会出现这样的问题呢
谁可以看看哪里出问题了,谢谢了


#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;
            }

        }
}

下面这个是程序框图

img

没导包,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;
            }
 
        }
}