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

时间:2014-01-20 06:07:02

标签: c arrays loops

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

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

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

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

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

我将使用加法尝试解释。 当我尝试输出数字时(整数[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);


}

提前致谢,我希望你能理解我。对不起,我是一个菜鸟,学习基础知识,所以我可以成为高级。

3 个答案:

答案 0 :(得分:3)

这一行

  

int input [1];

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

所以只需用

替换你的这一行
  

int input [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);


}

答案 1 :(得分:1)

你应该使用

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


}

所以在你的数组中,正如我所使用的循环中所示,你将通过使用它的<在每次迭代中访问输入数组的单个元素em> index ,你也会在每次迭代中递增。

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

答案 2 :(得分:0)

像这样使用

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


}