第十六周 结构体——学生成绩处理

Copyright (c) 2016 烟台大学计算机与控制工程学院
All rights reserved.
文件名称:test.cpp
作者:何定钦
完成日期:2016年12月16日
题目描述:
    定义学生结构体,在结构体数组中,输入了学生学号和C语言与数学的成绩,请输入学生人数,并分别输入他们的成绩学号,计算
每名学生的学分绩————各科成绩乘以学分的和,再除以总学分(本题中,C语言和数学课的学分分别为3和4),再计算各科的均分,输
出得奖学金的同学学号清单————奖学金规则,学分绩要高于80且没有挂科。
输入:
    学生人数n,输入各位同学学号与C语言和高数成绩。
输出:
    每名学生的学分绩,各科的均分,得奖学金的同学学号清单。
样例输入:
5
3160 98 72
3162 78 65
3162 45 61
3260 96 58
3261 99 78
样例输出:
成绩单:
学号    C       数学    学分绩
3160    98      72      83.14
3162    78      65      70.57
3162    45      61      54.14
3260    96      58      74.29
3261    99      78      87.00
科均分  83.20   66.80
得奖学金的同学的学号是:
3160    3261
分析:
#include <stdio.h>
#include <stdlib.h>
#define N 100

struct Student
{
    int num;//学号
    int c;//C语言
    int math;//数学
    float aver;//学分绩
};
int main()
{
    int n;//学生人数
    int i,j=0;
    int sum1=0,sum2=0;
    struct Student a[100];//结构体数组储存学生信息
    double aver1,aver2;//科均分
    struct Student stu[N];
    printf("请输入学生人数:");
    scanf("%d",&n);
    printf("请输入学号,C和数学课的成绩:\n");
    for(i=0; i<n; i++)
    {
        scanf("%d%d%d",&stu[i].num,&stu[i].c,&stu[i].math);
        stu[i].aver=(stu[i].c*3+stu[i].math*4)/7.0;
        sum1=sum1+stu[i].c;
        sum2=sum2+stu[i].math;
        if(stu[i].aver>80 && stu[i].c>=60 && stu[i].math>=60)
        {
             a[j].num=stu[i].num;
             j++;
        }
    }
    aver1=(double)sum1/n;
    aver2=(double)sum2/n;
    printf("成绩单:\n");
    printf("学号\tC\t数学\t学分绩\n");
    for(i=0; i<n; i++)
    {
        printf("%d\t%d\t%d\t%.2f\n",stu[i].num,stu[i].c,stu[i].math,stu[i].aver);
    }
     printf("科均分\t%.2lf\t%.2lf\n",aver1,aver2);
     printf("得奖学金的同学的学号是:\n");
     for(i=0;i<j;i++)
     {
         printf("%d\t",a[i].num);
     }
        return 0;
    }

结果:

知识点总结:

学习了结构体数组的定义与运用。

心得体会:

可以灵活使用结构体数组。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值