利用C语言编写如下程序:【问题描述】给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。 【输入形式】输入第一行给出正整数n(n<10),随后给出n本书的信息。每本书在一行中给出书名,即长度不超过30的字符串,随后一行中给出正实数价格。题目保证没有同样价格的书。 【输出形式】在一行中按照“价格, 书名”的格式先后输出价格最高和最低的书。价格保留2位小数。 【样例输入】 3 Programming in C 21.5 Programming in VB 18.5 Programming in Delphi 25.0 【样例输出】 25.00, Programming in Delphi 18.50, Programming in VB
时间: 2024-02-13 13:02:46 浏览: 75
以下是C语言代码实现:
```c
#include <stdio.h>
#include <string.h>
struct Book {
char name[31];
double price;
};
int main() {
int n;
scanf("%d", &n);
struct Book books[n];
double maxPrice = 0, minPrice = 1e9;
int maxIndex, minIndex;
for (int i = 0; i < n; i++) {
scanf("%s %lf", books[i].name, &books[i].price);
if (books[i].price > maxPrice) {
maxPrice = books[i].price;
maxIndex = i;
}
if (books[i].price < minPrice) {
minPrice = books[i].price;
minIndex = i;
}
}
printf("%.2lf, %s\n", books[maxIndex].price, books[maxIndex].name);
printf("%.2lf, %s\n", books[minIndex].price, books[minIndex].name);
return 0;
}
```
解释:
首先定义一个名为 `Book` 的结构体,包含书名和价格两个成员。
然后通过输入的 n 动态定义一个长度为 n 的 `books` 数组,存储每本书的信息。
接着,通过循环逐个读入每本书的信息,并在读入的同时比较价格大小,记录最高价和最低价的书的下标。
最后,按照要求输出价格最高和最低的书的信息。注意价格的输出格式需要保留两位小数。
代码中的 `1e9` 表示 10 的 9 次方,即一个很大的数,用于初始化最低价,确保第一本书的价格一定比它低。
阅读全文