小钱爱学习 2023-04-16 01:14 采纳率: 50%
浏览 24

C语言结构体问题求解

C语言结构体问题求解!
定义描述学生信息(学号、姓名、性别、出生日期、4门课程成绩和平均分)的结构体类型。 

struct date{ 
        int month;
        int day;
        int year;
};
struct stu{
        int num;
        char name[20];
        char sex;
        struct date birthday;
        float score[4];
         float ave;
 };

1)定义输入单个学生信息的函数Input(struct stu *a) ;
2)定义输出单个学生信息的函数Output(struct stu a) ;
3)定义输入一批学生信息的函数Inputarray(struct stu a[ ],int n);
4)定义输出一批学生信息的函数Outputarray(struct stu a[ ],int n));
编程建立的结构体数组通过输入输入存放全班(最多50人)学生信息,输出平均分最高的学生的学号、姓名、性别、出生日期、4门课程成绩和平均分信息。

  • 写回答

2条回答 默认 最新

  • 夜枭龙 2023-04-16 01:40
    关注
    
    #include <stdio.h>
    #include <string.h>
    
    #define MAX_STUDENTS 50
    #define MAX_NAME_LENGTH 20
    
    struct student {
        char id[10];
        char name[MAX_NAME_LENGTH];
        char sex[5];
        char birthdate[20];
        float scores[4];
        float avg_score;
    };
    
    void input(struct student *a) {
        printf("请输入学生的信息:\n");
        printf("学号:");
        scanf("%s", a->id);
        printf("姓名:");
        scanf("%s", a->name);
        printf("性别:");
        scanf("%s", a->sex);
        printf("出生日期:");
        scanf("%s", a->birthdate);
        printf("四门课程成绩:");
        for (int i = 0; i < 4; i++) {
            scanf("%f", &(a->scores[i]));
        }
        a->avg_score = (a->scores[0] + a->scores[1] + a->scores[2] + a->scores[3]) / 4;
    }
    
    void output(struct student a) {
        printf("学号:%s,姓名:%s,性别:%s,出生日期:%s,四门课程成绩:%.2f, %.2f, %.2f, %.2f,平均分:%.2f\n", 
            a.id, a.name, a.sex, a.birthdate, a.scores[0], a.scores[1], a.scores[2], a.scores[3], a.avg_score);
    }
    
    void input_array(struct student a[], int n) {
        for (int i = 0; i < n; i++) {
            input(&(a[i]));
        }
    }
    
    void output_array(struct student a[], int n) {
        for (int i = 0; i < n; i++) {
            output(a[i]);
        }
    }
    
    int main() {
        int n;
        printf("请输入学生人数:");
        scanf("%d", &n);
        struct student students[MAX_STUDENTS];
        input_array(students, n);
        float max_avg_score = 0;
        int max_index = 0;
        for (int i = 0; i < n; i++) {
            if (students[i].avg_score > max_avg_score) {
                max_avg_score = students[i].avg_score;
                max_index = i;
            }
        }
        printf("平均分最高的学生信息如下:\n");
        output(students[max_index]);
        return 0;
    }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 4月16日

悬赏问题

  • ¥15 博图v15项目添加设备里没有plc,如何解决?
  • ¥15 烝救者笔记本然后刷thinkbook笔记本的bios
  • ¥15 同心圆环圆心的高精度测量
  • ¥15 vs2010修改时间编辑控件
  • ¥15 郑州牧原测试岗值得去吗
  • ¥100 复现论文:matlab仿真代码编写
  • ¥15 esp32驱动GC9A01循环播放视频
  • ¥15 惠普360g9的最新bios
  • ¥30 这个功能用什么软件发合适?
  • ¥60 微信小程序,取消订单,偶尔订单没有改变状态