二维阵列问题的C语言编程 我在开始学习C++之前正在学习C,所以我对编程很陌生。我在玩2D阵列,我有点理解它。然而,我似乎不知道如何做到这一点:
二维阵列问题的C语言编程 我在开始学习C++之前正在学习C,所以我对编程很陌生。我在玩2D阵列,我有点理解它。然而,我似乎不知道如何做到这一点:,c,arrays,multidimensional-array,2d,C,Arrays,Multidimensional Array,2d,intx,y,z[4][4],i,j 其中x=10,y=10 for (i=0; i<4; i++) { for(j=0;j<4;j++) { z[i][j]=z[x][[y]; } } 对于(i=0;i您正在将z[i][j]设置为等于z[x][y]。x和y分别为10和10,这超出了数组的界限,因此这将失败这里z[i][j]只是一个值,因此它只打印10,您必须这样分配: for (i=0; i<4; i++) { for(j=0;j<4;j++
intx,y,z[4][4],i,j代码>
其中x=10,y=10
for (i=0; i<4; i++)
{
for(j=0;j<4;j++)
{
z[i][j]=z[x][[y];
}
}
对于(i=0;i您正在将z[i][j]设置为等于z[x][y]。x和y分别为10和10,这超出了数组的界限,因此这将失败这里z[i][j]
只是一个值,因此它只打印10,您必须这样分配:
for (i=0; i<4; i++)
{
for(j=0;j<4;j++)
{
z[i][j]=x;
}
}
for(i=0;i通过执行z[4][4]
您将z声明为4x4
矩阵
当你试图使用z[x][[y];例如z[10][10];
时,你显然是在访问矩阵范围之外的元素
#include <stdio.h>
int main(){
int x, y, z[4][4], i, j;
int base = 65536;
for (i=0; i<4; i++){
for(j=0;j<4;j++){
int v;
x = 10 + i;
y = 10 + j;
v = x * base + y;
z[i][j] = v;
}
}
i = 0;
j = 0;
if(i == 0 && j == 0)
printf("%d, %d\n", z[i][j]/base, z[i][j] % base);
return 0;
}
int main(){
int x,y,z[4][4],i,j;
int base=65536;
对于(i=0;i我对2d数组的理解肯定是错误的。所以我将用另一种方式来处理这个问题。假设我有以下变量
int学生id[10],课程id[5]
国际学生大学课程[10][2]
只有10名学生。
只能有5门课。
一个学生只能修两门课
/*prompt user for student id*/
/*
say that the value for:
student_id[0]=123
*/
/*prompt user for course id*/
/*
say that the value for:
course_id[0]=101
course_id[1]=102
course_id[2]=103
course_id[3]=104
course_id[4]=105
*/
我要打印的是学生课程[学生id的价值][课程id的价值]
所以我想这样做:
int student_id[10], course_id[5], student_course[10][2]
int i, j, k;
for(i=0; i<10;i++){
for(j=0; j<5; j++){
/*prompt user for student id*/
printf("Enter User ID: ");
scanf("%d", &student_id[i]);
/*prompt user for course id*/
printf("Enter Course ID: ");
scanf("%d", &course_id[j]);
for(k=0; k<2; k++){
student_course[i][j]=student_course[i][k];
}
}
}
int student\u id[10],course\u id[5],student\u course[10][2]
int i,j,k;
对于(i=0;i当z[x][[y]
当x=10时,y=10
是不正确的,因为z[4][4]
即只有4x4个元素。我想您可能对多维数组有一些混淆。z[i][j]将只包含一个值,您可以使用z[i][j]=10(或x,或y,等等)进行设置。