您的位置:首页 > 理论基础

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

2016-12-16 17:22 281 查看
问题及代码:

(一)

/*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
;
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
;
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;
}

运行结果:



知识点总结:

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

学习心得:

自顶向下,逐步求精。题目并不难...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息