【问题标题】:C, Multi-Dimensional Arrays ExerciseC、多维数组练习
【发布时间】:2014-02-26 06:09:26
【问题描述】:

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

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

    }
}

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

标签: c arrays 2d


【解决方案1】:

你可以这样做

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

Student Students[10];

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

【讨论】:

  • 我以为我理解 Claptraps 的答案,但我没有。如果我试图在屏幕上打印学生 [0] 正在学习的课程。我将如何继续并做到这一点?当我尝试仅打印 Student[0] 时出现错误。
  • @user2816227 打印学生[0]正在学习的课程,你可以写printf( "id:%d, courses:%d,%d\n", Students[0].student_id, Students[0].course_id[0], Students[0].course_id[1] );
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 2014-06-18
相关资源
最近更新 更多