当前位置:   ASP > 正文

C语言:有十个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入10个学生数据,要求输出3门课程的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程成绩、平均分数)_4、有 10 个学生,每个学生的数据包括学号、姓名、3 门课的成绩, 从键盘输入10 个

4、有 10 个学生,每个学生的数据包括学号、姓名、3 门课的成绩, 从键盘输入10 个

题目:有十个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入10个学生数据,要求输出3门课程的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程成绩、平均分数)。
根据题目要求,选择采取结构体类型解决问题。本例中为简便设置了三个学生的成绩,学生人数如需更改,可设置#define N 3该值即可。
具体程序如下:

#include<stdio.h>
#define N 3
struct student
{
	char num[6];
	char name[20];
	int score[3];
}stu[N];
int main()
{
	int i,j,imax;
	float sum=0.0,aver[N],temp,average=0.0;
	printf("输入学生的学号、姓名和三门课的成绩:\n");
	for(i=0;i<N;i++)
	{
		scanf("%s%s",&stu[i].num,&stu[i].name);
		for(j=0;j<3;j++)
		{
		    scanf("%d",&stu[i].score[j]);
		    sum+=stu[i].score[j];
		}
		aver[i]=sum/3.0;          //每个学生的平均成绩 
		sum=0;
		average+=aver[i];
	}
	average=average/N;           //总平均成绩 
	printf("学号   姓名   成绩1    成绩2     成绩3    平均成绩\n");
	for(i=0;i<N;i++)
	{
		printf("%s%10s",stu[i].num,stu[i].name);
		for(j=0;j<3;j++)
		   printf("%8d",stu[i].score[j]);
		printf("%7.2f\n",aver[i]);
	} 
	temp=aver[0];
	for(i=0;i<N;i++)
	   if(aver[i]>temp)
	   {
	       temp=aver[i];
	       imax=i;
	   }
	printf("学生的总平均分为:%7.2f\n",average);
	printf("平均分最高的学生的数据为:\n");
	printf("学号   姓名   成绩1    成绩2     成绩3   平均成绩\n");
	printf("%s%10s%5d%5d%5d%7.2f\n",stu[imax].num,stu[imax].name,stu[imax].score[0],stu[imax].score[1],stu[imax].score[2],aver[imax]);
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47

我们来看一下运行效果:
运行图
由图可以看出,符合我们的要求,那么关于数据对齐方式呢,我们可以对输出行的**%s%10s%5d%5d%5d%7.2f**以上数据进行修改完善。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号