编辑代码

#include <stdio.h>
#define N 20 
int k=0;  //k:全局变量 存放定位的元素的下标 
void input(int s[],int n);//输入
void output(int s[],int n);//输出
int aver(int s[],int n);//平均分
int max(int s[],int n);//最高分
int search(int s[],int n,int x);
void modify(int s[],int n,int x,int y);//修改后的分数
void sort(int s[],int n);
void insert(int s[],int n,int z); //新增的分数
void menu( );	
//主函数 
 int main()
{
	
	int choice,i,a[N],n,x,y,z,flag=0;//x:要查找的分数,y:修改后的一个分数;z:要插入的一个分数;n:学生人数 
	menu();
	printf("\nwelcome to student score system!\nplease select function number:");
	scanf("%d",&choice);
	while(1)
	{
		switch(choice)
		{
			case 1:printf("请输入学生人数:");
			       scanf("%d",&n);
			       input(a,n);
			       break; 
			case 2:output(a,n);printf("\n");break;
			case 3:printf("平均分:%d\n",aver(a,n));break;
			case 4:printf("最高分:%d,下标:%d\n",max(a,n),k);break;
			case 5:printf("请输入要查找的分数:");
			       scanf("%d",&x);
			       flag=search(a,n,x);
				   if(flag==1) printf("找到了%d,位置:%d。\n",x,k+1);
				   else        printf("未找到%d。\n",x); 
				   break;
			case 6:printf("请输入要查找的分数:");
			       scanf("%d",&x);
				   flag=search(a,n,x);
			       if(flag==1)  
				   {
				   	printf("请输入修改后的分数:");
			        scanf("%d",&y);
			        modify(a,n,x,y);
				   }
				   else
				   printf("未找到这个分数,无法修改。\n"); 
			       break;
			case 7:sort(a,n);break;
			case 8:printf("请输入新增的分数:");
			       scanf("%d",&z);
			       insert(a,n,z);break;
			case 0:break;
			default:break;
			}	
		if(choice==0) break;
		printf("\nplease select function number:");
	    scanf("%d",&choice); 
	
	}	
	return 0;
}
//定义子函数1-输入函数input 
void input(int s[],int n)
{
	int i;
	printf("请输入%d个分数:",n);
	for(i=0;i<n;i++)
		scanf("%d",&s[i]); 
 } 
//定义子函数2-输出函数output
void output(int s[],int n)
{	
	int i;
	printf("当前数组中的分数:");
	for(i=0;i<n;i++)
		printf("%-3d",s[i]);	
}
//定义子函数3-统计平均分函数aver
int aver(int s[],int n)
{
	int i,sum;
	for(i=0;i<n;i++)
		sum=sum+s[i];
	return sum/n;
 } 
//定义子函数4-查询最高分函数max
int max(int s[],int n)
{
	int i,m=s[0];
	for(i=0;i<n;i++)
		if(s[i]>m)
			{
				m=s[i];	k=i;   //k:全局变量 
			}
	return m;
 }
 //定义子函数5-查找函数search
 int search(int s[],int n,int x)
 {
 	int i,flag=0;
 	for(i=0;i<n;i++)
 		if(x==s[i])
 		{
 			flag=1;k=i;//k:全局变量 
		 }
	return flag;
  }
//定义子函数6-修改函数modify并输出数组 
void modify(int s[],int n,int x,int y)
  {
  	int i;
  	s[k]=y;
	printf("找到了这个分数%d,已修改为%d\n",x,y);
	printf("after modify a[%d]:",n);
	for(i=0;i<n;i++)
		printf("%-3d",s[i]);
	printf("\n");
   } 
   
//定义子函数7-排序函数sort并输出数组 
  void sort(int s[],int n)
  {
  	int i,j,temp;
  	for(i=0;i<n-1;i++)
  		for(j=0;j<n-1-i;j++)
  			if(s[j]>s[j+1])  
  			{
  				temp=s[j];s[j]=s[j+1];s[j+1]=temp;
			  }
	printf("the sorted a[%d]:",n);
	for(i=0;i<n;i++)
		printf("%-3d",s[i]);
	printf("\n");
   } 
//定义子函数8-插入函数insert(升序序列) 
void insert(int s[],int n,int z) 
{
	int i,loca;
	sort(s,n);
	if(z>s[n-1]) s[n]=z;
	else
	{
	for(i=0;i<n;i++)
		if(z<s[i]) 
		{
			loca=i;break;	
		}
	for(i=n;i>loca;i--)
		s[i]=s[i-1];
	s[loca]=z;	
	}
	printf("after insert a[%d]:",n+1);
	for(i=0;i<n+1;i++)
		printf("%-3d",s[i]);
	printf("\n");
}

//定义子函数9-菜单界面函数menu
void menu( )
{
	printf("\n******学生成绩管理系统******\n"); 
	printf("*     1、成绩输入          *\n"); 
	printf("*     2、成绩显示          *\n"); 
	printf("*     3、成绩统计(平均分)*\n"); 
	printf("*     4、成绩统计(最高分)*\n"); 
	printf("*     5、成绩查找          *\n"); 
	printf("*     6、成绩修改          *\n"); 
	printf("*     7、成绩排序          *\n"); 
	printf("*     8、成绩插入          *\n"); 
	printf("*     0、系统退出          *\n");
	printf("****************************\n"); 
 }