检查并修改c语言程序:学生结构体定义如下: struct Student{ int sid; int C; int English; }; 其中sid是学号,C是C语言课程成绩,English是英语课程成绩。学生的成绩按照这样的规则比较: 先比较两门课的总成绩,总成绩高的为优; 若总成绩相同,再比较C语言成绩,C语言成绩高的为优; 若C语言成绩也相同,则说明两名学生成绩相等。 编写函数实现成绩的比较。 函数接口定义: int compareScore(const struct Student *s1, const struct Student s2); 其中s1和s2是传入的参数,分别指向两名学生的结构体变量。函数返回值为int型, 若s1所指学生成绩优于s2所指学生,返回1; 若s2所指学生成绩优于s1所指学生,返回-1; 若两学生成绩相等,返回0。 裁判测试程序样例: / 此测试程序仅为示例,实际的测试程序可能不同。 注意:实际的测试程序可能有多组输入、进行多次比较,输入格式也有可能不同, 因此不要针对测试程序样例编写代码,而应当编写符合题目要求的函数 */ #include <stdio.h> struct Student{ int sid; int C; int English; }; int compareScore(const struct Student *s1, const struct Student s2); int main(){ struct Student zs, ls; scanf("%d%d%d", &zs.sid, &zs.C, &zs.English); scanf("%d%d%d", &ls.sid, &ls.C, &ls.English); int r; r = compareScore(&zs, &ls); if(r < 0) printf("Less\n"); else if(r > 0) printf("Greater\n"); else printf("Equal\n"); return 0; } / 你所编写的函数代码将被嵌在这里 */ 输入样例1: 对于样例测试程序的输入格式: 1 95 90 2 90 91 输出样例1: 对于样例测试程序的输出格式: Greater 输入样例2: 对于样例测试程序的输入格式: 1 90 95 2 95 90 输出样例2: 对于样例测试程序的输出格式: Less。int compareScore(const struct Student *s1, const struct Student *s2) { int i,sum[2]; sum[0]=s1->C+s1->English; sum[1]=s2->C+s2->English; if(sum[0]>sum[1]) return 1; if (s1->C > s2->C) return 1; else return 0; else return -1; }
时间: 2024-03-25 20:37:04 浏览: 90
修改后的程序如下,其中加入了注释以便理解:
```c
#include <stdio.h>
struct Student {
int sid;
int C;
int English;
};
int compareScore(const struct Student *s1, const struct Student *s2) { // 注意:s2也要加指针符号
int sum1 = s1->C + s1->English; // 计算s1的总分
int sum2 = s2->C + s2->English; // 计算s2的总分
if (sum1 > sum2) { // 如果s1总分高于s2
return 1; // 返回1
} else if (sum1 < sum2) { // 如果s1总分低于s2
return -1; // 返回-1
} else { // 如果s1总分与s2总分相等
if (s1->C > s2->C) { // 比较C语言成绩
return 1; // 如果s1的C语言成绩高于s2,返回1
} else if (s1->C < s2->C) { // 如果s1的C语言成绩低于s2
return -1; // 返回-1
} else { // 如果s1的C语言成绩与s2的C语言成绩相等
return 0; // 返回0
}
}
}
int main() {
struct Student zs, ls;
scanf("%d%d%d", &zs.sid, &zs.C, &zs.English);
scanf("%d%d%d", &ls.sid, &ls.C, &ls.English);
int r = compareScore(&zs, &ls);
if (r < 0) {
printf("Less\n");
} else if (r > 0) {
printf("Greater\n");
} else {
printf("Equal\n");
}
return 0;
}
```
阅读全文