数组索引的值不增加

时间:2018-11-04 10:48:14

标签: c++ arrays algorithm indexing

如果条件发生,此处存储在数组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";
    }
}

2 个答案:

答案 0 :(得分:1)

您有变量x 尚未初始化,并且在行中使用它

prime[x] = i;

假设它已经初始化。这会在程序中调用undefind behavior,并且无法预测结果。用适当的编号对其进行初始化,以使程序具有已定义的行为。

关于prime numbers,请参见以下SO帖子:Printing prime numbers from 1 through 100

答案 1 :(得分:0)

  

x定义为未初始化是一种未定义的行为。

x初始化为0int 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   
  

Test the code online