第16周实践项目二——学生成绩处理(2)

来源:互联网 发布:有程序员转行的吗 编辑:程序博客网 时间:2024/05/16 00:25

问题及代码

#include <stdio.h>#define N 100  /*N表示最多允许的学生人数*/struct Student{   int num; //学号   int c; //C语言成绩   int math; //数学成绩   float aver;  //两科均分};int main( ){   int n;   //定义结构体数组存放多名同学的成绩   struct Student stu[N];   printf("请输入学生人数: ");   scanf("%d", &n);   printf("请输入学号、C和数学课的成绩: \n");   //输入数据   //输出成绩单   return 0;} 

 

2)请在上面的程序的基础上增加功能,使运行结果如下图:
这里写图片描述
其中,需要做出的改动是:

  • 计算每名学生的学分绩——各科成绩乘以学分的和,再除以总学分(本题中,C语言和数学课的学分分别是3和4);
  • 计算各科的均分;
  • 输出得奖学金的同学学号清单——奖学金规则是,学分绩要高于80且没有挂科。

注:图片中科均分为错误的。

/*烟台大学计算机学院 2016作者: 马春澎 完成日期:2016年12月15日 */#include <stdio.h>#define N 100  /*N表示最多允许的学生人数*/struct Student{    int num; //学号    int c; //C语言成绩    int math; //数学成绩    float ave;  //两科学分绩};int main( ){    int n,i,s1=0,s2=0;    //定义结构体数组存放多名同学的成绩    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].ave=(float)(stu[i].c*3+stu[i].math*4)/(3+4);        s1=s1+stu[i].c;        s2=s2+stu[i].math;    }    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].ave);    }    printf("科均分:%.2f   %.2f\n",(float)s1/n,(float)s2/n);    printf("得奖学金的同学的学号是:\n");    for(i=0; i<n; i++)    {        if(stu[i].c>=60&&stu[i].math>=60&&stu[i].ave>80)            printf("%d ",stu[i].num);    }    return 0;}

运算结果

知识点总结

结构体的综合应用

学习心得

注意科均分要将int型转换成float型,最后输出得奖学金的同学是要单独输出。


0 0
原创粉丝点击