一、思维导图二、课后习题#includemyhead.h #define Max_Stu 100 //最大学生数 //函数声明 //学生信息录入函数 void Enter_stu(int *Num_Stu,char Stu_name[][50],int Stu_score[]); //查看学生信息 void Print_stu(int Num_Stu,char Stu_name[][50],int Stu_score[]); //求出成绩最好的学生的成绩 void Best_Stu(int Num_Stu,char Stu_name[][50],int Stu_score[]); //按姓名升序排序 void Sort_name(int Num_Stu,char Stu_name[][50],int Stu_score[]); //按成绩对学生升序排序 void Sort_score(int Num_Stu,char Stu_name[][50],int Stu_score[]); /**********************主函数*************************/ int main(int argc, const char *argv[]) { printf(\t\t************学生管理系统************\n); printf(\t\t1、 录入学生信息 \n); printf(\t\t2、 查看学生信息 \n); printf(\t\t3、输出成绩最好的学生 \n); printf(\t\t4、按姓名对学生排序 \n); printf(\t\t5、按成绩对学生排序 \n); printf(\t\t0、 退出 \n); //定义二维字符数组存放学生姓名 //定义一维数组存放学生成绩 char Stu_name[Max_Stu][50]; int Stu_score[Max_Stu]; int Num_Stu 0; //初始化录入学生人数 //菜单 int menu 0; do { printf(请输入选项); scanf(%d,menu); getchar(); //多分支选择执行对应功能 switch(menu) { case 1://录入学生信息 //调用信息录入函数 Enter_stu(Num_Stu,Stu_name,Stu_score); break; case 2://查看学生信息 Print_stu(Num_Stu,Stu_name,Stu_score); break; case 3://求成绩最高的学生信息 Best_Stu(Num_Stu,Stu_name,Stu_score); break; case 4://按姓名升序排序 Sort_name(Num_Stu,Stu_name,Stu_score); break; case 5://按成绩对学生升序排序 Sort_score(Num_Stu,Stu_name,Stu_score); case 0://退出 break; default: printf(输入错误请重新输入\n); break; } } while(menu !0); return 0; } //学生信息录入函数 void Enter_stu(int* Num_Stu,char Stu_name[][50],int Stu_score[]) { //提示输入学生个数作为参数传给录入函数 printf(请输入录入学生人数); int NUM *Num_Stu; scanf(%d,Num_Stu); getchar(); //循环输入学生姓名和成绩 for(int iNUM;i *Num_StuNUM;i) { printf(请输入第%d个学生姓名,i1); scanf(%s,Stu_name[i]); printf(请输入第%d个学生成绩,i1); scanf(%d,Stu_score[i]); putchar(10); } *Num_Stu NUM; printf(录入成功\n\n); } //查看学生信息 void Print_stu(int Num_Stu,char Stu_name[][50],int Stu_score[]) { printf(学生信息如下\n); //循环打印学生信息 for(int i0;i Num_Stu;i) { printf(姓名%s分数%d\n,Stu_name[i],Stu_score[i]); } putchar(10); } //求出成绩最好的学生的成绩 void Best_Stu(int Num_Stu,char Stu_name[][50],int Stu_score[]) { int max_score -1; //定义最大成绩容器 int index -1; //记录学生数组下标 //循环比较学生成绩 for(int i0;iNum_Stu;i) { if(Stu_score[i] max_score) { max_score Stu_score[i]; index i; } } //判断是否有误 if(index ! -1) printf(成绩最高的学生姓名%s分数%d\n,Stu_name[index],Stu_score[index]); else printf(没有学生信息记录\n); putchar(10); } //按姓名升序排序 void Sort_name(int Num_Stu,char Stu_name[][50],int Stu_score[]) { //定义字符数组替换数组 //定义分数替换容器 char tempName[50]; int tempScore; //循环比较并排序 for(int i 0;iNum_Stu-1;i) { for(int j 0;jNum_Stu -i-1;j) { if(strcmp(Stu_name[j],Stu_name[j1]) 0) { //替换姓名位置 strcpy(tempName,Stu_name[j]); strcpy(Stu_name[j],Stu_name[j1]); strcpy(Stu_name[j1],tempName); //替换分数位置 tempScore Stu_score[j]; Stu_score[j] Stu_score[j1]; Stu_score[j1] tempScore; } } } //打印排序后结果 printf(学生按姓名排序后的结果\n); for(int i0;iNum_Stu;i) { printf(姓名%s分数%d\n,Stu_name[i],Stu_score[i]); } putchar(10); } //按成绩对学生升序排序 void Sort_score(int Num_Stu,char Stu_name[][50],int Stu_score[]) { //定义字符数组替换数组 //定义分数替换容器 char tempName[50]; int tempScore; //循环比较并排序 for(int i 0;iNum_Stu-1;i) { for(int j 0;jNum_Stu -i-1;j) { if(Stu_score[j] Stu_score[j1]) { //替换姓名位置 strcpy(tempName,Stu_name[j]); strcpy(Stu_name[j],Stu_name[j1]); strcpy(Stu_name[j1],tempName); //替换分数位置 tempScore Stu_score[j]; Stu_score[j] Stu_score[j1]; Stu_score[j1] tempScore; } } } //打印排序后结果 printf(学生按分数排序后的结果\n); for(int i0;iNum_Stu;i) { printf(姓名%s分数%d\n,Stu_name[i],Stu_score[i]); } putchar(10); }
C基础 8
发布时间:2026/5/27 4:16:43
一、思维导图二、课后习题#includemyhead.h #define Max_Stu 100 //最大学生数 //函数声明 //学生信息录入函数 void Enter_stu(int *Num_Stu,char Stu_name[][50],int Stu_score[]); //查看学生信息 void Print_stu(int Num_Stu,char Stu_name[][50],int Stu_score[]); //求出成绩最好的学生的成绩 void Best_Stu(int Num_Stu,char Stu_name[][50],int Stu_score[]); //按姓名升序排序 void Sort_name(int Num_Stu,char Stu_name[][50],int Stu_score[]); //按成绩对学生升序排序 void Sort_score(int Num_Stu,char Stu_name[][50],int Stu_score[]); /**********************主函数*************************/ int main(int argc, const char *argv[]) { printf(\t\t************学生管理系统************\n); printf(\t\t1、 录入学生信息 \n); printf(\t\t2、 查看学生信息 \n); printf(\t\t3、输出成绩最好的学生 \n); printf(\t\t4、按姓名对学生排序 \n); printf(\t\t5、按成绩对学生排序 \n); printf(\t\t0、 退出 \n); //定义二维字符数组存放学生姓名 //定义一维数组存放学生成绩 char Stu_name[Max_Stu][50]; int Stu_score[Max_Stu]; int Num_Stu 0; //初始化录入学生人数 //菜单 int menu 0; do { printf(请输入选项); scanf(%d,menu); getchar(); //多分支选择执行对应功能 switch(menu) { case 1://录入学生信息 //调用信息录入函数 Enter_stu(Num_Stu,Stu_name,Stu_score); break; case 2://查看学生信息 Print_stu(Num_Stu,Stu_name,Stu_score); break; case 3://求成绩最高的学生信息 Best_Stu(Num_Stu,Stu_name,Stu_score); break; case 4://按姓名升序排序 Sort_name(Num_Stu,Stu_name,Stu_score); break; case 5://按成绩对学生升序排序 Sort_score(Num_Stu,Stu_name,Stu_score); case 0://退出 break; default: printf(输入错误请重新输入\n); break; } } while(menu !0); return 0; } //学生信息录入函数 void Enter_stu(int* Num_Stu,char Stu_name[][50],int Stu_score[]) { //提示输入学生个数作为参数传给录入函数 printf(请输入录入学生人数); int NUM *Num_Stu; scanf(%d,Num_Stu); getchar(); //循环输入学生姓名和成绩 for(int iNUM;i *Num_StuNUM;i) { printf(请输入第%d个学生姓名,i1); scanf(%s,Stu_name[i]); printf(请输入第%d个学生成绩,i1); scanf(%d,Stu_score[i]); putchar(10); } *Num_Stu NUM; printf(录入成功\n\n); } //查看学生信息 void Print_stu(int Num_Stu,char Stu_name[][50],int Stu_score[]) { printf(学生信息如下\n); //循环打印学生信息 for(int i0;i Num_Stu;i) { printf(姓名%s分数%d\n,Stu_name[i],Stu_score[i]); } putchar(10); } //求出成绩最好的学生的成绩 void Best_Stu(int Num_Stu,char Stu_name[][50],int Stu_score[]) { int max_score -1; //定义最大成绩容器 int index -1; //记录学生数组下标 //循环比较学生成绩 for(int i0;iNum_Stu;i) { if(Stu_score[i] max_score) { max_score Stu_score[i]; index i; } } //判断是否有误 if(index ! -1) printf(成绩最高的学生姓名%s分数%d\n,Stu_name[index],Stu_score[index]); else printf(没有学生信息记录\n); putchar(10); } //按姓名升序排序 void Sort_name(int Num_Stu,char Stu_name[][50],int Stu_score[]) { //定义字符数组替换数组 //定义分数替换容器 char tempName[50]; int tempScore; //循环比较并排序 for(int i 0;iNum_Stu-1;i) { for(int j 0;jNum_Stu -i-1;j) { if(strcmp(Stu_name[j],Stu_name[j1]) 0) { //替换姓名位置 strcpy(tempName,Stu_name[j]); strcpy(Stu_name[j],Stu_name[j1]); strcpy(Stu_name[j1],tempName); //替换分数位置 tempScore Stu_score[j]; Stu_score[j] Stu_score[j1]; Stu_score[j1] tempScore; } } } //打印排序后结果 printf(学生按姓名排序后的结果\n); for(int i0;iNum_Stu;i) { printf(姓名%s分数%d\n,Stu_name[i],Stu_score[i]); } putchar(10); } //按成绩对学生升序排序 void Sort_score(int Num_Stu,char Stu_name[][50],int Stu_score[]) { //定义字符数组替换数组 //定义分数替换容器 char tempName[50]; int tempScore; //循环比较并排序 for(int i 0;iNum_Stu-1;i) { for(int j 0;jNum_Stu -i-1;j) { if(Stu_score[j] Stu_score[j1]) { //替换姓名位置 strcpy(tempName,Stu_name[j]); strcpy(Stu_name[j],Stu_name[j1]); strcpy(Stu_name[j1],tempName); //替换分数位置 tempScore Stu_score[j]; Stu_score[j] Stu_score[j1]; Stu_score[j1] tempScore; } } } //打印排序后结果 printf(学生按分数排序后的结果\n); for(int i0;iNum_Stu;i) { printf(姓名%s分数%d\n,Stu_name[i],Stu_score[i]); } putchar(10); }