c语言给出n件物品,每件物品有质量和价格两种属性。你要做的是按质量升序排序,若质量相同则按价格降序排序。 输入格式: 多组输入。每组先输入一个正整数n(1<=n && n <= 100),代表有n件物品。接下来的一行有n个正整数Wi(1<= Wi && Wi <= 10000),代表每件物品的质量。再接下来的一行有n个正整数Pi(1 <= Pi && Pi <= 10000),代表每件物品的价格。 输出格式: 对于每组数据输出n行,每行两个数Wi,Pi。
时间: 2023-08-17 07:03:59 浏览: 187
这道题目可以使用结构体来存储每件物品的质量和价格,然后使用快速排序对其进行排序,排序规则就是按照质量升序排序,若质量相同则按照价格降序排序。具体实现可以参考下面的代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct item {
int quality;
int price;
};
int cmp(const void *a, const void *b) {
struct item *ia = (struct item *)a;
struct item *ib = (struct item *)b;
if (ia->quality != ib->quality) {
return ia->quality - ib->quality;
} else {
return ib->price - ia->price;
}
}
int main() {
int n;
while (scanf("%d", &n) == 1) {
struct item items[n];
for (int i = 0; i < n; i++) {
scanf("%d", &items[i].quality);
}
for (int i = 0; i < n; i++) {
scanf("%d", &items[i].price);
}
qsort(items, n, sizeof(struct item), cmp);
for (int i = 0; i < n; i++) {
printf("%d %d\n", items[i].quality, items[i].price);
}
}
return 0;
}
```
这里的cmp函数是快速排序的比较函数,它根据质量升序排序,若质量相同则按照价格降序排序。注意,这里使用了qsort函数进行快速排序,需要包含stdlib.h头文件。
阅读全文