课堂笔记思维导图
课后作业
完成学生管理系统
1> 使用菜单完成
2> 有学生的信息录入功能:输入学生个数,并将学生的姓名、分数录入
3> 查看学生信息:输出所有学生姓名以及对应的分数
4> 求出学习最好的学生信息:求最大值
5> 按姓名将所有学生进行升序排序
6> 按成绩将所有学生进行升序排序
要求每个功能使用函数完成
#include <stdio.h>
int index = 0; //数组长度尾部下标
int info();
void insertInfo(char name[][10], int score[]);
void selectInfo(char name[][10], int score[]);
void maxScore(char name[][10], int score[]);
void sortByName(char name[][10], int score[]);
void sortByScore(char name[][10], int score[]);
int main() {
char name[50][10] = {""};
int score[50] = { 0 };
int flag = 0;
printf("欢迎使用学生管理系统\n");
flag = info();
while (1) {
switch (flag) {
case 1: insertInfo(name,score);
break;
case 2: selectInfo(name, score);
break;
case 3: maxScore(name, score);
break;
case 4: sortByName(name, score);
break;
case 5: sortByScore(name, score);
break;
case 0: return 0;
break;
default: printf("输入错误,请重新输入\n");
}
flag=info();
}
return 0;
}
int info() {
int flag = 0;
printf("录入信息请输入:1\n");
printf("查看学生信息请输入:2\n");
printf("学习成绩最好的学生信息请输入:3\n");
printf("按姓名进行升序排序请输入:4\n");
printf("按成绩进行升序排序请输入:5\n");
printf("退出请输入:0\n");
scanf("%d", &flag);
return flag;
}
void insertInfo(char name[][10], int score[]) {
int count = 0;
printf("请输入要添加的学生数量:");
scanf("%d", &count);
for ( int i = 0; i<count; i++)
{
printf("请输入第%d个学生的姓名\n", i + 1);
scanf("%s", name[index]);
printf("请输入第%d个学生的成绩\n", i + 1);
scanf("%d", &score[index]);
index++;
}
}
void selectInfo(char name[][10], int score[]) {
for ( int i = 0; i < index; i++)
{
printf("第%d个学生的姓名是:%s,成绩是:%d\n",i+1,name[i],score[i]);
}
}
void maxScore(char name[][10], int score[]) {
int maxi = 0,maxScore=0;
for (int i = 0; i < index; i++)
{
if (score[i] > maxScore) { //当前下标得值,超过最大值就替换
maxScore = score[i];
maxi = i;
}
}
printf("成绩最高的学生的姓名是:%s,成绩是:%d\n", name[maxi], score[maxi]);
}
void sortByName(char name[][10], int score[]) {
char flag[10] = { "" };
int temp = 0;
for (int i = 0; i < index-1; i++)
{
for (int j = 0; j < index-(i+1); j++)
{
if (strcmp(name[j], name[j + 1]) > 0) {
strcpy(flag, name[j]); //姓名交换
strcpy(name[j], name[j+1]);
strcpy(name[j+1], flag);
temp = score[j]; //分数交换
score[j] = score[j + 1];
score[j + 1] = temp;
}
}
}
}
void sortByScore(char name[][10], int score[]) {
char flag[10] = { "" };
int temp = 0;
for (int i = 0; i < index - 1; i++)
{
for (int j = 0; j < index - (i + 1); j++)
{
if ( score[j]> score[j+1]) {
strcpy(flag, name[j]); //姓名交换
strcpy(name[j], name[j + 1]);
strcpy(name[j + 1], flag);
temp = score[j]; //分数交换
score[j] = score[j + 1];
score[j + 1] = temp;
}
}
}
}