c语言:查找书籍:从键盘输入n(n<10)本书的名称和定价,从中查找定价最高书的名称,并输出。试编写相应程序。
时间: 2024-02-03 19:13:19 浏览: 109
以下是使用C语言编写的程序,可以实现你的需求:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 50 // 书名最大长度
int main() {
char name[MAX_LENGTH]; // 书名
float price, max_price = 0; // 定价和最高价格
int n, i, max_index = 0; // n为书籍数量,i为循环计数器,max_index为最高价格书籍的下标
printf("请输入书籍数量(n<10):");
scanf("%d", &n);
char names[n][MAX_LENGTH]; // 存储所有书籍名称
float prices[n]; // 存储所有书籍定价
for (i = 0; i < n; i++) {
printf("请输入第%d本书的名称和定价(用空格分隔):", i + 1);
scanf("%s%f", name, &price);
strcpy(names[i], name); // 将书名存储到数组中
prices[i] = price; // 将定价存储到数组中
if (price > max_price) { // 如果当前书籍定价更高
max_price = price; // 更新最高价格
max_index = i; // 更新最高价格书籍的下标
}
}
printf("定价最高的书是:%s,价格为%.2f元。\n", names[max_index], prices[max_index]);
return 0;
}
```
程序的具体思路如下:
1. 首先,从键盘输入书籍数量n;
2. 然后,使用二维数组和一维数组分别存储所有书籍的名称和定价;
3. 接着,使用循环依次输入每一本书籍的名称和定价,并在输入过程中,判断当前书籍的定价是否更高,如果更高,则更新最高价格和最高价格书籍的下标;
4. 最后,输出最高价格书籍的名称和价格。
需要注意的是,在输入书籍名称时,我们使用了scanf函数,但是这个函数不能直接读取带空格的字符串,需要使用%s格式控制符,并且在定义name数组时,需要给数组指定长度,以防止输入的书籍名称过长导致数组越界。
阅读全文