学生成绩管理系统 求各位指教一下
学生成绩管理系统,源代码没有错误,但是每一个模块都运行得不到想要的结果,希望各位帮忙 #include<stdio.h>
#include<stdlib.h>
#define N 40
int ReadScore(float score[],long num[]);
void LinSearch(long num[],float score[],int n);
void DataSort(float score[],int n);
void NumberSort(long num[],float score[],int n);
void Average(float score[],int n);
void Statistics(float[],int n);
void ListRecord(long num[],float score[],int n);
int main()
{
int m=0;
int n=0;
float score[N];
long num[N];
printf("1.录入每个学生的学好和考试成绩。\n");
printf("2.计算课程的总分和平均分。\n");
printf("3.按成绩由高到低排出名次表。\n");
printf("4.按学号由小到大排出成绩表。\n");
printf("5.按学号查询学生排名及其考试成绩。\n");
printf("6.按优秀(90~100)、良好(80~89)、中等(70~79)、及格(60~69)、不及格(0~59)5个类别,统计每个类别的人数及其课程总分和平均分。\n");
printf("7.输出每个学生的学号、考试成绩以及课程总分和平均分。\n");
printf("0.退出。\n");
n=ReadScore(score,num);
printf("请输入你的选择:\n");
scanf("%d",&m);
switch(m)
{
case 2:Average(score,n);
break;
case 3:DataSort(score,n);
break;
case 4:NumberSort(num, score,n);
break;
case 5:LinSearch(num,score,n);
break;
case 6:Statistics(score,n);
break;
case 7:ListRecord(num,score,n);
break;
case 0:printf("结束程序。\n");
exit(0);
default:printf("没有这个选择!\n");
}
return 0;
}
int ReadScore(float score[],long num[])/*id 和学生考试成绩 */
{
int i=-1;
do{
i++;
printf("input student's id and score:");
scanf("%ld%d",&num[i],&score[i]);
}while (num[i]>0&&score[i]>=0);
return i;
}
void Average(float score[],int n)
{
int i;
float sum=0;
for(i=0;i<n;i++)
{
sum+=score[i];
}
printf("sum=%.0f,aver=%.2f\n",sum,sum/n);
}
void DataSort(float score[],int n)
{
int i,j,temp;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(score[j]>score[i])
{
temp=score[i];
score[j]=score[i];
score[i]=temp;
}
}
}
}
void NumberSort(long num[],float score[],int n)
{
int i,j,k;
float temp1;
long temp2;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if (num[j]<num[k])k=j;
}
if(k!=j)
{
temp1=score[k];score[k]=score[i];score[i]=temp1;
temp2=num[k];num[k]=num[i];num[i]=temp2;
}
}
}
void LinSearch(long num[],float score[],int n)
{
int i;
long number;
printf("输入你想查询的学号:\n");
scanf("%ld",&number);
for(i=0;i<n;i++)
{
if (num[i]==number)
{
printf("%1d\t%.0f\n",num[i],score[i]);
}
}
printf("查询不到该信息!\n");
}
void Statistics(float score[],int n)
{
int i, total,t[5]={0,0,0,0,0};
for(i=0;i<n;i++)
{
if(score[i]>0&&score[i]<60)
t[0]++;
else if(score[i]<70)
t[1]++;
else if(score[i]<80)
t[2]++;
else if(score[i]<90)
t[3]++;
else if(score[i]<=100)
t[4]++;
}
printf("成绩优秀占%.2d%\n",t[4]/n*100);
printf("成绩良好占%.2d%\n",t[3]/n*100);
printf("成绩中等占%.2d%\n",t[2]/n*100);
printf("成绩及格占%.2d%\n",t[1]/n*100);
printf("成绩不及格占%.2d%\n",t[0]/n*100);
}
void ListRecord(long num[],float score[],int n)
{
int i;
for(i=0;i<n;i++)
{
printf("%ld\t%.0f\n",num[i],score[i]);
}
}