结构体输出10个学生的各种成绩

个人网站
ghzzz.cn

---------------------2020-6-3更新---------------------------------------
VC++6.0编译存在返回值错误,在函数中加入返回值(return 0;)即可。

-----------------------分割线-----------------

题目

编写代码,有10个学生,每个学生的数据包括学号,姓名,及三门课成绩,总成绩和平均成绩,从键盘输入10个学生的数据(包括学号,姓名及3门课成绩),要求打印出每位学生的学号,姓名,三门课的成绩,总成绩和平均成绩,最后再打印出3门课的总平均成绩以及最高分的学生的数据(包括姓名和总成绩)。
内容要求利用函数形式完成以下5个内容:
(a)根据学生信息定义一个结构体类型,在说明一个该结构体类型的数组;
(b)用input函数从键盘上输入10个学生的数据;
(c)用average函数求出每个学生总成绩、平均成绩和所有学生的总平均成绩;
(d)用maximum函数找出最高分的学生的数据;
(e)在主函数中输出每位学生的学号、姓名、三门课的成绩、总成绩和平均成绩以及总平均分和最高分学生的数据。

代码如下:

#include <stdio.h>
#define N 10
struct  student
{
    int  num;
    char name[20];
    double score[3];
    double aver;
    double total;
};
int  input(struct  student s[])
{
    int i;
    for(i=0;i<N;i++){
        scanf("%d %s %lf %lf %lf",&s[i].num,s[i].name,&s[i].score[0],&s[i].score[1],&s[i].score[2]);
    }
}
int average(struct student s[])
{
    int i;
    double allaver=0;
    for(i=0;i<N;i++){
        s[i].total=s[i].score[0]+s[i].score[1]+s[i].score[2];
        s[i].aver=(s[i].score[0]+s[i].score[1]+s[i].score[2])/3.0;
        allaver += s[i].total;
       
    }
     allaver = allaver*1.0/i;
    for(i=0;i<N;i++){
        printf("学号:%5d 学生:%-5s 成绩1:%-6.1f 成绩2:%-6.1f  成绩3:%-6.1f 总成绩为:%-6.1f 平均成绩为:%-6.1f\n",s[i].num,s[i].name,s[i].score[0],s[i].score[1],s[i].score[2],s[i].total,s[i].aver);
    }
        printf("所有学生的平均成绩为:%-6.1f\n",allaver);
}
int maximum(struct student s[])
{
    int i,j;
    double max;
    for(i=0;i<N;i++){
        s[i].total=s[i].score[0]+s[i].score[1]+s[i].score[2];
     }
     max = s[0].total;
    for(i=0;i<N;i++){
        if(s[i].total>max){
            max = s[i].total;
            j=i;
        }
      }
      printf("最高分为学生数据为:\n");
      printf("学号   姓名    成绩1   成绩2  成绩3  总成绩  平均成绩:\n");
      printf("%5d %-9s %-6.1f %-6.1f %-6.1f %-6.1f %-6.1f\n",s[j].num,s[j].name,s[j].score[0],s[j].score[1],s[j].score[2],s[j].total,s[j].aver);
}
int main()
{
    struct student stu[N];
    input(stu);
    average(stu);
    maximum(stu);
    return 0;
}

输入示例:

1001 Aa 17 98 35
1002 Bb 47 68 36
1003 Cc 17 39 32
1004 Dd 44 69 32
1005 Ee 47 65 36
1006 Ff 78 99 23
1007 Gg 55 69 31
1008 Hh 25 39 87
1009 Ii 32 58 34
1010 Jj 25 78 65

运行结果:
在这里插入图片描述

  • 10
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值