关于成绩的菜单系统

天大地大妈咪最大 提交于 2019-12-23 15:54:22

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

#主函数 main 中输入一组(10 个)C 语言成绩值到数组 score[ ]中,并输出如图所 示的主菜单,根据不同的选择调用 相应函数,编写函数分别实现: (1)输出平均成绩; (2)成绩排序并输出; (3)输出比平均值低的成绩值,及个数; (4)输出及格率 (5)输入一个成绩值进行查找,输出找到或未找到。 (6) 排序后,输入一个成绩值,将其添加到 score[ ]中并保持原来的顺序。

#include<stdio.h>
#include <stdlib.h>
int Menu();
void HandleMenu();
void inputScore();
void PrintAveScore(float sco[]);
void SortScore(float sco[]);
void PrintScore(float sco[]);
void PrintBadScoreAndCount(float sco[]);
void PassRate(float sco[]);
void FindScore(float sco[]);
void AddScore(float sco[]); 
float score[20];
int count=10;
//////主函数main 
int main()
 	{
 		inputScore();
 		while(1){
 			HandleMenu();
 		}
 		return 0;
 	}
//////菜单
int Menu(){
	int sel;
	printf("----------------------------\n");
	printf("1.输出平均值\n"                );
	printf("2.排序成绩\n"                  );
	printf("3.输出比平均值低的成绩和个数\n");
	printf("4.输出及格率\n"                );
	printf("5.查找成绩\n"                  );
	printf("6.添加成绩\n"                  );
	printf("0.结束程序\n"                  );
	printf("----------------------------\n");
	scanf("%d",&sel);
	return sel;
}
///////控制菜单
void HandleMenu()
{
	int select;
	select=Menu();
	switch(select){
		case 1:
			PrintAveScore(score);
			break;
		case 2:
			SortScore(score);
			break;
		case 3:
			PrintBadScoreAndCount(score);
			break;
		case 4:
			PassRate(score);
			break;
		case 5:
			FindScore(score);
			break;
		case 6:
			AddScore(score);
			break;
		default:exit(0);
	}
} 
//////输入成绩
void inputScore()
{
	int i;
	for(i=0;i<10;i++){
		printf("请输入第%d成绩:",i+1);
		scanf("%f",&score[i]);
		getchar();
	}
}
/////输出平均值
void PrintAveScore(float sco[])
{
	int i;
	float ave=0;
	for(i=0;i<10;i++){
		ave+=sco[i];
	}ave/=10;
	printf("%.0f",ave);
}
/////排序
void SortScore(float sco[])
{
	int i,j,t;
	for(i=0;i<9;i++){
		for(j=0;j<9-i;j++){
		if(sco[j]>sco[j+1]){
			t=sco[j];
			sco[j]=sco[j+1];
			sco[j+1]=t;			
		}}}PrintScore(sco);
}
//////打印成绩
void PrintScore(float sco[])
{
	int i;
	for(i=0;i<count;i++){
		printf("%.2f\t",sco[i]);
	}printf("\n");
}
/////输出低于平均分的成绩及个数
void PrintBadScoreAndCount(float sco[])
{
	float ave=0;
	int i;
	int BadScoreCount=0;
		for(i=0;i<10;i++){
		ave+=sco[i];
	}
	ave/=count;	
	printf("低于平均分%f的成绩有",ave);
	for(i=0;i<10;i++){
		if(sco[i]<ave){
			printf("%.0f\t",sco[i]);
			BadScoreCount++;
		}						
	}printf("%d个\n",BadScoreCount);
}
///////输出及格率
void PassRate(float sco[])
{
	int i;
	float psrate=0;
	for(i=0;i<10;i++){
		if(sco[i]>=60)
		psrate++;
	}psrate/=10;
	printf("及格率为%.2f\n",psrate);	
}////////查找成绩//////
 	void FindScore(float sco[])
 	{
 		float findsco;
 		int i;
 		printf("请输入要查找的成绩\n");
 		scanf("%f",&findsco);
 		for(i=0;i<count;i++){
 			if(sco[i]==findsco){
 				printf("找到了,它在第%d个位置上!\n",i);
 				break;
 			}
 		} 
 		if(i>=count)
 			printf("没找到\n"); 
 	} 
///排序后添加成绩////	
void AddScore(float sco[]){
	float s;
	int i,pos;
	printf("请输入要添加的成绩\n");
	scanf("%f",&s);
	SortScore(score);
	for(i=0;i<count;i++){
		if(s>sco[i]){
			pos=i;
			break;
 			}
 		}
	for(i=count-1;i>=pos;i--){
		sco[i+1]=sco[i];
 		}
	sco[pos]=s;
	count++;
	PrintScore(sco);
 	}  
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!