二维阵列问题的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,等等)进行设置。