刘老师要处理一张学生成绩表。他想处理每个学生的各种信息:学号、姓名、班级、平时成绩、期末成绩、总成绩。其中一些信息(如,姓名、班级)可以存储在字符数组中,其他信息需各需要一个int类型的数组。用6个不同类型的数组分别存储每一项信息的做法比较繁琐。尤其是刘老师还想在处理过程中得到多份不同的信息表:按学号排列、按班级排序、按期末成绩排序、按总成绩排序等。如果能把所有学生的信息都包含在一个数组(数组的每个元素是一名学生的各项信息)里处理起来会更方便。 总成绩=期末成绩*0.6+平时成绩(四舍五入取整数)。 编写程序,定义一个结构体类型,然后再定义一个结构体数组,读入3名学生的各项信息,然后输出这3名学生的信息。 一部分代码已给出,你只需要完成主函数中的代码即可。 输入说明: 输入3名学生的学号、姓名、班级、平时成绩、期末成绩。 输出说明: 输出共3行信息,每一行上,输出一名学生的学号、姓名、班级、平时成绩、期末成绩、总成绩信息,然后换行。 Sample Input 1001 Wangwen Jisuanji3 30 72 1002 Zhangfeng Jisuanji4 36 85 1003 Liming Jisuanji2 32 80 Sample Output 1001 Wangwen Jisuanji3 30 72 73 1002 Zhangfeng Jisuanji4 36 85 87 1003 Liming Jisuanji2 32 80 80 运行结果 程序运行错误
时间: 2024-03-10 08:43:41 浏览: 74
以下是完整的程序代码,你可以参考一下。
```cpp
#include <stdio.h>
#include <string.h>
#include <math.h>
struct student {
int id;
char name[20];
char class[20];
int score1;
int score2;
int sum;
};
int main() {
struct student s[3];
int i;
for (i = 0; i < 3; i++) {
scanf("%d%s%s%d%d", &s[i].id, s[i].name, s[i].class, &s[i].score1, &s[i].score2);
s[i].sum = round(s[i].score1 + s[i].score2 * 0.6);
}
for (i = 0; i < 3; i++) {
printf("%d %s %s %d %d %d\n", s[i].id, s[i].name, s[i].class, s[i].score1, s[i].score2, s[i].sum);
}
return 0;
}
```
这段代码定义了一个名为`student`的结构体类型,其中包含了学生的各项信息。然后定义了一个长度为3的结构体数组`s`,用于存储3名学生的信息。接着在循环中读入每个学生的信息,并计算出他们的总成绩。最后再循环中输出每个学生的信息,包括总成绩。
注意,这里使用了`round()`函数来进行四舍五入,需要包含`math.h`头文件。
阅读全文