资源描述
实验7 数组——学生成绩管理系统V1.0
实验目的:
1. 熟悉一维数组编程
2. 掌握排序,查找,统计分析等常用方法
实验题目:
某班有最多不超过30人(具体人数由键盘输入)参加某门课程的考试,用一维数组 编程实现如下学生成绩管理:
1. 录入每个学生的学号和考试成绩;
2. 计算课程的总分和平均分;
3. 按成绩由高到低排出名次表;
4. 按学号由小到大排除成绩表;
5. 按学号查询学生排名及其考试成绩;
6. 按优秀(90~100),良好(80~89),中等(70~79),及格(60~69),不及格(0~59)5个类别,统计每个类别的人数以及所占的百分比;
7. 输出每个学生的学号,考试成绩,课程总分和平均分.
程序如下:
#include<stdio。h>
#define N 30
void main()
{
int i,n;
long number[N];
float score[N];
void input(long number[],float score[],int n);
void sa(float score[],int n);
void sb(long number[],float score[],int n);
void sc(long number[],float score[],int n);
void sd(long number[],float score[],int n);
void se(float score[],int n);
void sf(long number[],float score[],int n);
printf(”输入学生人数:”);
scanf(”%d",&n);
input(number,score,n);
for(i=0;i〈n;i++)
printf(”学号:%ld,成绩:%f\n”,number[i],score[i]);
sa(score,n);
sb(number,score,n);
sc(number,score,n);
sd(number,score,n);
se(score,n);
sf(number,score,n);
}
void input(long number[],float score[],int n)
{
int i;
for(i=0;i<n;i++)
{
printf("请输入第%d位学号和成绩:如(000000,90.0):”,i+1);
scanf(”%ld,%f”,&number[i],&score[i]);
}
}
void sa(float score[],int n)
{
int i;
float sum=0;
for(i=0;i<n;i++)
{
sum=sum+score[i];
}
printf(”课程的总分为:%f\n”,sum);
printf(”课程的平均分为:%f\n”,sum/n);
}
void sb(long number[],float score[],int n)
{
int i,j;
float temp;
long m;
for(i=1;i〈n;i++)
for(j=0;j<n—i;j++)
if(score[j]<score[j+1])
{
temp=score[j];
m=number[j];
score[j]=score[j+1];
number[j]=number[j+1];
score[j+1]=temp;
number[j+1]=m;
}
for(i=0;i<n;i++)
printf(”成绩第%d名成绩为:%ld,%f\n”,i+1,number[i],score[i]);
}
void sc(long number[],float score[],int n)
{
int i,j;
float temp;
long m;
for(i=1;i〈n;i++)
for(j=0;j<n-i;j++)
if(number[j]〉number[j+1])
{
m=number[j];
temp=score[j];
number[j]=number[j+1];
score[j]=score[j+1];
number[j+1]=m;
score[j+1]=temp;
}
for(i=0;i<n;i++)
printf("学号由小到大为:%ld,%f\n",number[i],score[i]);
}
void sd(long number[],float score[],int n)
{
int i,j;
float temp;
long m,sn;
for(i=1;i<n;i++)
for(j=0;j〈n-i;j++)
if(score[j]<score[j+1])
{
temp=score[j];
m=number[j];
score[j]=score[j+1];
number[j]=number[j+1];
score[j+1]=temp;
number[j+1]=m;
}
printf(”请输入要查询的学生学号:”);
scanf(”%ld",&sn);
for(i=0;i<n;i++)
{
if(number[i]==sn)
printf(”查询学生的学号%ld,成绩为%f\n",sn,score[i]);
}
}
void se(float score[],int n)
{
int a=0,b=0,c=0,d=0,e=0,i;
for(i=0;i<n;i++)
{
switch((int)score[i]/10)
{
case 10:
case 9:a=a+1;break;
case 8:b=b+1;break;
case 7:c=c+1;break;
case 6:d=d+1;break;
default:e=e+1;
}
}
printf("优秀(90~100)的人数为:%d\n”,a);
printf("优秀率:%d%%\n",(100*a)/n);
printf(”良好(80~89)的人数为:%d\n”,b);
printf("良好率:%d%%\n",(100*b)/n);
printf(”中等(70~79)的人数为:%d\n",c);
printf("中等率:%d%%\n”,(100*c)/n);
printf(”及格(60~69)的人数为:%d\n",d);
printf(”及格率:%d%%\n”,(100*d)/n);
printf("不及格(0~59)的人数为:%d\n",e);
printf(”不及格率:%d%%\n",(100*e)/n);
}
void sf(long number[],float score[],int n)
{
int i;
for(i=0;i〈n;i++)
printf(”学生学号为%ld的成绩是:%f\n",number[i],score[i]);
void sa(float score[],int n);
sa(score,n);
}
展开阅读全文