繁体   English   中英

数组如何在“for”循环中工作(C语言)

[英]How do Arrays work in the “for” loop (C language)

我在c编程和编程方面相对较新。

1)我正在尝试创建一个名为“input”的数组,该数组将用于用户输入(并且该数组将只使用两个整数元素)。

2)我想使用for循环,所以它遍历我的代码2次,所以我可以复制printf语句“输入一个整数”,而不是多次键入printf语句。 然后我的scanf占位符将基于我的数组“输入”。

3)然后我想将这两个数字加在一起作为总和。

问题:当用户输入一个数字,例如1,然后再输入1时,输入[0]的索引为1,但输入[1]的索引为1 ...

我将使用加法尝试解释。 当我尝试输出数字时(整数[0]为1,整数[1]为2而我的变量将它们加在一起是“总数”)我得到: 1 + 2 = 2。

那么为什么输入[0]是正确的,但输入[1]似乎是将两个用户输入加在一起并存储在那里?

这是我的代码

int main()
{
    int input[1];
    for(int i = 0; i < 2; i++)
    {
        printf("Please enter an integer: ");

        scanf("%d", &input[i]);

    }
    int total = input[0]+input[1];
    printf("%d + %d = %d ", input[0], input[1], total);


}

在此先感谢,我希望你理解我。 对不起,我是一个菜鸟,学习基础知识,所以我可以成为高级。

这条线

int输入[1];

将仅创建一个大小为1的数组。 我可以看到你也试图访问数组的第二个元素。

所以只需用这个替换你的这一行

int输入[2];

这将解决您的问题。 或者说这整件事

int main()
{
    int input[2];
    for(int i = 0; i < 2; i++)
    {
        printf("Please enter an integer: ");

        scanf("%d", &input[i]);

    }
    int total = input[0]+input[1];
    printf("%d + %d = %d ", input[0], input[1], total);


}

你应该用

int input[2];

因为你想要一个包含两个整数的数组。 否则,它将为您分配一个整数数组,在这种情况下访问输入[1]将无法正常工作。

也可以尝试将其扩展为添加n个整数。

int main()
{
int input[1];
int total = 0;
int n; //To count number of elements to add:
  printf("Please enter the number of elements to add: ");

    scanf("%d", &n);

for(int i = 0; i < n; i++)
{
    printf("Please enter integer %d: ",(i+1));

    scanf("%d", &input[i]);

}

for(int i = 0; i < n; i++)
{
    total = total +input[i];

}

printf("The sum is = ", total);


}

所以在你的数组中,正如我所使用的循环所示,你将通过利用它在每次迭代中递增的索引来访问每次迭代中的输入数组的单个元素。

在您的情况下,只有两个元素,因此它只需要两次迭代。

像这样使用

int main()
{
    int input[2];  //initializes array of size 2,which can contain maximun 3-->(0,1,2)
    for(int i = 0; i < 2; i++)
    {
        printf("Please enter an integer: ");

        scanf("%d", &input[i]);

    }
    int total = input[0]+input[1];
    printf("%d + %d = %d ", input[0], input[1], total);


}

使用i<=2

int main()
{
    int input[1];  //initializes array of size 1 which can contain -->(0,1),or use i<=2
    for(int i = 0; i <= 2; i++)
    {
        printf("Please enter an integer: ");

        scanf("%d", &input[i]);

    }
    int total = input[0]+input[1];
    printf("%d + %d = %d ", input[0], input[1], total);


}

暂无
暂无

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

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