1.定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩 2.从键盘输入10个学生的以上内容 3.输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩 4.输出三门课程的平均分数最高的学生的学号、姓名及其平均分 5.将10个学生按照平均分数从高到低进行排序,输出结果,格式如下所示: number name math Chinese English average 103 tom 90 90 100 95 101 alice 90 80 70 80 6.在实习报告中画出程序流程图,说明程序设计的算法,附主要程序段及运行结果(屏幕截图)。 7.在实习报告中说明知识点。 8.在实习报告中说明程序设计过程中的难点、解决办法及编程小结或体会。
时间: 2024-02-14 16:06:47 浏览: 84
好的,以下是以C语言为例的程序代码和注释:
```c
#include <stdio.h>
#include <string.h>
// 定义学生结构体
struct Student {
char id[10];
char name[20];
int math;
int chinese;
int english;
float average;
};
int main() {
struct Student stu[10];
int i, j;
// 从键盘输入学生信息
printf("请输入10个学生的信息:\n");
for(i = 0; i < 10; i++) {
printf("请输入第%d个学生的学号、姓名、数学成绩、语文成绩、英语成绩:\n", i+1);
scanf("%s %s %d %d %d", stu[i].id, stu[i].name, &stu[i].math, &stu[i].chinese, &stu[i].english);
stu[i].average = (stu[i].math + stu[i].chinese + stu[i].english) / 3;
}
// 输出单门课成绩最高的学生的信息
int max_math = 0;
int max_chinese = 0;
int max_english = 0;
int index_math = 0;
int index_chinese = 0;
int index_english = 0;
for(i = 0; i < 10; i++) {
if(stu[i].math > max_math) {
max_math = stu[i].math;
index_math = i;
}
if(stu[i].chinese > max_chinese) {
max_chinese = stu[i].chinese;
index_chinese = i;
}
if(stu[i].english > max_english) {
max_english = stu[i].english;
index_english = i;
}
}
printf("数学成绩最高的学生为:%s %s %d\n", stu[index_math].id, stu[index_math].name, stu[index_math].math);
printf("语文成绩最高的学生为:%s %s %d\n", stu[index_chinese].id, stu[index_chinese].name, stu[index_chinese].chinese);
printf("英语成绩最高的学生为:%s %s %d\n", stu[index_english].id, stu[index_english].name, stu[index_english].english);
// 输出三门课程的平均分数最高的学生的信息
float max_average = 0;
int index_average = 0;
for(i = 0; i < 10; i++) {
if(stu[i].average > max_average) {
max_average = stu[i].average;
index_average = i;
}
}
printf("三门课程的平均分数最高的学生为:%s %s %.2f\n", stu[index_average].id, stu[index_average].name, stu[index_average].average);
// 将学生按照平均分数从高到低进行排序
struct Student temp;
for(i = 0; i < 9; i++) {
for(j = 0; j < 9-i; j++) {
if(stu[j].average < stu[j+1].average) {
temp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = temp;
}
}
}
// 输出排序后的学生信息
printf("按照平均分数从高到低排序后的学生信息为:\n");
printf("%-10s%-20s%-10s%-10s%-10s%-10s\n", "number", "name", "math", "Chinese", "English", "average");
for(i = 0; i < 10; i++) {
printf("%-10s%-20s%-10d%-10d%-10d%-10.2f\n", stu[i].id, stu[i].name, stu[i].math, stu[i].chinese, stu[i].english, stu[i].average);
}
return 0;
}
```
这段代码主要实现了以下几个功能:
1. 定义学生结构体,存储学生信息;
2. 从键盘输入学生信息,并计算出每个学生的平均分数;
3. 输出单门课成绩最高的学生的学号、姓名、以及该门课程的成绩;
4. 输出三门课程的平均分数最高的学生的学号、姓名及其平均分;
5. 将10个学生按照平均分数从高到低进行排序,并输出结果。
其中,涉及到的知识点主要有:
1. 结构体的定义和使用;
2. 数组的定义和使用;
3. 循环和条件语句的使用;
4. 字符串的定义和使用;
5. 库函数的使用(如`scanf`、`printf`等)。
在编写程序时,难点主要在于如何使用结构体存储学生信息和如何进行排序。解决办法是对结构体的使用要有深刻理解,多进行实践和练习。编程小结或体会是,通过这个程序的编写,深入理解了结构体的使用和排序算法的实现,以及对数组的处理和库函数的使用。
阅读全文