#include <stdio.h>
#include <string.h>
//菜单初始化函数
void print_menu()
{
printf("\t\t=====1.信息录入=====\n");
printf("\t\t=====2.查看学生信息=====\n");
printf("\t\t=====3.最好的学生=====\n");
printf("\t\t=====4.按姓名升序=====\n");
printf("\t\t=====5.按成绩升序=====\n");
printf("\t\t=====0.退出=====\n");
}
//录入学生成绩函数
void luru(char student[][20],int n,int score[])
{
for(int i=0;i<n;i++)
{
printf("请输入第%d个学生的姓名:",i+1);
scanf("%s",student[i]);
printf("请输入第%d个学生的成绩:",i+1);
scanf("%d",&score[i]);
}
}
//查看学生成绩函数
void see(char student[][20],int n,int score[])
{
for(int i=0;i<n;i++)
{
printf("第%d个学生的姓名为:%s,成绩为:%d\n",i+1,student[i],score[i]);
}
}
//查看成绩最好的学生
void best(char student[][20],int n,int score[])
{
int max=score[0];
int maxn=0;
for(int i=1;i<n;i++)
{
if(score[i]>max)
{
max=score[i];
maxn=i;
}
}
printf("成绩最好的学生为:%s,成绩为:%d\n",student[maxn],score[maxn]);
}
//按姓名升序排序函数
void xmsx(char student[][20],int n,int score[])
{
printf("按姓名升序排后:\n");
char temp[20]="";
int sc=0;
for(int i=1;i<n;i++)
{
for(int j=0;j<n-i;j++)
{
if(strcmp(student[j],student[j+1])>0)
{
strcpy(temp,student[j]); //姓名下标交换
sc=score[j]; // 成绩下标交换
strcpy(student[j],student[j+1]);
score[j]=score[j+1];
strcpy(student[j+1],temp);
score[j+1]=sc;
}
}
}
for(int i=0;i<n;i++) //输出排序后学生表信息
{
printf("第%d个学生的姓名为:%s,成绩为:%d\n",i+1,student[i],score[i]);
}
}
//按成绩升序排序
void cjsx(char student[][20],int n,int score[])
{
printf("按成绩升序排后:\n");
char temp[20]="";
int sc=0;
for(int i=1;i<n;i++)
{
for(int j=0;j<n-i;j++)
{
if(score[j]>score[j+1])
{
str
cpy(temp,student[j]);
sc=score[j];
strcpy(student[j],student[j+1]);
score[j]=score[j+1];
strcpy(student[j+1],temp);
score[j+1]=sc;
}
}
}
for(int i=0;i<n;i++) //输出排序后学生表信息
{
printf("第%d个学生的姓名为:%s,成绩为:%d\n",i+1,student[i],score[i]);
}
}
int main()
{
int menu=0;
char student[100][20]={""};
int score[100]={0};
int n=0;
while(1){
print_menu();
printf("请输入:");
scanf("%d",&menu);
getchar();
switch(menu){
case 1:
{
printf("请输入学生个数: ");
scanf("%d",&n);
luru(student,n,score);
}
break;
case 2:
{
see(student,n,score);
}
break;
case 3:
{
best(student,n,score);
}
break;
case 4:
{
xmsx(student,n,score);
}
break;
case 5:
{
cjsx(student,n,score);
}
break;
case 0: goto END; //结束
}
}
END:
return 0;
}
效果图:
思维导图