c语言公司有5台车,每辆车包括品牌,价格和使用年限等信息。请定义一个排序函数将 每辆车的信息按照价格的降序输出。
时间: 2024-09-26 22:11:32 浏览: 24
在C语言中,你可以使用指针数组结合结构体来存储车辆信息,并通过qsort()函数进行排序。首先,你需要定义一个结构体`Car`来存放品牌、价格和使用年限:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义汽车结构体
struct Car {
char brand[50]; // 品牌
int price; // 价格
int usage_years; // 使用年限
};
// 定义比较函数,用于qsort()
int compareCars(const void *a, const void *b) {
const struct Car *carA = (const struct Car *)a;
const struct Car *carB = (const struct Car *)b;
return carB->price - carA->price; // 降序排列,返回价格差
}
void printCarsInDescendingOrder(struct Car cars[], int n) {
printf("按价格降序排列:\n");
for (int i = 0; i < n; i++) {
printf("品牌: %s, 价格: %d, 使用年限: %d\n", cars[i].brand, cars[i].price, cars[i].usage_years);
}
}
int main() {
struct Car vehicles[] = {
{"Brand A", 100000, 5},
{"Brand B", 80000, 7},
{"Brand C", 120000, 3},
{"Brand D", 60000, 9},
{"Brand E", 150000, 4}
};
int n = sizeof(vehicles) / sizeof(vehicles[0]);
// 对车辆数组进行排序
qsort(vehicles, n, sizeof(struct Car), compareCars);
printCarsInDescendingOrder(vehicles, n);
return 0;
}
```
在这个程序中,`compareCars()`函数作为`qsort()`的第三个参数,它决定了排序的方式。`printCarsInDescendingOrder()`则用于打印排序后的车辆信息。