实验9 二维字符数组--学生成绩管理系统V2.0
实验目的:
1. 熟悉二维字符数组数组作函数参数,
2. 掌握字符串处理函数及模块化程序设计方法
实验题目:
某班有最多不超过30人(具体人数由键盘输入)参加某门课程
的考试,用一维数组 编程实现如下学生成绩管理:
1. 录入每个学生的学号、姓名和考试成绩; 2. 计算课程的总分和平均分; 3. 按成绩由高到低排出名次表; 4. 按姓名的字典顺序输出成绩表; 5. 按姓名查询学生排名及其考试成绩; #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\}