1、#include#includecourse_name(int i) switch(i) case 1:printf(数学); break; case 2:printf(语文); break; case 3:printf(政治); break; case 4:printf(英语); break; xianshi(long *p1,int (*p2)100,int n,int m) int i,j; printf(nn); printf(编号 学号); for(i=1;i=m;i+) printf( ); course_name(i); printf(n); for(i=0;in;i+) pri
2、ntf(%d) %4ld,i,*(p1+i); for(j=0;jm;j+) printf( %3d,*(*(p2+i)+j); printf(n); printf(n); out();print2(int m) int i,j; printf(-提 示-n); for(i=1;i,i); course_name(i); printf(n-n);out() printf(nnnnnnn按任意键继续(退出请按Esc键).); /* if(getch()=27) exit(1); else clrscr(); */stu_zhongfen(int (*p2)100,int n,int m) int
3、 sum,i,j; for(i=0;in;i+) sum=0; for(j=0;jm;j+) sum=sum+*(*(p2+i)+j); *(*(p2+i)+m)=sum; input(long *p1,int (*p2)100,int n,int m) int i,j; for(i=0;in;i+) printf(n请输入第%d个学生的学号:,i+1); scanf(%ld,p1+i); for(j=0;jm;j+) printf(n请输入第%d门课程的成绩:,j+1); scanf(%d,*(p2+i)+j); printf(.输入完毕!n); out();edit(long *p1,in
4、t (*p2)100,int n,int m) long xuehao; int kecheng,fenshu,i,j; while(1) printf(请输入要修改成绩的学生的学号:n); scanf(%ld,&xuehao); for(i=0;i=n) printf(该学好不存在!请从新输入!n); else break; print2(m); printf(n请输入你要修改的课程编号n); scanf(%d,&kecheng); printf(n请输入修改后的分数:); scanf(%d,&fenshu); *(*(p2+i)+kecheng-1)=fenshu; printf(n.修改
5、成功.n); out(); /* delete(long *p1,int (*p2)100,int n) long xuehao; int i,j; printf(n请输入你要删除成绩的学生的学号:); scanf(%ld,&xuehao); for(i=0;in;i+) if(*(p1+i)=xuehao) break; for(j=i;jn-1;j+) *(p2+j)=*(p2+j)+1; *(p1+j0=*(p1+j)+1; printf(n删除成功!n); out(); */chaxun(long *p1,int (*p2)100,int n,int m) long xuehao; i
6、nt counter=1,j=0,i; while(1) printf(n请输入要查询的学生的学号:); scanf(%ld,&xuehao); for(i=0;i=n) printf(该学号不存在!请从新输入!n); else break; stu_zhongfen(p2,n,m); while(j*(*(p2+i)+m) counter+; j+; else j+; printf(n); printf(n 您要查询的学生信息如下:n); printf(n); printf( 课程名 分数n); for(j=0;jm;j+) printf( ); course_name(j+1); prin
7、tf( %4dn,*(*(p2+i)+j); printf(n 总分为:%3dn,*(*(p2+i)+m); printf( 班级排名为:%3dn,counter); printf(n); out();highestscore(int (*p2)100,int n,int m) int a10; int i,j,temp; printf(n); printf(n 课程 最高分n); for(j=0;jm;j+) for(i=1;in;i+) if(*(*(p2+0)+j)*(*(p2+i)+j) temp=*(*(p2+0)+j); *(*(p2+0)+j)=*(*(p2+i)+j); *(*
8、(p2+i)+j)=temp; printf( ); course_name(j+1); printf( %3dn,*(*(p2+0)+j); printf(n); out();stu_average(long *p1,int (*p2)100,int n,int m) int i,j; float average100; stu_zhongfen(p2,n,m); for(i=0;in;i+) averagei=*(*(p2+i)+m)/(float)m; printf(n); printf(n每个学生的平均分如下n); printf( 编号 学号 平均分n); for(i=0;in;i+)
9、 printf( %d %4ld %fn,i,*(p1+i),averagei); printf(nn); out();course_average(int (*p2)100,int n,int m) int a10; int i,j,sum; for(i=0;im;i+) sum=0; for(j=0;jn;j+) sum=sum+*(*(p2+j)+i); ai=sum; printf(n); printf(n每门课程的平均分如下:n); printf( 课程名 平均分n); for(i=0;im;i+) printf( ); course_name(i+1); printf( %fn,(
10、float)ai/m); printf(nn); out();course_jiangxu(int (*p2)100,int n,int m) int i,j,k,temp,a100; printf(nn); for(j=0;jm;j+) for(i=0;in;i+) ai=*(*(p2+i)+j); for(i=0;in-1;i+) for(k=1;kn;k+) if(aiak) temp=ai; ai=ak; ak=temp; printf( ); course_name(j+1); for(i=0;in;i+) printf( %3d ,ai); printf(n); printf(n)
11、; out();tongji(long *p1,int (*p2)100,int n,int m) int i,j=0,k,max,min,a100; print2(m); while(1) printf(n请输入课程代号:n); scanf(%d,&k); if(km) printf(你输入的课程代号不正确,请按照上面的提示从新输入!n); else break; while(1) printf(n请输入分数段:); scanf(%d%d,&min,&max); for(i=0;i=min&*(*(p2+i)+k-1)=max) aj=i; j+; if(j=0) printf(此分数段无学
12、生!请从新输入!n); else break; printf(n课程); course_name(k); printf(分数段%d-%d的学生信息如下:n,min,max); printf(学号 分数n); for(i=0;ij;i+) printf(%4ld %3dn,*(p1+ai),*(*(p2+ai)+k-1); out();score_jiangxu(int (*p2)100,int n,int m) int i,j,k,temp,a100; float average100; stu_zhongfen(p2,n,m); printf(nn); for(i=0;in;i+) ai=*
13、(*(p2+i)+m); averagei=*(*(p2+i)+m)/(float)m; for(i=0;in-1;i+) for(k=1;kn;k+) if(aiak) temp=ai; ai=ak; ak=temp; printf(排名 总分 平均分n); for(i=0;in;i+) printf(%d) %3d %fn,i+1,ai,averagei); printf(n); out();print1() system(cls); printf(1.浏览学生信息 2.修改学生信息n); printf(3.删除学生信息 4.查询学生成绩和排名n); printf(5.查询每个学生的平均分
14、 6.查询每门课程的平均分n); printf(7.查询每门课程最高分 8.降序排列学生总分和平均分n); printf(9.降序排列每门课程的分数 10.按课程名和分数段进行统计n); printf(请选择:);main() int m,n,i; long *p1,num100; /*数组元素地址:*(指针变量+行下标)+列下标*/ int (*p2)100,score100100; printf(n请输入学生总数:); scanf(%d,&n); printf(n请输入课程总数:); scanf(%d,&m); p1=num; p2=score; printf(n 现在请输入学号和成绩n)
15、; print2(m); input(p1,p2,n,m); while(1) print1(); scanf(%d,&i); if(i10) printf(.输入错误!.); else switch(i) case 1: xianshi(p1,p2,n,m); break; case 2: edit(p1,p2,n,m); break; case 4: chaxun(p1,p2,n,m); break; case 5: stu_average(p1,p2,n,m); break; case 6: course_average(p2,n,m); break; case 7: highestscore(p2,n,m); break; case 8: score_jiangxu(p2,n,m); break; case 9: course_jiangxu(p2,n,m); break; case 10: tongji(p1,p2,n,m); break;