实验9 数组学生成绩管理系统v3.0 下载本文

实验9 二维字符数组--学生成绩管理系统V2.0

实验目的:

1. 熟悉二维字符数组数组作函数参数,

2. 掌握字符串处理函数及模块化程序设计方法

实验题目:

某班有最多不超过30人(具体人数由键盘输入)参加某门课程

的考试,用一维数组 编程实现如下学生成绩管理:

1. 录入每个学生的学号、姓名和考试成绩; 2. 计算课程的总分和平均分; 3. 按成绩由高到低排出名次表; 4. 按姓名的字典顺序输出成绩表; 5. 按姓名查询学生排名及其考试成绩; #include #define N 30 #include #include

void main() {

int n,i;

long number[40]; char name[30][20]; float score[20];

void input(long number[40],char name[30][20],float score[20],int n); void sa(float score[20],int n);

void sb(long number[40],char name[30][20],float score[20],int n); void sc(long number[40],char name[30][20],float score[20],int n); void sd(long number[40],char name[30][20],float score[20],int n);

printf(\请输入学生人数(小于30人):\scanf(\

input(number,name,score,n);

printf(\for(i=0;i

printf(\第%d位学生的学号为:%ld,姓名为:%s,成绩为:%f\\n\

printf(\printf(\课程的总分和平均分:\\n\

sa(score,n);

printf(\printf(\成绩由高到低排序:\\n\

sb(number,name,score,n);

printf(\ sc(number,name,score,n);

printf(\ sd(number,name,score,n); }

void input(long number[40],char name[30][20],float score[20],int n) {

int i;

for(i=0;i

printf(\请输入第%d位学生的学号:\scanf(\

printf(\请输入第%d位学生的姓名:\ scanf(\

printf(\请输入第%d位学生的成绩:\ scanf(\ }

void sa(float score[20],int n) {

int i; float sum=0; for(i=0;i

sum=sum+score[i]; }

printf(\学生的总成绩为:%f\\n\printf(\学生的平均成绩为:%f\\n\

void sb(long number[40],char name[30][20],float score[20],int n) { int i,j;

char temp[20]; float temp1; long temp2;

for(i=1;i

{

for(j=0;j

if(score[j]

temp1=score[j]; score[j]=score[j+1]; score[j+1]=temp1; strcpy(temp,name[j]); strcpy(name[j],name[j+1]); strcpy(name[j+1],temp); temp2=number[j]; number[j]=number[j+1]; number[j+1]=temp2;

}

}

}

for(i=0;i

printf(\成绩第%d名学号:%ld,姓名:%s,成绩为:%f\\n\}

void sc(long number[40],char name[30][20],float score[20],int n) {

int i,j;

char temp[20]; float temp1; long temp2; for(i=0;i

for(j=i+1;j

if(strcmp(name[j],name[j-1])<0) {

temp1=score[j]; score[j]=score[j-1]; score[j-1]=temp1; strcpy(temp,name[j]); strcpy(name[j],name[j-1]); strcpy(name[j-1],temp); temp2=number[j]; number[j]=number[j-1]; number[j-1]=temp2;

}

printf(\按姓名的字典顺序输出的结果为:\\n\ for(i=0;i

printf(\第%d位学生的学号:%ld,姓名:%s,成绩为:%f\\n\

}

void sd(long number[40],char name[30][20],float score[20],int n) {

int i;

char sname[20];

void sb(long number[40],char name[30][20],float score[20],int n);

printf(\请输入要查询的学生姓名:\scanf(\

sb(number,name,score,n); }

for(i=0;i

if(strcmp(sname,name[i])==0)

printf(\查询的学生的名次为:%d,成绩为:%f\\n\}