【问题标题】:How do Arrays work in the "for" loop (C language)数组如何在“for”循环中工作(C 语言)
【发布时间】:2014-02-09 05:23:49
【问题描述】:

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

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

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

3) 然后我想将这两个数字相加得到总和。

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

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

那么为什么 input[0] 是正确的,但 input[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);


}

在此先感谢您,希望您能理解我。对不起,我是菜鸟,学习基础知识,这样我才能变得更高级。

【问题讨论】:

  • 非常感谢你们!!!感谢您的帮助和解释哈哈。我觉得自己很愚蠢。
  • 请接受答案(您认为有帮助的那个):)。每个人在某个时间点都是初学者,所以冷静:)

标签: c arrays loops


【解决方案1】:

你应该使用

int input[2];

因为你想要一个由两个整数组成的数组。否则,它只会为您分配一个整数数组,在这种情况下访问 input[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);


}

因此,在您的数组中,如我使用的循环所示,您将在每次迭代中访问 input 数组的 single 元素,方法是使用它的 index 你也在每次迭代中递增。

在你的例子中,只有 两个 元素,所以它只需要两次迭代。

【讨论】:

    【解决方案2】:

    这样使用

    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&lt;=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);
    
    
    }
    

    【讨论】:

      【解决方案3】:

      这一行

      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);
      
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-14
        • 1970-01-01
        • 1970-01-01
        • 2017-06-08
        • 1970-01-01
        • 1970-01-01
        • 2021-03-06
        • 1970-01-01
        相关资源
        最近更新 更多