C编程2D阵列问题

时间:2014-02-25 03:44:15

标签: c arrays multidimensional-array 2d

在我开始学习C ++之前,我正在学习C,所以我对编程很陌生。我正在玩2D阵列,我有点理解它。但是我似乎无法弄清楚如何做到这一点:

int x, 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=0j=0打印z [x] [y]时;如印刷品10,10。

任何帮助都将不胜感激。

5 个答案:

答案 0 :(得分:1)

您将z [i] [j]设置为等于z [x] [y]。 X和Y分别为10和10,它们位于数组的边界之外,因此将失败

答案 1 :(得分:0)

这里z[i][j]只是一个值,所以它只打印10个,你必须像这样分配:

for (i=0; i<4; i++)
{
   for(j=0;j<4;j++)
   {
     z[i][j]=x;
   }
}

答案 2 :(得分:0)

通过执行z[4][4],您将z声明为4x4矩阵。

当您尝试使用z[x][[y]; eg z[10][10];时,您显然正在访问超出矩阵范围的元素。

答案 3 :(得分:0)

#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;
}

答案 4 :(得分:0)

我对2d数组的理解绝对是错误的。所以我会以另一种方式处理这个问题。假设我有以下变量。

int student_id [10],course_id [5];

int student_course [10] [2];

只能有10名学生。 只能有5门课程。 学生只能参加2门课程。

/*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
*/

我要打印的是student_course [student_id的值] [course_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];
        }

    }
}

如果这是错误的方式,获得我想要的结果的正确方法是什么?也许是一个三维数组?我可能还没准备好。