试图为命名数组元素创建一个更好的循环

Trying to create a better loop for naming array elements

本文关键字:一个 更好 循环 创建 数组元素      更新时间:2023-10-16

我已经开始学习阵列并刚刚开始进行一些练习,但是我在使用循环命名特定数组内的元素时遇到了一些问题。

我试图制作这件代码,将数字从1到12(类似于一年的月份(分配给数组内部的INT,这就是我想到的:

#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
int array[12];
for (int i = 0; i < 12;) {
    cout << "Month number " << i + 1 << endl;
    array[i] = (i++);
}
return 0;
}

我不喜欢的事实是,我必须在空循环的内部放置增量/减小空间。我最初尝试使代码看起来像这样:

#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
int array[12];
for (int i = 0; i < 12; i++) {
    cout << "Month number " << i + 1 << endl;
    array[i] = i++;
}
return 0;
}

但是,即使阵列的第一个元素出现正确,随后的元素也没有。我认为这样做的原因是,循环的最后一句话中的i 使I递增的价值,但我找不到解决方案的方法我发布的第一个代码。

任何人都可以向我提供一只手来理解如何制作它的手,以便我可以在该特定数组元素中存储I的值,而无需将其递增,而无需将其递增(如果可能的话(?

我知道有其他方法,就像我在我发布的第一个代码中显示的那样,但这是让我困扰的事情,所以我想使它更加视觉上令人愉悦。

请记住,我只是一个初学者:)在此先感谢您的答案,并为漫长的问题提供了很抱歉。

编辑:显然,这样的编码:

#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
    int array[12];
    for (int i = 0; i < 12; i++) {
        cout << "Month number " << i + 1 << endl;
        array[i] = i + 1;
    }
    cout << array[4] << endl;
    return 0;
}

使该程序正常工作并且看起来像我想要的,但是我无法理解为什么这样做:(

编辑2:显然,正如毫无疑问指出的那样,我错过了一个事实,即 1不会修改整数的值,而 则错过了。感谢所有回答并解释 和 1如何工作的人!

再次do i 1。

for (int i = 0; i < 12; i++) 
{
    cout << "Month number " << i + 1 << endl;
    array[i] = i + 1;
}

现在很明显您实际上想从1开始并转到12,所以重复较少的情况似乎更好:

 for (int i = 1; i <= 12; i++) 
 {
     cout << "Month number " << i << endl;
     array[i-1] = i;
 }

编辑:至于您的编辑,此工作的原因是I 操作员在特定的I变量上工作。它将存在的i逐一增加,以便下次您访问i时,它将比以前多1个。

编写i 1,另一方面创建了一个全新的,临时的,可变的(实际上是常数(。所以当你写

array[i] = i+1; 

您是说您希望我保持不变,但是您想创建一个比我大的数字,然后将新数字放入数组中。

您甚至可以将其写出更长的时间以完全明确:

int newNumber = i+1;
array[i] = newNumber;
for (int i = 0; i < 12; i++) {
    cout << "Month number " << i + 1 << endl;
    array[i] = i+1;
}

没有理由在循环中递增i