在我开始学习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=0
和j=0
打印z [x] [y]时;如印刷品10,10。
任何帮助都将不胜感激。
答案 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];
}
}
}
如果这是错误的方式,获得我想要的结果的正确方法是什么?也许是一个三维数组?我可能还没准备好。