📄 student.txt
字号:
学生考试成绩统计管理系统2007-02-14 02:11/* 编写程序完成某班学生考试成绩的统计管理,包括成绩输入函数、成绩显示函数,
并计算每位同学的总分、平均分,对成绩排名输出。*/
#include <stdio.h> /*标准输入、输出函数库*/
#include <string.h> /*字符串处理函数库*/
#include <stdlib.h> /*整数和字符串的转换函数*/
#define N 10 /*宏定义,第7章会介绍。设定班里学生的个数*/
/*学生考试成绩的统计管理主菜单*/
void main_mun();
/*输入学生的成绩*/
void input();
/*显示学生的成绩*/
void output();
/*计算学生的平均成绩*/
void average();
/*计算学生的总成绩*/
void sum_score();
/*对学生的成绩进行排名*/
void sort();
char student[N+1][12]={"王非","李丽","刘红","张伟","陈雷","赵丹","罗冰","钱惠云","孙杨","周正","差无此人"}; /*用来记录学生的姓名*/
float score[N][4]; /*用来记录学生的各门成绩(数学、语文、英语、政治)*/
float aver[N]; /*用来记录学生的平均成绩*/
float sum_sc[N]; /*用来记录学生的总成绩*/
int sor[N]; /*用来记录每个学生排名情况*/
int main()
{
int in; /*输入的选择转换成整数*/
int i,j; /*程序循环所用变量*/
char select[6]; /*用于主菜单选择的字符*/
for (i=0; i<N; i++) /*对学生成绩进行初始化*/
for (j=0; j<4; j++)
score[i][j]=0.00;
printf("学生考试成绩的统计管理\n");
main_mun();
gets(select);
while ((strcmp(select,"q")!=0)&&(strcmp(select,"Q")!=0))
{
in=atoi(select); /*将输入的字符串转换成整数*/
if( in != 0)
{
switch (in)
{
case 1:
{
input();
break;
}
case 2:
{
output();
break;
}
case 3:
{
average();
break;
}
case 4:
{
sum_score();
break;
}
case 5:
{
sort();
break;
}
default:
printf("输入的选择有错,请重输!\n");
}
main_mun();
}
gets(select);
}
printf("管理系统结束!!\n");
return 0;
}
/*学生考试成绩的统计管理主菜单*/
void main_mun()
{
printf("1: 输入学生的成绩\n");
printf("2: 显示学生的成绩\n");
printf("3: 计算学生的平均成绩\n");
printf("4: 计算学生的总成绩\n");
printf("5: 根据学生成绩排名次\n");
printf("请输入你的选择:(q(Q)退出)\n");
}
/*输入学生的成绩*/
void input()
{
float sc[4]; /*输入成绩的中间变量*/
int number; /*表示学号*/
int flag=0; /*输入成绩是否有误的标志*/
int i; /*循环控制变量*/
printf("输入学生的成绩:\n");
printf("输入学号:\n");
scanf("%d",&number);
while((number<0)||(number>N))
{
printf("输入学号有误!!!.\n");
return;
}
printf("输入学生%s的成绩\n",student[number]);
printf("数学、语文、英语、政治\n");
scanf("%f%f%f%f",&sc[0],&sc[1],&sc[2],&sc[3]);
getchar();
/*判断成绩输入是否越界*/
for (i=0; i<4; i++)
if ((sc[i]>100.00)||(sc[i]<0.00))
{
flag=1;
printf("输入成绩有误!!\n");
return;
}
/*成绩未越界后,进行赋值*/
for (i=0; i<4; i++)
score[number][i]=sc[i];
}
/*显示学生的成绩*/
void output()
{
int i; /*循环控制变量*/
for(i=0;i<N;i++)
{
printf("输出%s各门成绩:\n数学、语文、英语、政治\n",student[i]);
printf("%.2f %.2f %.2f %.2f\n\n",score[i][0],score[i][1],score[i][2],score[i][3]);
}
}
/*计算学生的平均成绩*/
void average()
{
float sc=0.00; /*中间变量*/
int i,j; /*循环控制变量*/
for (j=0; j<N; j++)
{
sc=0.0;
for (i=0; i<4; i++)
sc+=score[j][i];
aver[j]=sc/4;
printf("学生%s的平均成绩是:%.2f\n",student[j],aver[j]);
}
}
/*计算学生的总成绩*/
void sum_score()
{
int i,j; /*循环控制变量*/
printf("输出学生的总成绩:\n");
for (j=0; j<N; j++)
{
sum_sc[j]=0;
for (i=0; i<4; i++)
sum_sc[j]+=score[j][i];
printf("学生%s的总成绩是:%.2f\n",student[j],sum_sc[j]);
}
}
/*对学生的成绩进行排名,以平均成绩为例*/
void sort()
{
int i,j,temp,location; /*循环控制变量*/
float max,sc; /*比较用中间变量*/
float aver[N];
int flag;/*排序是否交换的标志*/
int sor[N];/*记录排序的位置*/
for (j=0; j<N; j++)
{
sor[j]=j;
sc=0.0;
for (i=0; i<4; i++)
sc+=score[j][i];
aver[j]=sc/4;
}
for (i=0; i<N; i++) /*对学生平均成绩进行排序*/
{
flag=0;
max=aver[i];
location=i;
for (j=i+1; j<N; j++)
{
if (aver[j]>max)
{
max=aver[j];
flag=1;
location=j;
}
}
if(flag==1)
{
aver[location]=aver[i];
aver[i]=max;
temp=sor[i];
sor[i]=sor[location];
sor[location]=temp;
}
}
printf("排序后的结果是:\n");
for(i=0;i<N;i++)
{
printf("第%d名 学号%d 姓名%s",(i+1),sor[i],student[sor[i]]);
printf("%f\n",aver[i]);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -