栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言 分别计算五名学生三门成绩的总分平均分以及排名

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c语言 分别计算五名学生三门成绩的总分平均分以及排名

一、题目要求

二、实现

定义一个用来存放姓名和成绩的结构体类型,然后定义一个结构体数组。分别实现上述功能。

1.计算总成绩 2.显示单科成绩平均分3.总名次表4.单科成绩排名5.显示详细成绩6.重新选择模式初始化方式7.退出

三、全部代码如下

#include 
#include 
#include 
#include 

int flag = 0;		//全局变量 
typedef struct student_score {
	char name[16];
	float score[3];		//语文成绩  数学成绩  英语成绩
	float total_score;
}STUS;


int initialization_method_selection(int i);
void main_menu();
void printf_score_menu(STUS *stu);
void score_sum(STUS *stu);
void avarage_score(STUS *stu);
void total_score_sort(STUS *stu);
void single_subject_score_sort(STUS *stu,int k);
int single_subiect_score(STUS *stu);
void pint_snge_sbjct_scre_sort_menu();
 
int main() {
	int choose;
	char str[32] = {0};
	while(1) {
		printf("请选择数据初始化方式n");
		printf("[1、使用初始数据]n[2、从键盘获取数据]nnn");
		printf("请输入你的方式:");
		char str[32];
		fflush(stdin);
		choose = atoi(gets(str));
		switch(choose) {
			case 1:initialization_method_selection(0);break;
			case 2:initialization_method_selection(1);break;
			default:system("cls");printf("===参数错误,返回当前菜单===nn");system("pause");break;
		}
	}
	return 0;
}


int initialization_method_selection(int i) {
	char str[32]; 
	int choose;
	int j;
	STUS stu[5];
	if(i == 0) {
		stu[0] = (STUS){"Alex",98.50,97.50,87.50};
		stu[1] = (STUS){"Peter",77.50,44.50,81.50};
		stu[2] = (STUS){"Marry",86.50,76.00,91.00};
		stu[3] = (STUS){"Clis",77.00,100.00,96.50};
		stu[4] = (STUS){"Harry",94.00,63.50,89.50};
	}
	else if(i == 1) {
		system("cls");
		printf("请分别输入五位学生的姓名,语文成绩,数学成绩,英语成绩n");
		for(j = 0;j < 5;j++) {
		scanf("%s%f%f%f",stu[j].name,&stu[j].score[0],&stu[j].score[1],&stu[j].score[2]);	
		}	
	}
	system("cls");
	STUS *p = stu;
	printf_score_menu(p);
	system("pause");
	while(1) {
		system("color 0e");
		fflush(stdin);
		main_menu();
		choose = atoi(gets(str));
		switch(choose) {
			case 1:score_sum(p);break;
			case 2:avarage_score(p);break;
			case 3:total_score_sort(p);break;	
			case 4:single_subiect_score(p);break;	
			case 5:system("cls");printf_score_menu(p);system("pause");break;
			case 6:system("cls");return 0;break;
			case 7:system("cls");exit(0);break; 
			default:system("cls");printf("===参数错误,返回当前菜单===nn");system("pause");break; 
		}
	}
}


void printf_score_menu(STUS *stu) {
	int i;	
	system("color 09");
	printf("	Name	Chinese	Math	Englishn");
	printf("	=====================================n");
	for(i = 0;i < 5;i++) {
		printf("	%s	%.2f	%.2f	%.2fn",stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2]);
	}
	printf("nn");
} 


