繁体   English   中英

为什么循环这个数组时我的代码不能正常工作

[英]Why isn't my code working properly when looping this array

如果我有数组 N[12] 并且我有代码:

float N[12];
for (int X = 1; X < 12; X++) {
    N[X] = N[X] + 2;
    cout << N[X] << endl;
}

我还需要什么才能让它显示从 1 开始的奇数并增加直到我有 12? (所以直到23)

它输出了一系列非常奇怪的数字我对 c++ 很陌生,我知道这是一个愚蠢的问题,对不起......

您的数组未初始化为任何值,因此根据编译器的执行方式,它很可能会填充随机值。 这可以解释为什么你会看到奇怪的数字。

由于您想从初始值 1 开始,您可以像这样初始化数组:

float N[12] = { 1 }; 

这会将数组的第一个元素设置为1并且元素的 rest 将设置为0 但是另一个人是对的,因为您想将 2 添加到数组中的前一个元素。 所以它会将代码变成这样:

float N[12] = { 1 }
int X;

for(X=1; X<12; X++){
  N[X]= N[X-1] + 2;
  cout << N[X] << endl;
}

您的代码中有几个问题,如下所述。

主要问题:您的数组未初始化。 所以当你执行 N[x] = N[x] + 2 时,它是没有意义的,因为 N[x] 没有任何值。

小问题:不需要将数组声明为浮点数,因为我们将存储 integer 值。

下面是代码。

#include <iostream>

using namespace std;

int main()
{
    int N[12];

    for(int x = 0; x < 12; x++)
    {
        N[x] = (2 * x) + 1;
        cout << N[X] << endl;
    }

    return 0;
}

我认为您的意思是向前一个元素添加两个,而不是当前元素,因为当前元素未初始化。 此外,由于奇数是整数,因此不需要浮点数。

int n[12];
n[0] = 1; // start off with the first odd
for (int x = 0; x < 12; x ++) {
    // we already have a value for n[0] so we shouldn't overwrite it
    if (x != 0) {
        // n[x - 1] gets the previous value
        n[x] = n[x - 1] + 2;
    }
    std::cout << n[x] << std::endl;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM