设有5个学生的相关数据,每个学生的数据为一个结构体,包括学号、姓名、两门功课的成绩及平均成绩。编写一个程序,要求输入每个学生的所有数据,并计算各个学生的平均成绩,然后依次输出各个学生的数据(学号、姓名、各门课程成绩及平均成绩)。要求学号为整型、姓名为长度为8的字符数组、成绩为浮点数从键盘输入5 个学生数据,要求:定义学生结构体.分别编写子函数实现学生数据的输入、计算等功能,结果在主函数中输出。
2条回答 默认 最新
- Taylor 淡定哥 2023-03-01 19:21关注
定义了一个名为 Student 的结构体,包含学号、姓名、两门课程的成绩及平均成绩。程序中使用了两个子函数,分别用于输入学生数据和计算学生平均成绩。最后,程序在主函数中依次输出了每个学生的数据。
#include <stdio.h> #include <string.h> // 定义学生结构体 typedef struct { int id; char name[8]; float score1; float score2; float average; } Student; // 函数:输入学生数据 void inputStudentData(Student *student) { printf("请输入学号:"); scanf("%d", &student->id); printf("请输入姓名:"); scanf("%s", student->name); printf("请输入第一门课程成绩:"); scanf("%f", &student->score1); printf("请输入第二门课程成绩:"); scanf("%f", &student->score2); student->average = (student->score1 + student->score2) / 2; } // 函数:计算学生平均成绩 void calculateStudentAverage(Student *student) { student->average = (student->score1 + student->score2) / 2; } int main() { Student students[5]; // 输入每个学生的数据并计算平均成绩 for (int i = 0; i < 5; i++) { printf("请输入第 %d 个学生的数据:\n", i + 1); inputStudentData(&students[i]); calculateStudentAverage(&students[i]); } // 输出每个学生的数据 for (int i = 0; i < 5; i++) { printf("学号:%d, 姓名:%s, 成绩1:%.2f, 成绩2:%.2f, 平均成绩:%.2f\n", students[i].id, students[i].name, students[i].score1, students[i].score2, students[i].average); } return 0; }
在上面的程序中,定义了一个名为 Student 的结构体,包含了学号、姓名、两门课程的成绩及平均成绩。在 inputStudentData 函数中,使用 scanf 函数从键盘输入学生数据。在 calculateStudentAverage 函数中,根据学生的两门课程成绩计算出平均成绩。
在主函数中,定义了一个长度为 5 的 Student 数组,用于存储 5 个学生的数据。然后,使用 for 循环依次输入每个学生的数据并计算平均成绩。最后,再使用 for 循环依次输出每个学生的数据。其中,使用了 %d、%s、%.2f 等格式化输出控制符,用于将学生的数据输出为指定的格式。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用