N个同学成绩/平均分

本文介绍了一个学生信息管理系统的设计与实现,该系统能够输入学生的姓名、学号、性别和五门课程的成绩,实现按平均成绩排序、计算特定课程的平均分及筛选平均分在90分以上或所有课程成绩在85分以上的女生。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个班有 N个同学, 修 5 门课从键盘输入他们的性名、 学号、 性别和成绩。
1 )按平均成绩从高到底打印全班的成绩单。
2 )求第三门课的平均分
3 )找出平均分在 90 以上或全部功课在 85以上的女生。
要求:输入、输出、计算、排序和查找分别用函数实现,主函数只是调用这些函数。不得使用全局变量。

#include <stdio.h>
#define N 5
struct Student
{
	char name[20];
	int number;
	int sex;
	float score[5];
	float aver;
};
void Input(struct Student *stu);
void Average(struct Student *stu,float *aver);
void Sort(struct Student *stu);
void Search(struct Student *stu,float score);
main()
{
	struct Student stu[N];
	float score=85.0;
	float aver3;
	Input(stu);
	Sort(stu);
	Average(stu,&aver3);
	printf("average3 is %.2f\n",aver3);
	Search(stu,score);
}
void Input(struct Student *stu)
{
	int i,j;
	float aver=0;
	for(i=0;i<N;i++) {
		aver=0;
		printf("please enter name:");
		gets(stu[i].name);
		printf("please enter number sex:");
		scanf("%d%d",&stu[i].number,&stu[i].sex);
		printf("please enter score(5):");
		for(j=0;j<5;j++) {
			scanf("%f",&stu[i].score[j]);
			aver +=stu[i].score[j];
		}
		stu[i].aver = aver/5;
		getchar();
	}
}
void Sort(struct Student *stu)
{
	int i,j;
	struct Student temp;
	for(i=0;i<N-1;i++){
		for(j=i+1;j<N;j++){
			if(stu[i].aver<stu[j].aver){
				temp=stu[i];
				stu[i]=stu[j];
				stu[j]=temp;
			}
		}
	    }
	printf("Name Numb Sex score(5) aver\n");
	for(i=0;i<N;i++){
	printf("%8s %d %d %.2f %.2f %.2f %.2f %.2f %.2f\n",stu[i].name,stu[i].number,stu[i].sex,
	stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4],stu[i].aver);
	}
}
void Average(struct Student *stu,float *average3){
	float sum3=0;
	int i;
	for(i=0;i<N;i++)
		sum3 += stu[i].score[2];
	*average3=sum3/N;
}
void Search(struct Student *stu,float score){
	int i,j;
	int flag =1;
	printf("\naver>90 score>85\n");
	printf("Name Numb Sex score(5) aver\n");
	for(i=0;i<N;i++){
		for(j=0;j<5;j++)
			flag = flag&&(stu[i].score[j]>score);
		if(stu[i].aver>90.0&&flag)	{
			printf("%8s %d %d
			 %.2f %.2f %.2f %.2f %.2f %.2f\n",stu[i].name,stu[i].number,stu[i].sex,stu[i].score[0],
			stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4],stu[i].aver);
		}
	}
	printf("\n\n");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值