我对二维数组的理解是错误的。所以我会用另一种方式来解决这个问题。假设我有以下变量。
int student_id[10], course_id[5];
int student_course[10][2];
只能有 10 个学生。只能有 5 门类(class)。一个学生只能选修 2 门类(class)。
/*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[value_of_student_id][value_of_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);
/*prompt user for course id*/
printf("Enter Course ID: ");
scanf("%d", &course_id);
for(k=0; k<2; k++){
student_course[i][j]=student_course[i][k];
}
}
}
如果这是错误的方法,那么获得我想要的结果的正确方法是什么?也许是一个 3 维数组?我可能还没有准备好。
最佳答案
你也可以这样做
typedef struct
{
int student_id;
int course_id[2];
} Student
Student Students[10];
然后用 student_id 和他参加的类(class)初始化数组
关于C、多维数组练习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22033207/