如果条件发生,此处存储在数组i
中的prime
的值。但是数组的索引没有增加,所有值都存储在[0]
索引中并破坏了先前的值。
尝试了所有其他方法,但未找到任何东西。
我尝试了prime[x++]
和prime[x+1]
,但是它们都不适合我。如果有人给我解决方案,那么我将非常感谢您。
#include<iostream>
using namespace std;
int main()
{
int num = 20, prime[20], x;
for (int i = 1; i <= num; i++) {
if (i % 2 != 0) {
prime[x] = i;
}
}
for (int k = 1; k <= num; k++) {
cout << prime[x] << "\t";
}
}
答案 0 :(得分:1)
您有变量x
尚未初始化,并且在行中使用它
prime[x] = i;
假设它已经初始化。这会在程序中调用undefind behavior,并且无法预测结果。用适当的编号对其进行初始化,以使程序具有已定义的行为。
关于prime numbers,请参见以下SO帖子:Printing prime numbers from 1 through 100。
答案 1 :(得分:0)
将
x
定义为未初始化是一种未定义的行为。
将x
初始化为0
(int x = 0;
)
尝试以下方法:
int x = 0;
for(int i=1; i<=num; i++){
if(i%2!=0){
prime[x] = i;
x++;
}
}
现在您有prime
个数组元素:
现在打印prime
数组:
for(int k=0; k<x; k++){
cout << prime[k] << "\t";
}
输出(似乎您的代码检测到奇数):
1 3 5 7 9 11 13 15 17 19