void main_menu() {
	system("cls");
	system("color 0e");
	printf(" 	 __________________________n");
	printf("	| 1.计算总成绩             |n");
	printf("	| 2.显示单科成绩平均分     |n");
	printf("	| 3.总名次表               |n");
	printf("	| 4.单科成绩排名           |n");
	printf("	| 5.显示详细成绩           |n");
	printf("	| 6.重新选择模式初始化方式 |n");
	printf("	| 7.退出                   |n");
	printf("	|__________________________|n");
	printf("请输入序号:");
} 

	
void score_sum(STUS *stu) {
	flag = 1;
	system("cls");
	int i;
	for(i = 0;i < 5;i++) {
		stu[i].total_score = stu[i].score[0] + stu[i].score[1] +stu[i].score[2];
	}
	system("color 05");
	printf("#总分计算完毕n");
	printf("	Name	Total Scoren");
	printf("	====================n");
	for(i = 0;i < 5;i++) {
		printf("	%s	%.2fn",stu[i].name,stu[i].total_score);
	}
	printf("nn");
	system("pause"); 
}

		
void avarage_score(STUS *stu) {
	system("cls");
	int i;
	float aver[3];
	for(i = 0;i < 3;i++) {
		aver[i] = (stu[0].score[i] + stu[1].score[i] +stu[2].score[i] +stu[3].score[i] +stu[4].score[i])/5.0;
	}
	system("color 05");
	printf("  ======平均分======n");
	printf("Chinese:	%.2fn",aver[0]);
	printf("Math   :	%.2fn",aver[1]);
	printf("English:	%.2fnnn",aver[2]);
	system("pause");
}

		
void total_score_sort(STUS *stu) {
	system("cls");
	int i,j;
	STUS temp;
	STUS stu_cpy[5];
	for(i = 0;i < 5;i++) {
		stu_cpy[i] = stu[i];
	}
	for(i = 0;i < 4;i++) {
		for(j = i+1;j < 5;j++) {
			if(stu_cpy[j].total_score > stu_cpy[i].total_score) {
				temp       = stu_cpy[j];
				stu_cpy[j] = stu_cpy[i];
				stu_cpy[i] = temp;
			}
		}
	}
	if(flag == 1) {
		system("color 05");
		printf("	NO.	Name	Total Scoren");
		printf("	============================n");
		for(i = 0;i < 5;i++) {
			printf("	%d	%s	%.2fn",i+1,stu_cpy[i].name,stu_cpy[i].total_score);
		}
		printf("nn"); 
		system("pause");
	}
	else if(flag == 0){
		system("color 04");
		printf("总成绩未获取,无法进行排名nn");
		system("pause");
	}	
}

		
void single_subject_score_sort(STUS *stu,int k) {
	int i,j;
	STUS temp;
	STUS stu_cpy[5];
	char str[16] = {0};
	int choose;
	for(i = 0;i < 5;i++) {
		stu_cpy[i] = stu[i];
	}
	for(i = 0;i < 4;i++) {
		for(j = i+1;j < 5;j++) {
			if(stu_cpy[j].score[k] > stu_cpy[i].score[k]) {
				temp       = stu_cpy[j];
				stu_cpy[j] = stu_cpy[i];
				stu_cpy[i] = temp;
			}
		}
	}	
	system("cls");
	printf("	NO. Name	%sn",k==0?strcpy(str,"Chinese"):(k==1?strcpy(str,"Math"):strcpy(str,"English")));
	printf("	============================n");
	for(i = 0;i < 5;i++) {
		printf("	%d   %s	%.2fn",i+1,stu_cpy[i].name,stu_cpy[i].score[k]);
	}
	printf("nn");
	system("pause");
	system("cls");
}

		
int single_subiect_score(STUS *stu) {
	STUS *stu_cpy;
	char str[32] = {0};
	int choose;
	while(1) {
		fflush(stdin);
		pint_snge_sbjct_scre_sort_menu();
		choose = atoi(gets(str));
		switch(choose) {
			case 1:single_subject_score_sort(stu,0);break;
			case 2:single_subject_score_sort(stu,1);break;
			case 3:single_subject_score_sort(stu,2);break;
			case 4:system("cls");return 0;break;
			default:system("cls");printf("===参数错误,返回当前菜单===nn");system("pause");break;
		}
	}
}

	
void pint_snge_sbjct_scre_sort_menu() {
	system("color 0e");
	system("cls");
	printf("     _______________n");
	printf("    |   1.语文      |n");
	printf("    |   2.数学      |n");
	printf("    |   3.英语      |n");
	printf("    |   4.返回      |n");
	printf("    |_______________|n");
	printf("请输入想要查询的单科成绩的序号:");
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/968458.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号