我想要做的是只在多维数组的一个维度上读取/存储数据,如下所示:
#include <stdio.h>
int main(void){
int array [5] [10];
int i;
for (i = 0; i < 5; i++) {
printf("Reading %d number in the first dimension.\n", i+1);
scanf("%d", &array [i]);/*Trying to store data just on 1st dimension */
}
printf("\n");
for (i = 0; i < 5; i++){
printf("%d\n", array [i]); /*Trying to print the data read*/
}
return 0;
}
原来,该程序无意中输出了乱码数据:
2673556
2673576
2673656
2673566
2673756
如何正确访问该单一维度?
答案 0 :(得分:3)
我认为你的意思是以下
#include <stdio.h>
#define M 3
#define N 10
int main(void){
int array [M] [N];
int i, j;
i = 0;
for ( ; i < N; i++) {
printf("Reading %d number in the first dimension.\n", i+1);
if ( scanf("%d", &array [0][i]) != 1 ) break;
}
printf("\n");
for ( j = 0; j < i; j++){
printf("%d\n", array[0][j]); /*Tring to print the data read*/
}
return 0;
}
或以下
#include <stdio.h>
#define M 3
#define N 10
int main(void){
int array [M] [N];
int i, j;
i = 0;
for ( ; i < M; i++) {
printf("Reading %d number in the first dimension.\n", i+1);
if ( scanf("%d", &array [i][0]) != 1 ) break;
}
printf("\n");
for ( j = 0; j < i; j++){
printf("%d\n", array[j][0]); /*Tring to print the data read*/
}
return 0;
}
第一个程序填充数组的第一行,而第二个程序填充数组的第一列。
答案 1 :(得分:2)
2D阵列由多个1D阵列构成。
如果它是一维数组,则访问其元素a[i]
(i
元素),i
是数组的索引。
现在看到2D数组,每个元素都被访问为a[i][j]
。
其中i
表示行的索引(表示逐行选择1D数组),然后j
表示该1D数组的索引(就像您以前在1D数组中所做的那样)。 / p>
答案 2 :(得分:2)
要访问单个数组的多维数组,您必须在代码中修复一行。您的代码中的错误是您将多维数组视为单个数组,而我们需要将其修改为单个数组
for(i=0;i<10;i++)
scanf("%d",&array[0][i]);
这里array[0][i]
将生成一个固定在第0行的数组,迭代我将继续,因为10你将给出输入。
类似于固定的列,您需要array[j][0]
,并且最终将填充行直到5。
如果你想要同时填充两个,那么你必须应用两个循环
for(i=0;i<5;i++)
for (j=0;j<10;j++)
scanf("%d",array[i][j]);
现在这个循环首先进入第0行,并在输入时填充列,直到第10行,依此类推。
答案 3 :(得分:1)
array[dimension][item]
是访问单行维度上的项目的方法。您需要两个循环:一个用于遍历行维度,另一个用于每个行维度的项目(列维度)。
假设您填写了10个项目中的所有5行:
for (dimension = 0; dimension < 5; dimension++)
for (item = 0; item < 10; item++)
printf("%d\n", array [dimension][item]);
但是由于你只填充了第一行,所以你不需要另一个循环。
for (item = 0; item < 10; item++)
printf("%d\n", array [0][item]);
要将商品放在第一行维度上,您需要将scanf("%d", &array [i]);
更改为scanf("%d", &array [0][i]);
0
是第一行维度的索引号,i
将用作每个项目的索引。
编辑代码:
#include <stdio.h>
int main(void){
int array [5] [10];
int i;
for (i = 0; i < 10; i++) {
printf("Reading %d number in the first dimension.\n", i+1);
scanf("%d", &array [0][i]);
}
printf("\n");
int item;
// printing the first row dimension
for (item = 0; item < 10; item++)
printf("%d\n", array [0][item]);
return 0;
}