题目:
代码:
#include <string.h>
#include <stdio.h>
void print_menu();
void word_log(int n);
void see(int n);
int max(int n);
void name_load(int n);
void score_load(int n);
char name[40][20] = {""};
int score[40] = {0};
int main(int argc, char const *argv[])
{
int menu = 0;
int n = 0;
while (1)
{
print_menu();
printf("请输入想要进行的操作:");
scanf("%d", &menu);
switch (menu)
{
case 1:
{
printf("请输入本次录入学生信息的人数:");
scanf("%d", &n);
word_log(n);
}
break;
case 2:
{
see(n);
}
break;
case 3:
{
int a = 0;
a = max(n);
printf("成绩最好的学生是%s,他/她成绩是%d\n", name[a], score[a]);
}
break;
case 4:
{
name_load(n);
}
break;
case 5:
{
score_load(n);
}
break;
case 0:
return 0;
default:
printf("操作输入有误,请重新输入\n");
}
}
return 0;
}
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 word_log(int n)
{
for (int i = 0; i < n; i++)
{
printf("请输入第%d个学生的姓名和成绩:", i + 1);
scanf("%s %d", &name[i], &score[i]);
}
}
void see(int n)
{
printf("学生和他/她的成绩为:\n");
for (int i = 0; i < n; i++)
{
printf("%d、%s:%d\n", i + 1, name[i], score[i]);
}
}
int max(int n)
{
int max = 0,b = 0;
for (int i = 0; i < n; i++)
{
if (max < score[i])
{
max = score[i];
b = i;
}
}
return b;
}
void name_load(int n)
{
int temp = 0;
char tempn[20] = {""};
for (int i = 1; i < n; i++)
{
for (int j = 0; j < n - i; j++)
{
if (strcmp(name[j], name[j + 1]) > 0)
{
temp = score[j];
score[j] = score[j + 1];
score[j + 1] = temp;
strcpy(tempn, name[j]);
strcpy(name[j], name[j + 1]);
strcpy(name[j + 1], tempn);
}
}
}
printf("姓名升序下的全部信息为:\n");
for (int i = 0; i < n; i++)
{
printf("%d、%s:%d\n", i + 1, name[i], score[i]);
}
}
void score_load(int n)
{
int temp = 0;
char tempn[20] = {""};
for (int i = 1; i < n; i++)
{
for (int j = 0; j < n - i; j++)
{
if (score[j] > score[j + 1])
{
temp = score[j];
score[j] = score[j + 1];
score[i + 1] = temp;
strcpy(tempn, name[j]);
strcpy(name[j], name[j + 1]);
strcpy(name[j + 1], tempn);
}
}
}
printf("成绩升序下的全部信息为:\n");
for (int i = 0; i < n; i++)
{
printf("%d、%s:%d\n", i + 1, name[i], score[i]);
}
}