gpt4 book ai didi

c++ - 程序没有正确加载数组

转载 作者:行者123 更新时间:2023-11-28 04:55:40 26 4
gpt4 key购买 nike

手头的问题:编写一个函数 primeTableInRange 来生成一个表,以显示从 startNum 到 endNum 范围内的每个数字是否都是质数。当数字不是素数时,我们只会显示一个“*”。当数字是质数时,我们将显示该数字。

我的代码:

#include <iostream>
#include <ctime>
#include <cmath>
#include <cstdlib>


using namespace std;

int primetableinarray(int userarray[], int arraysize);

int main()
{
int startNum, endNum;
cout<< "Enter your first number in the range" << endl;
cin>>startNum;
cout<< "Enter your last number in the range" << endl;
cin>>endNum;

int arraysize = endNum - startNum;
int userarray[arraysize];
for (int i=startNum;i<=endNum;i++)
userarray[i]= startNum++;
primetableinarray(userarray, arraysize);
return 0;
}

int primetableinarray(int userarray[], int arraysize)
{

for (int i=2;i<arraysize;i++)
{
bool prime=true;
for (int r=2;r*r<i;r++)
{
if (i % r ==0)
{
prime=false;
break;
}
}
if(prime) cout << i << endl;

else
if(true) cout<< "*" << endl;
}
}

问题是它不是从“startNum”开始,也不是从“endNum”结束。它实际上是从 0 到 arraysize。它还将 4 计算为质数。我在这里缺少什么?

最佳答案

小心!在您的情况下,数组始终从 0 开始并以 arraysize 结束。你不能有任意索引。您可以执行以下操作:

int arraysize = endNum - startNum + 1;
int userarray[arraysize];
for (int i=0;i<arraysize;i++)
userarray[i]= startNum+i;

此外,由于我们从 0 开始,您需要在“arraysize”中添加 +1 以在“userarray”中包含“endNum”

关于c++ - 程序没有正确加载数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47170764/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com