#include <stdio.h>
#define N 20
int k=0;
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;
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;
}
void input(int s[],int n)
{
int i;
printf("请输入%d个分数:",n);
for(i=0;i<n;i++)
scanf("%d",&s[i]);
}
void output(int s[],int n)
{
int i;
printf("当前数组中的分数:");
for(i=0;i<n;i++)
printf("%-3d",s[i]);
}
int aver(int s[],int n)
{
int i,sum;
for(i=0;i<n;i++)
sum=sum+s[i];
return sum/n;
}
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;
}
return m;
}
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;
}
return flag;
}
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");
}
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");
}
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");
}
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");
}