如何使用int类型的用户输入定义数组中的元素数量?

时间:2014-05-13 21:59:23

标签: c arrays

我是初学者。我正在尝试解决一对配对计划。程序要求添加的对数和实际对,然后返回每对的总和。我正在使用一个数组来存储每对的总和,但是当我打印出每个元素时,最后一个元素总是错误的。这就是我到目前为止所做的:

int c, val1, val2, x, i;

printf("Enter the number of pairs to sum: \n");
scanf("%d", &c);
int sum [c];
printf("Enter the pairs: \n");
for ( x = 0; x < (c - 1); ++x)
{
    scanf("%d", &val1); 
    scanf("%d", &val2);
    sum [x] = val1 + val2;
    val1 = 0;
    val2 = 0;
}

printf("The sum of each pair is: \n");
for (i = 0; i < c; ++i)
{
     printf("%d\t", sum[i]);
}

1 个答案:

答案 0 :(得分:1)

更改此

for ( x = 0; x < (c - 1); ++x)

到此:

for ( x = 0; x < c; ++x)

您要等到(c-1),然后打印c次。

所以,在修复之后,你的循环将是这样的:

printf("Enter the pairs: \n");
for ( x = 0; x < (c - 1); ++x)
{
    scanf("%d %d\n", &val1, &val2 );
    sum [x] = val1 + val2;
    val1 = 0;        // Do you really need me?
    val2 = 0;        // and me?
}

您不需要在每个循环结束时取消val1val2

第一次进入循环时想一想。这些变量未初始化,但它们由scanf()初始化。

让我们说用户输入0和1,所以你的变量分别得到这些值。

然后,将它们设置为零。

然后,你再次进入循环内部,并为变量分配用户的输入。

等等......

如果您放弃此步骤,请考虑这是如何工作的:

Then, you set them to zero.

会是一样的!

唯一的区别是当你退出循环时,这些变量将包含用户为循环的最后一次运行输入的内容而不是零值,但我认为这不是问题。 :)