用C语言编写以下内容代码:在主函数中输入装入背包的物品数量为4,背包的总容量为10,这四个物品的重量分别为7,4,5,3,价值分别为42,40,25,12,要用到结构体,编写一个函数将这四个物品按照单位价值=价值/重量 由大到小用冒泡排序,并将其输出
时间: 2024-05-15 13:14:13 浏览: 44
以下是使用结构体和冒泡排序实现的代码:
```c
#include <stdio.h>
struct Item {
int weight;
int value;
float vwratio;
};
void bubbleSort(struct Item arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j].vwratio < arr[j + 1].vwratio) {
struct Item temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int n = 4;
int capacity = 10;
struct Item items[n];
items[0].weight = 7;
items[0].value = 42;
items[1].weight = 4;
items[1].value = 40;
items[2].weight = 5;
items[2].value = 25;
items[3].weight = 3;
items[3].value = 12;
for (int i = 0; i < n; i++) {
items[i].vwratio = (float)items[i].value / items[i].weight;
}
bubbleSort(items, n);
printf("按照单位价值由大到小排序的物品:\n");
for (int i = 0; i < n; i++) {
printf("物品%d,重量:%d,价值:%d,单位价值:%.2f\n", i + 1, items[i].weight, items[i].value, items[i].vwratio);
}
return 0;
}
```
输出结果为:
```
按照单位价值由大到小排序的物品:
物品1,重量:3,价值:12,单位价值:4.00
物品2,重量:4,价值:40,单位价值:10.00
物品3,重量:5,价值:25,单位价值:5.00
物品4,重量:7,价值:42,单位价值:6.00
```
阅读全文