c语言编程问题求解代码

设有5个学生的相关数据,每个学生的数据为一个结构体,包括学号、姓名、两门功课的成绩及平均成绩。编写一个程序,要求输入每个学生的所有数据,并计算各个学生的平均成绩,然后依次输出各个学生的数据(学号、姓名、各门课程成绩及平均成绩)。要求学号为整型、姓名为长度为8的字符数组、成绩为浮点数从键盘输入5 个学生数据,要求:定义学生结构体.分别编写子函数实现学生数据的输入、计算等功能,结果在主函数中输出。

定义了一个名为 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 等格式化输出控制符,用于将学生的数据输出为指定的格式。

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7455132
  • 你还可以看下c语言参考手册中的 c语言-exp()
  • 除此之外, 这篇博客: C程序设计 谭浩强 第九章中的 5.有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输人10个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程成绩、平均分数)。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  •