| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- /*
- * 示例20:综合练习(Comprehensive)
- * 功能:综合运用前面学到的知识,实现一个简单的学生成绩管理系统
- * 包含:结构体、数组、函数、循环、条件判断、输入输出
- */
- #include <stdio.h>
- #include <string.h>
- // 定义学生结构体
- typedef struct {
- char name[20]; // 姓名
- int score; // 成绩
- } Student;
- // 函数:输入学生信息
- void inputStudents(Student students[], int n) {
- for (int i = 0; i < n; i++) {
- printf("请输入第 %d 个学生的姓名:", i + 1);
- scanf("%s", students[i].name);
- printf("请输入 %s 的成绩:", students[i].name);
- scanf("%d", &students[i].score);
- }
- }
- // 函数:显示所有学生信息
- void showStudents(Student students[], int n) {
- printf("\n=== 学生成绩列表 ===\n");
- printf("序号\t姓名\t成绩\n");
- for (int i = 0; i < n; i++) {
- printf("%d\t%s\t%d\n", i + 1, students[i].name, students[i].score);
- }
- }
- // 函数:计算平均分
- float averageScore(Student students[], int n) {
- int sum = 0;
- for (int i = 0; i < n; i++) {
- sum += students[i].score;
- }
- return (float)sum / n;
- }
- // 函数:找出最高分的学生
- void findTopStudent(Student students[], int n) {
- int maxIndex = 0;
- for (int i = 1; i < n; i++) {
- if (students[i].score > students[maxIndex].score) {
- maxIndex = i;
- }
- }
- printf("最高分学生:%s,成绩:%d\n",
- students[maxIndex].name, students[maxIndex].score);
- }
- int main() {
- int num;
- printf("请输入学生人数:");
- scanf("%d", &num);
- // 创建学生数组
- Student students[100];
- // 输入学生信息
- inputStudents(students, num);
- // 显示学生信息
- showStudents(students, num);
- // 计算并显示平均分
- float avg = averageScore(students, num);
- printf("\n平均分:%.2f\n", avg);
- // 找出最高分学生
- findTopStudent(students, num);
- return 0;
- }
|