统计多个学生的多门课的成绩(结构体)
2016-04-11 22:38
435 查看
问题描述:
设有10个学生,每个学生的数据的包括学号,姓名,三门课的成绩。要求从键盘输入10个学生的数据,统计并打印
出三门课的平均成绩,以及最高分的学生的数据(包括学号,姓名,三门课的成绩,平均成绩)。
算法分析:
求每个学生的平均成绩是要执行1.0次,所以使用for循环完成。
求分数最高的学生,就是求这10个数据中的最大者,先假设第1个事最大的,将其赋予记录最大数的变量max,然后
用max和后面的数据一 一比较,只要发现比max大的数,就将此数赋予max,并记录下当前的序号,也就是当前最大数
是第几个数,知道结束。
源代码:
#include<stdio.h>
struct student
{
char num[4];
char name[8];
float score[3];
float avr;
}stu[10];
void main()
{
int i,j,maxi;
float max,sum,aver;
for(i=0;i<10;i++) /*输入学生的数据*/
{
printf("请输入地%d个学生的数据:\n",i+1);
printf("输入学号:");
scanf("%s",stu[i].num);
printf("输入姓名:");
scanf("%s",stu[i].name);
for(j=0;j<3;j++)
{
printf("输入第%d门课的成绩:",j+1);
scanf("%f",&stu[i].score[j]);
}
}
aver = 0;
max = 0;
maxi = 0;
for(i=0;i<10;i++) /* 分别求10个学生的平均成绩,最高分的学生的序号 */
{
sum = 0;
for(j=0;j<3;j++)
sum +=stu[i].score[j];
stu[i].avr = sum / 3.0;
aver += stu[i].avr;
if(sum > max) /* 地i个学生的总分和当前最高分比较 */
{
max = sum;
maxi = i;
}
}
aver /= 10; /* 求总平均成绩 */
printf("总的平均成绩是:%.3f\n",aver);
printf("最高分的学生的学号,姓名,三门课的成绩分别为:\n");
printf("%s %s %.2f %.2f %.2f\n",stu[maxi].num,stu[maxi].name,stu[maxi].score[0],
stu[maxi].score[1],stu[maxi].score[2],stu[maxi].avr);
}
设有10个学生,每个学生的数据的包括学号,姓名,三门课的成绩。要求从键盘输入10个学生的数据,统计并打印
出三门课的平均成绩,以及最高分的学生的数据(包括学号,姓名,三门课的成绩,平均成绩)。
算法分析:
求每个学生的平均成绩是要执行1.0次,所以使用for循环完成。
求分数最高的学生,就是求这10个数据中的最大者,先假设第1个事最大的,将其赋予记录最大数的变量max,然后
用max和后面的数据一 一比较,只要发现比max大的数,就将此数赋予max,并记录下当前的序号,也就是当前最大数
是第几个数,知道结束。
源代码:
#include<stdio.h>
struct student
{
char num[4];
char name[8];
float score[3];
float avr;
}stu[10];
void main()
{
int i,j,maxi;
float max,sum,aver;
for(i=0;i<10;i++) /*输入学生的数据*/
{
printf("请输入地%d个学生的数据:\n",i+1);
printf("输入学号:");
scanf("%s",stu[i].num);
printf("输入姓名:");
scanf("%s",stu[i].name);
for(j=0;j<3;j++)
{
printf("输入第%d门课的成绩:",j+1);
scanf("%f",&stu[i].score[j]);
}
}
aver = 0;
max = 0;
maxi = 0;
for(i=0;i<10;i++) /* 分别求10个学生的平均成绩,最高分的学生的序号 */
{
sum = 0;
for(j=0;j<3;j++)
sum +=stu[i].score[j];
stu[i].avr = sum / 3.0;
aver += stu[i].avr;
if(sum > max) /* 地i个学生的总分和当前最高分比较 */
{
max = sum;
maxi = i;
}
}
aver /= 10; /* 求总平均成绩 */
printf("总的平均成绩是:%.3f\n",aver);
printf("最高分的学生的学号,姓名,三门课的成绩分别为:\n");
printf("%s %s %.2f %.2f %.2f\n",stu[maxi].num,stu[maxi].name,stu[maxi].score[0],
stu[maxi].score[1],stu[maxi].score[2],stu[maxi].avr);
}
相关文章推荐
- javascript显示动态时间12小时制(二)
- Spark内核源码剖析、Hadoop高端
- Poj 2139 Six Degrees of Cowvin Bacon【floyd】
- const成员 和 static成员
- React-Native系列Android——Native与Javascript通信原理(一)
- iOS自动布局之Autoresizing
- C语言实现推箱子小游戏
- google官方的下拉刷新+自定义上拉加载更多
- laravel 学习笔记1
- 更改数据到指定格式
- Spark内核源码剖析、Hadoop高端
- 主讲spring mvc 在web.xml中的配置
- Side Menu侧边栏动画效果
- 事务的一些基本概念
- Java中的字符串类
- Spark大型项目实战:电商用户行为分析大数据平台
- Linq to XML
- Sliding menu 框架的应用
- $(document).ready()方法, onload事件 , $(window).load()方法
- iOS开发-自动布局之autoresizingMask使用详解(Storyboard&Code)