首页 > 编程知识 正文

数据结构实例c语言版习题集答案,数据结构期末考试题及答案2021

时间:2023-05-04 22:03:47 阅读:236036 作者:2731

6-3 修改学生成绩 (15 分)

输入n(n<50)个学生的成绩信息,再输入一个学生的学号、课程以及成绩,在自定义函数update_score()中修改该学生指定课程的成绩。

函数接口定义: int update_score(struct student *p, int n, int num, int course, int score);

其中p是结构指针,n是学生个数,course是课程序号,score是修改后的课程成绩。函数须返回指定学生的顺序位置,如果查无此人,返回-1。

裁判测试程序样例: #include <stdio.h>struct student{ /*学生信息结构定义*/ int num; /* 学号 */ char name[10]; /* 姓名 */ int math, english, computer; /* 三门课程成绩 */}; int update_score(struct student *p, int n, int num, int course, int score); /*函数声明*/int main(void){ int i, pos, n, num, course, score; struct student students[50]; /* 定义结构数组 */ scanf("%d", &n); for(i = 0; i < n; i++){ scanf("%d", &students[i].num); scanf("%s", students[i].name); scanf("%d", &students[i].math); scanf("%d", &students[i].english); scanf("%d", &students[i].computer); } /* 输入待修改学生信息 */ scanf("%d", &num); scanf("%d", &course); scanf("%d", &score); /*调用函数,修改学生成绩*/ pos = update_score(students, n, num, course, score); /*输出修改后的学生信息*/ if(pos == -1) printf("Not found!n"); else { printf("%d,%d,%d,%dn", students[pos].num, students[pos].math, students[pos].english, students[pos].computer); } return 0;}/* 请在这里填写答案 */ 输入样例: 3101 Zhang 78 87 85102 Wang 91 88 90103 Li 75 90 84102 2 89 输出样例:

在这里给出相应的输出。例如:

102 91 89 90

 

 题目解答:

  首先,我们看最后判断语句那里,原文为:if(pos == -1)  则可知,我们在调用函数,返回的是-1 或者指定学生的顺序位置,所以我们在返回值的设定为指定学生的顺序位置 和-1。另外,函数题应该为仔细看函数的参数,并且知道每个参数的作用。(毕竟不可能空白给你玩玩) *p: 结构指针, n:学生个数(待会可以用来遍历),num是学生学号,course是课程序号,score是修改后的课程成绩。剩余实现则为:将数组遍历,若找到学生学号,判读是什么学科,改成绩,然后返回指定学生的顺序位置。

解题代码:

int update_score(struct student *p, int n, int num, int course, int score){
    int i,j=-1;
    for(i = 0;i<n;i++){
        if(p[i].num == num){
            if(course ==1){
                p[i].math = score;
                j = i;
            }
            else if(course == 2){
                p[i].english = score;
                j = i;
            }
            else if(course == 3){
                p[i].computer = score;
                j = i;
            }
            break;
        }
    }
    return j;
}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。