编写程序,输出N件航材中价值最高航材的信息。N用符号常量定义为5,航材信息包括件号(PN)、名称(Designation)、单价(Price)。注意:件号为长整型,名称是没有空格的字符串,最长不超过30个字符,单价为float类型。 输入格式: "%ld%s%f" 输出格式: "%ld %s %.0f\n"C语言编译
时间: 2024-03-17 18:47:24 浏览: 79
以下是符合要求的 C 语言程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 5
typedef struct {
long PN; // 件号
char Designation[31]; // 名称
float Price; // 单价
} Material;
int cmp(const void *a, const void *b) {
Material *ma = (Material *)a;
Material *mb = (Material *)b;
if (ma->Price > mb->Price) {
return -1;
} else if (ma->Price < mb->Price) {
return 1;
} else {
return 0;
}
}
int main() {
Material materials[N];
int i;
// 读入航材信息
for (i = 0; i < N; i++) {
if (scanf("%ld%s%f", &materials[i].PN, materials[i].Designation, &materials[i].Price) != 3) {
fprintf(stderr, "Invalid input!\n");
exit(EXIT_FAILURE);
}
}
// 按单价从高到低排序
qsort(materials, N, sizeof(Material), cmp);
// 输出价值最高的航材信息
printf("%ld %s %.0f\n", materials[0].PN, materials[0].Designation, materials[0].Price);
return 0;
}
```
程序中使用了结构体 `Material` 存储航材信息,并且定义了一个比较函数 `cmp`,用于按单价从高到低排序。在 `main` 函数中,首先读入航材信息,然后对航材信息按单价从高到低排序,最后输出价值最高的航材信息。
阅读全文