我一直在找,但没有任何帮助。我删除了代码中的空格,但是当我打印数组时,值是错误的。
#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;
}
发生了什么事?
答案 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())