编写程序,用函数输入10个学生信息(学号,姓名,成绩),用函数对学生成绩从高到低排序(起泡法),用函数输出排序后的学生信息。
1条回答 默认 最新
关注 #include <stdio.h> #include <sting.h> struct student { int ID; /* 学号 */ char Name[50]; /* 姓名 */ int Grade; /* 成绩 */ }; void main() { struct student stu[100]; int i = 0; int n, m; int big; int small; while ( 1 ) { printf( "请输入学生的姓名、学号、成绩以空格隔开:\n" ); printf( "结束请输入exit 0 0\n" ); scanf( "%s%d%d", stu[i].Name, &stu[i].ID, &stu[i].Grade ); /* 接收输入的学生信息 */ printf( "%d\n", stu[i].Grade ); /* 判断是否要结束输入 */ if ( strcmp( stu[i].Name, "exit" ) == 0 ) { printf( "输入结束\n" ); i = i - 1; break; } i++; } if ( i == 0 ) { printf( "只输入了一个学生的信息\n" ); return; } /* * 循环进行比较记录最高和最低 * big、small记录第0个元素的分数 */ big = stu[0].Grade; small = stu[0].Grade; for ( n = 1; n <= i; n++ ) { printf( "grade = %d\n", stu[n].Grade ); if ( big < stu[n].Grade ) { big = stu[n].Grade; /* big和各个元素的分数比较,取较高赋值给big(big一直为较高) */ } if ( small > stu[n].Grade ) { small = stu[n].Grade; /* small和各个元素的分数比较,取较低赋值给small(small一直为较低) */ } } for ( m = 0; m <= i; m++ ) { printf( "xx:%d,%s,%d\n", stu[m].ID, stu[m].Name, stu[m].Grade ); if ( stu[m].Grade == big ) /* 每个学生的成绩和最高分比较,相等的输出(可能会出现并列的) */ { printf( "最高分数学生信息:%d,%s,%d\n", stu[m].ID, stu[m].Name, stu[m].Grade ); } if ( stu[m].Grade == small ) /* 每个学生的成绩和最低分比较,相等的输出(可能会出现并列的) */ { printf( "最低分数学生信息:%d,%s,%d\n", stu[m].ID, stu[m].Name, stu[m].Grade ); } } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 Oracle触发器记录修改前后的字段值
- ¥100 为什么这个恒流源电路不能恒流?
- ¥15 有偿求跨组件数据流路径图
- ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
- ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
- ¥15 CSAPPattacklab
- ¥15 一直显示正在等待HID—ISP
- ¥15 Python turtle 画图
- ¥15 stm32开发clion时遇到的编译问题
- ¥15 lna设计 源简并电感型共源放大器