C,多维数组练习

我对二维数组的理解是错误的。 所以我会以另一种方式处理这个问题。 说我有以下变量。

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[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]; } } } 

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

你可以这样做

 typedef struct { int student_id; int course_id[2]; } Student Student Students[10]; 

然后使用student_id和他正在参加的课程初始化数组