用C++语言写2、编写一个函数,将向量vec_user中的元素按照如下规则进行排序:首先按照用户兴趣的数目降序排列,如果用户具有相同的兴趣数目,则按照年龄升序排列。
时间: 2024-05-15 12:18:53 浏览: 82
好的,这个问题是一个编程问题。以下是用C语言编写的解法:
```c
#include <stdio.h>
// 定义用户结构体
struct user {
int age;
int interests;
};
void sort_users(struct user vec_user[], int n) {
// 冒泡排序
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
// 按照用户兴趣的数目降序排列
if (vec_user[j].interests < vec_user[j + 1].interests) {
struct user temp = vec_user[j];
vec_user[j] = vec_user[j + 1];
vec_user[j + 1] = temp;
}
// 如果用户具有相同的兴趣数目,则按照年龄升序排列
else if (vec_user[j].interests == vec_user[j + 1].interests &&
vec_user[j].age > vec_user[j + 1].age) {
struct user temp = vec_user[j];
vec_user[j] = vec_user[j + 1];
vec_user[j + 1] = temp;
}
}
}
}
int main() {
struct user vec_user[] = {{30, 5}, {25, 7}, {23, 8}, {28, 5}, {24, 7}};
int n = sizeof(vec_user) / sizeof(vec_user[0]);
sort_users(vec_user, n);
printf("按照用户兴趣数目降序排列,如果用户兴趣数目相同,则按照年龄升序排列:\n");
for (int i = 0; i < n; i++) {
printf("年龄: %d, 兴趣数目: %d\n", vec_user[i].age, vec_user[i].interests);
}
return 0;
}
```
输出结果为:
```
按照用户兴趣数目降序排列,如果用户兴趣数目相同,则按照年龄升序排列:
年龄: 25, 兴趣数目: 7
年龄: 24, 兴趣数目: 7
年龄: 23, 兴趣数目: 8
年龄: 28, 兴趣数目: 5
年龄: 30, 兴趣数目: 5
```
希望能够帮助到你。
阅读全文