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;
}
结果:
知识点总结:
学习了结构体数组的定义与运用。
心得体会:
可以灵活使用结构体数组。