没怎么懂你的意思,正好我昨天也写了一个,学生管理程序,
#include <stdio.h>#include <string.h>typedef struct student{int num;int grade;char name[100];}ST;void input(ST *,int);void print(void);void sumAvr(ST *,int);void printStudent(ST *,int);void sortBynum(ST *,int);void sortBysocre1(ST *,int);void sortBysocre(ST *,int);void find(ST *,int);void searchByname(ST *,int);void show(ST *,int);void sortByname(ST *,int);main(){printf("Input student number(n<30):\n");int n; scanf("%d",&n);ST st[n];int choose;do{print();scanf("%d",&choose);getchar();switch(choose){case 1:input(st,n);break;case 2:sumAvr(st,n);break;case 3:sortBysocre(st,n);break;case 4:sortBysocre1(st,n);break;case 5:sortBynum(st,n);break;case 6:sortByname(st,n); break;case 7:find(st,n);break;case 8:searchByname(st,n);break;case 9:show(st,n);break;case 10:printStudent(st,n);break;case 0:printf("End of program!\n");break;default :printf("Input error!\n");}}while(choose!=0); }void sortByname(ST *m,int n){printf("Sort in dictionary order by name:\n");int i,j;ST temp;for(i=0;i<n-1;i++){for(j=0;j<n-i-1;j++){if(strcmp(m[j].name,m[j+1].name)>0){temp=m[j];m[j]=m[j+1];//printf("dddd");m[j+1]=temp; }} }printStudent(m,n); }void searchByname(ST *m,int n){char temp[100];printf("Input the name you want to search:\n");gets(temp);int i;for(i=0;i<n;i++){if(strcmp(temp,m[i].name)==0){printf("%d\t%s\t%d\n",m[i].num,m[i].name,m[i].grade);return; }}printf("Not found!\n");}void sortBysocre1(ST *m,int n){ printf("Sort in ascending order by score:\n");ST temp;int i,j;for(i=0;i<n;i++){//printf("dddd");for(j=0;j<n-i-1;j++){if(m[j].grade>m[j+1].grade){temp=m[j];m[j]=m[j+1];//printf("dddd");m[j+1]=temp;}}}printStudent(m,n); }void show(ST *m,int n){int i;int n1=0,n2=0,n3=0,n4=0,n5=0,n6=0;for(i=0;i<n;i++){if(m[i].grade<60){n1++;}else if(m[i].grade<70&&m[i].grade>=60){n2++;}else if(m[i].grade<80&&m[i].grade>=70){n3++;}else if(m[i].grade<90&&m[i].grade>=80){n4++;}else if(m[i].grade<100&&m[i].grade>=90){n5++;}else{n6++;}}printf("<60\t%d\t%.2f%%\n",n1,100*(float)n1/(float)n);printf("60-69\t%d\t%.2f%%\n",n2,100*(float)n2/(float)n);printf("70-79\t%d\t%.2f%%\n",n3,100*(float)n3/(float)n);printf("80-89\t%d\t%.2f%%\n",n4,100*(float)n4/(float)n);printf("90-99\t%d\t%.2f%%\n",n5,100*(float)n5/(float)n);printf("100\t%d\t%.2f%%\n",n6,100*(float)n6/(float)n); }void find(ST *m,int n){printf("Input the number you want to search:\n");int f,i;scanf("%d",&f);for(i=0;i<n;i++){if(m[i].num==f){printf("%d\t%s\t%d\n",m[i].num,m[i].name,m[i].grade);return ;}}printf("Not found!\n"); }void sortBysocre(ST *m,int n){printf("Sort in descending order by score:\n");ST temp;int i,j;for(i=0;i<n;i++){//printf("dddd");for(j=0;j<n-i-1;j++){if(m[j].grade<m[j+1].grade){temp=m[j];m[j]=m[j+1];//printf("dddd");m[j+1]=temp;}}}printStudent(m,n); }void sortBynum(ST *m,int n){printf("Sort in ascending order by number:\n");ST temp;int i,j;for(i=0;i<n;i++){//printf("dddd");for(j=0;j<n-i-1;j++){if(m[j].num>m[j+1].num){temp=m[j];m[j]=m[j+1];//printf("dddd");m[j+1]=temp;}}}printStudent(m,n); }void printStudent(ST *m,int n){int i;for(i=0;i<n;i++){printf("%d\t%s\t%d\n",m[i].num,m[i].name,m[i].grade);}}void print(void){printf("Management for Students' scores\n1.Input record\n2.Caculate total and average score of course\n3.Sort in descending order by score\n4.Sort in ascending order by score\n5.Sort in ascending order by number\n6.Sort in dictionary order by name\n7.Search by number\n8.Search by name\n9.Statistic analysis\n10.List record\n0.Exit\nPlease Input your choice:\n");}void sumAvr(ST *m,int n){int sum=0;int i;for(i=0;i<n;i++){sum+=m[i].grade;}float avr=(float)sum/(float)n;printf("sum=%d,aver=%.2f\n",sum,avr);}void input(ST *m,int n){printf("Input student's ID, name and score:\n");int i;for(i=0;i<n;i++){scanf("%d",&m[i].num); getchar();gets(m[i].name);scanf("%d",&m[i].grade);} }你可以自己修改一下,