本人拙作-------学生成绩管理系统
假设一班有10名学生,一学期有5门课程,编写c程序实现如下功能:
(1)录入每名学生的各科成绩
(2)求出每名学生的平均成绩和总分
(3)求每门课程的平均分、及格率、最高成绩和最低成绩
(4)输出总成绩前5名的学生学号、各科成绩和总分
(5)输出各科补考学生的学号和成绩
#include <stdio.h>
#include <math.h>
void input ( int a [][8] )
{
int m,n;
printf ("输入学号及成绩:\n");
for (m=0; m<10; m++ )
for (n=0; n<6; n++)
scanf ("%d",&a[m][n]);
}
void average (int a[][8])
{
int m,n,s=0;
for (m=0; m<10; m++ )
{ for (n=1; n<6; n++)
{
s= s + a[m][n];
}
a[m][6]= s/5;
a[m][7]= s;
s=0;
}
}
void everysubject (int a[][8])
{
int m,n,s=0,k=0,max=0,min=200;
int b[5],ma[5],mi[5];
float d[5];
for (m=1; m<6; m++ )
{ for (n=0; n<10; n++)
{s= a[n][m]+s;
if (a[n][m] >= 60 )
k++;
if (a[n][m]>max)
max = a[n][m];
if (a[n][m]<min)
min = a[n][m];
}
b[m-1] = s/10;
d[m-1] = k/10.0;
ma[m-1] = max;
mi[m-1] = min;
s=0;
k=0;
max=0;
min=200;
}
printf ("每一门课程的平均分:\n");
for(m=0;m<5;m++)
printf (" %d ",b[m]);
printf("\n");
printf ("每一门课程的及格率:\n");
for(m=0;m<5;m++)
printf (" %f ",d[m]);
printf("\n");
printf ("每一门课程的最高分与最低分:\n");
for(m=0;m<5;m++)
printf (" %d %d \n", ma[m],mi[m]);
printf("\n");
}
void firstfive (int a[][8])
{
int b[10] = {0,1,2,3,4,5,6,7,8,9};
int i,j,t;
for (i=0;i<10;i++)
for (j=1+i;j<10;j++)
{
if(a[b[j]][7] > a[b[i]][7])
{
t = b[j];b[j]=b[i];b[i]=t;
}
}
printf ("总分前五名的学生:\n");
for (i=0;i<5;i++)
{
for (j=0;j<8;j++)
{
printf (" %d ",a[b[i]][j]);
}
printf("\n");
}
}
void reexam (int a[][8])
{
int i,j;
printf ("挂科的名单:\n");
for (i=1;i<6;i++)
{ printf ("第 %d 课程不及格的名单:\n",i);
printf ("学号-----------成绩:\n");
for (j=0;j<10;j++)
{
if(a[j][i]<60)
printf ("%d-----------%d \n",a[j][0],a[j][i]);
}
}
}
void putout (int a[][8])
{
int m,n;
printf("**学号****课程一*****课程二****课程三****课程四*****课程五****平均分*****总分*****\n");
for (m=0; m<10; m++ )
{ for (n=0; n<8; n++)
printf(" %d ",a[m][n]);
printf ("\n");
}
printf ("\n");
}
main()
{
int a[10][8];
char c;
int i;
input (a);
average(a);
do
{
for(i=0;i<20;i++)
printf("*");
printf ("学生成绩管理系统--the case is made by yangqi!");
for(i=0;i<30;i++)
printf("*");
printf("\n");
printf("\t 1: 输出各学生的成绩,平均成绩,及总分:\n");
printf("\t 2: 输出每门课程的平均分、及格率、最高成绩和最低成绩:\n");
printf("\t 3: 输出总成绩前5名的学生学号、各科成绩和总分:\n");
printf("\t 4: 输出各科补考学生的学号和成绩\n");
printf("\t 5: 退出\n");
printf("\t请选择输入选项[1\\2\\3\\4\\5]:\n");
do
{
c=getchar();
}while(c!='1'&&c!='2'&&c!='3'&&c!='4'&&c!='5');
getchar();
switch(c)
{ case '1': putout (a); break;
case '2': everysubject (a); break;
case '3': firstfive (a); break;
case '4': reexam (a); break;
case '5': exit(0);
}
printf(" 按任意键返回主菜单:\n");
getchar();
}while(1);
}
如有什么不足之处,还望大侠们不吝赐教!!!