问题:
输入一组互不相等的百分之成绩,个数<=100,以-1j结束,按从高到低的顺序输出前10名成绩以及其位置号。位置号根据最初输入个数输入,例如:66 88 77 -1,输出2号88分 3号77分 1号66分等。
思路:
- 由于输入成绩以及其位置号绑定移动,所以最好定义一个结构体,来存放这两个数据,每个学生为单个结构体变量。
- 个数小于等于100,所以结构体定义的数最大为s[100];
- 输入数据,-1,结束。——意思是没必要真输100个数据,我输入12个想结束了,按个-1,也可以结束,所以需要定一个变量,来表示实际输入的个数。
- -1结束,所以while(1)死循环,直到结构体中的成绩为-1时才跳出while循环。其中在输入学生具体内容时,若输入的成绩为-1,则跳出输入循环。提前结束。
- 由于学生的成绩和座位号绑定了,所以只需定一个相应的结构体中间变量,struct student temp,进行冒泡排序。
- 冒泡排序,外循环为所需要移动的数据;内循环为与后面的一一对比,判断是否交换。若发现s【q】.cj中比后面的s【q+1】.cj小,则进行交换,结构体交换,交换的时候直接temp = s【q】这种形式即可,s【q】为交换这个结构体整体。
- 随后进行输出即可。
代码如下: