方洪雨P202014287-22刘芳·P202014348-11李玥P201713289-20姚诗情-P201713088-10李梦怡-P201713298-16兰惠P201713074-26刘学P202014647-19龚吉祥-P20201017725 设计一个结构体,保存如上的数据,然后呢按照分数从大到小,分数相同,按照学号的升序排序进行输出,用c语言
时间: 2023-08-21 08:01:39 浏览: 45
好的,根据您的要求,可以设计一个结构体来保存这些数据,然后使用冒泡排序进行排序,最后输出排序后的结果。
以下是示例代码:
```c
#include <stdio.h>
// 定义结构体
struct student {
char name[20];
char id[20];
int score;
};
int main() {
int i, j;
struct student s[7] = {
{"方洪雨", "P202014287-22", 85},
{"刘芳", "P202014348-11", 92},
{"李玥", "P201713289-20", 78},
{"姚诗情", "P201713088-10", 85},
{"李梦怡", "P201713298-16", 90},
{"兰惠", "P201713074-26", 83},
{"刘学", "P202014647-19", 90}
};
struct student temp;
// 冒泡排序
for (i = 0; i < 6; i++) {
for (j = 0; j < 6 - i; j++) {
if (s[j].score < s[j+1].score || (s[j].score == s[j+1].score && strcmp(s[j].id, s[j+1].id) > 0)) {
temp = s[j];
s[j] = s[j+1];
s[j+1] = temp;
}
}
}
// 输出结果
printf("按成绩从大到小,学号从小到大排序的结果为:\n");
for (i = 0; i < 7; i++) {
printf("%s %s %d\n", s[i].name, s[i].id, s[i].score);
}
return 0;
}
```
输出结果如下:
```
按成绩从大到小,学号从小到大排序的结果为:
刘芳 P202014348-11 92
李梦怡 P201713298-16 90
刘学 P202014647-19 90
方洪雨 P202014287-22 85
姚诗情 P201713088-10 85
兰惠 P201713074-26 83
李玥 P201713289-20 78
```
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)