结构体数组内数组的所有数据大小比较,c语言学生成绩,所有成绩中的最高分并输出,总成绩最高的学生,输出该学生的基本信息及总成绩。

此篇博客介绍如何通过结构体数据结构输入5名学生的详细信息,包括学号、姓名和成绩。重点展示了如何使用函数实现查找最高分和计算总成绩最高的学生的功能。通过`inputData`、`findMAXscore`和`totalScores`函数操作,输出关键信息和结果。
摘要由CSDN通过智能技术生成

给定结构体数据类型 struct stu {   char stuID[13],

                                                    char stuName[10],

                                                    float scoreEMP[3],

                                           };

编写程序完成如下功能:主函数定义基于结构体struct stu数据类型的5名学生的数组student,调用函数void inputData(...)通过键盘输入5名学生的信息,stuID保存学生的12位学号,stuName保存学生的姓名,scoreEMP保存学生的英语、数学和程序设计3门课的成绩;调用函数void findMAXscore(...)找出所有成绩中的最高分并输出;调用函数void totalScores(...)计算出3门课总成绩最高的学生,输出该学生的基本信息及总成绩。说明:3个被调用函数的参数的数据类型及名字,自己决定。

输入提示信息:"Input stuID:\n"

                        "Input stuName:\n"

                        "Input scoreEMP:\n"

输入格式:    字符串用gets()函数,成绩用scanf("%f%f%f",....)。

输出格式:    

"The high score is %.2f.\n"

"The student's stuID %s,stuName %s,scoreEMP:%.2f,%.2f,%.2f,total score %.2f.\n"
 

#include<stdio.h>
#define N 4
struct stu 
{ 
	char stuID[13];
 	char stuName[10];
 	float scoreEMP[3];
};	
void inputdata(struct stu s[N]);
void findMAXscore(struct stu s[N]);
void totalScore(struct stu s[N]);
int main()
{
	struct stu s[N];
	inputdata(s);
	findMAXscore(s);
	totalScore(s);
	return 0;
}
void inputdata(struct stu s[N])
{
	int i;
	for(i=0;i<=4;i++)
    	{
			printf("input stuID:\n");
    		gets(s[i].stuID);
    		printf("input stuName:\n");
    		gets(s[i].stuName);
    		printf("input scoreEMP:\n");
    		scanf("%f%f%f",&s[i].scoreEMP[0],&s[i].scoreEMP[1],&s[i].scoreEMP[2]);
    		while(getchar()!='\n');
		}
}
void findMAXscore(struct stu s[])
{
	float maxscore;
	int x,y,i;
	float z[14],max;
	y=0;
	for(i=0;i<15;i=i+3)
		{
			z[i]=s[y].scoreEMP[0];
        	z[i+1]=s[y].scoreEMP[1];
        	z[i+2]=s[y].scoreEMP[2];
        	y++;
		}
		max=z[0];	
	for(x=0;x<15;x++)
	{
		if(max<=z[x])
		{
	   		max=z[x];
		}
	}
	maxscore=max;
	printf("The high score is %.2f.\n",maxscore);
}
void totalScore(struct stu s[])
{
	int i,j;
	int m;
	float sum[N],k,total;
	for(i=0;i<5;i++)
	{
		sum[i]=s[i].scoreEMP[0]+s[i].scoreEMP[1]+s[i].scoreEMP[2];
	}
	k=sum[0];
	m=0;
	for(j=1;j<5;j++)
     	{
    		if(k<sum[j])
  			{
				k=sum[j];
				m=j;
   			}
     	}
	total=s[m].scoreEMP[0]+s[m].scoreEMP[1]+s[m].scoreEMP[2];
	printf("The student stuID %s,stuName:%s,scoreEMP:%.2f,%.2f,%.2f,totalscore%.2f.\n",
	s[m].stuID,
	s[m].stuName,
	s[m].scoreEMP[0],s[m].scoreEMP[1],s[m].scoreEMP[2],total);
}

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值