C - 打印数组中的值错误

时间:2014-10-13 15:46:24

标签: c arrays

我一直在找,但没有任何帮助。我删除了代码中的空格,但是当我打印数组时,值是错误的。

#include<stdio.h>

main() {
    int n, i = 0, j;
    printf("Set number of elements in array: ");
    scanf("%d", &n);

    int tab[n];
    printf("Number of elements: %d\n", n);
    printf("Set values for each element: \n");

    while (i < n) {
        printf("Tab[%d] = ", i + 1);
        scanf("%d", &tab[n]);
        i++;
    }

    printf("There is your array: \n");
    for (j = 0; j < n; j++) {
        printf("%d\t\t", tab[0]);
    }
    return 0;
}

enter image description here

发生了什么事?

5 个答案:

答案 0 :(得分:3)

scanf内的while应包含i而不是n

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

printf内的for应包含j而不是0

printf("%d\t\t", tab[j]);

答案 1 :(得分:2)

1)您一直在扫描tab[n]而不是tab[i]

2)您始终打印tab[0]而不是tab[j]

答案 2 :(得分:0)

您可以在数组中添加第n个项目。但是你应该把它插入第i个元素

while(i<n) {
        printf("Tab[%d] = ", i+1);
        scanf("%d", &tab[i]);
        i++;
    }

您还可以从第0位打印项目。相反,你应该打印第j个元素。

printf("There is your array: \n");
    for(j=0; j<n; j++) {
        printf("%d\t\t", tab[j]);
    }

答案 3 :(得分:0)

您反复阅读tab[n]

scanf("%d", &tab[n]);

在您的示例中,n == 3 所以你反复阅读tab[3] 但您希望所有数据都在tab[0]tab[1]tab[2]

答案 4 :(得分:-1)

这将在C#

中以逗号分隔值的形式将所有数组值打印为字符串
string.Join(", ", myArray.Select(v => v.ToString())
相关问题