C语言结构体练习题一则

//练习:有n个结构体变量,内含学生学号、姓名和3门课程成绩
//要求输出平均成绩最高的学生成绩
#include<stdio.h>
#define N 3     //3门课程成绩 
typedef struct Student{  
    int num;          //学号
    char name[20];    //姓名
    double score[N];   //3门课成绩
    double aver;       //平均成绩
}STU;    //结构体别名,代表结构体类型,不是变量 
int main(){
    //函数声明
    void input(int,STU);
    void max(int,STU*);  //结构体指针 
    int n;  //n个同学 
    scanf("%d",&n);
    STU stu[n];
    input(n,stu[n]);
    STU *p=stu;
    max(n,p);
    return 0;
}

//自定义子函数
//输入学生信息 
void input(int x,STU stu[]){
    printf("请输入%d个学生的个人信息:\n",x);
    for(int i=1;i<=x;i++){
        scanf("%d %c %lf %lf %lf",&stu[i].num,&stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
        stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0;   //计算平均成绩 
    }

//计算学生的最高平均分void max(int x,STU stu[]){
    void Print(int,STU);
    //记录下标
    int flag=0; 
    for(int i=0;i<x;i++){
        if(stu[flag].aver>stu[i].aver){
            flag=i;
        }
    }
    Print(flag,stu[x]);
}
 

//输出的函数
void Print(int flag,STU stu[]){
    printf("\n平均成绩最高的是:\n");
    printf("学号:%d,姓名:%s\n 3门课程的成绩是:%lf %lf %lf\n 平均成绩是:%lf",
    stu[flag].num,stu[flag].num,stu[flag].name,stu[flag].score[0],stu[flag].score[1],stu[flag].score[2],stu[flag].aver);

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值