第16周实践——学生成绩处理

问题及代码:

(一)

/*Copyright(c)2016,烟台大学计算机学院 all rights reserved.
作者:曹欣宇
指导教师:贺利坚
完成日期:2016年12月16日
题目描述
  (1)定义学生结构体,在结构体数组中,输入了学生学号和两门课的成绩,计算均分后,
  输出成绩单,请在下面的程序基础上,将程序补充完整。
输入
  学生人数及这些学生的学号和成绩
输出
  学号,成绩,均分,以及全部及格的人数
样例输入
  5
  3160 98 72
  3161 78 65
  3162 45 61
  3260 96 58
  3261 99 78

样例输出
  3160   98   72    85.00
  3161   78   65    71.50
  3162   45   61    53.00
  3260   96   58    77.00
  3261   99   78    88.50
  3
  */
#include <stdio.h>
#define N 100  /*N表示最多允许的学生人数*/
struct Student
{
   int num; //学号
   int c; //C语言成绩
   int math; //数学成绩
   float aver;  //两科均分
};
int main( )
{
   int n,i,pass=0;
   //定义结构体数组存放多名同学的成绩
   struct Student stu[N];
   printf("请输入学生人数: ");
   scanf("%d", &n);
   printf("请输入学号、C和数学课的成绩: \n");
   //输入数据
   for(i=1;i<=n;i++)
   {
       scanf("%d %d %d",&stu[i].num,&stu[i].c,&stu[i].math);
   }
   //输出成绩单
    for(i=1;i<=n;i++)
   {
       stu[i].aver=(stu[i].c+stu[i].math)/2.0;
       if(stu[i].c>=60&&stu[i].math>=60)
        pass++;
   }
   printf("学号\tC\t数学\t均分\n");
    for(i=1;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("两门都及格的有%d人",pass);
   return 0;
}

运行结果:

(二)

问题及代码:

/*Copyright(c)2016,烟台大学计算机学院 all rights reserved.
作者:曹欣宇
指导教师:贺利坚
完成日期:2016年12月16日
题目描述
  请在上面的程序的基础上增加功能,使运行结果改变,其中,需要做出的改动是:
•计算每名学生的学分绩——各科成绩乘以学分的和,再除以总学分(本题中,C语言和数学课的学分分别是3和4);
•计算各科的均分;
•输出得奖学金的同学学号清单——奖学金规则是,学分绩要高于80且没有挂科。

输入
  学生人数及这些学生的学号和成绩
输出
  学号,成绩,学分绩,以及得奖学金的同学的学号
样例输入
  5
  3160 98 72
  3161 78 65
  3162 45 61
  3260 96 58
  3261 99 78

样例输出
  3160   98   72    83.14
  3161   78   65    70.57
  3162   45   61    54.14
  3260   96   58    74.29
  3261   99   78    87.00
  3160 3261
  */
#include <stdio.h>
#define N 100  /*N表示最多允许的学生人数*/
struct Student
{
    int num; //学号
    int c; //C语言成绩
    int math; //数学成绩
    float aver;  //学分绩
};
int main()
{
    int n,i,sumc=0,summath=0;
    float avec,avemath;
    //定义结构体数组存放多名同学的成绩
    struct Student stu[N];
    printf("请输入学生人数: ");
    scanf("%d", &n);
    printf("请输入学号、C和数学课的成绩: \n");
    //输入数据
    for(i=1; i<=n; i++)
    {
        scanf("%d %d %d",&stu[i].num,&stu[i].c,&stu[i].math);
    }
    for(i=1; i<=n; i++)
    {
        sumc+=stu[i].c;
        summath+=stu[i].math;
    }
    avec=sumc/n;
    avemath=summath/n;
    for(i=1; i<=n; i++)
    {
        stu[i].aver=(stu[i].c*3.0+stu[i].math*4.0)/7.0;
    }
    printf("学号\tC\t数学\t学分绩\n");
    for(i=1; 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%.2f\t%.2f\n\n",avec,avemath);
    printf("得奖学金的同学学号为: \n");
    for(i=1; i<=n; i++)
    {
        if(stu[i].aver>=80&&stu[i].c>=60&&stu[i].math>=60)
            printf("%d ",stu[i].num);
    }
    return 0;
}

运行结果:

知识点总结:

通过学习,进一步巩固了结构体的用法。

学习心得:

自顶向下,逐步求精。题目并不难...

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值