定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据来完成图书信息表的创建,然后根据指定的最佳位置的序号,查找该位置上的图书,输出相应图书的信息。 输入 总计n+m+2行。首先输入n+1行,其中,第一行是图书数目n,后n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。其中书号和书名为字符串类型,价格为浮点数类型。然后输入m+1行,其中,第一行是一个整数m,代表查找m次,后m行每行内容为一个整数,代表待查找的图书的位置序号。 输出 输出m行 若查找成功: 输出内容为第i次查询的指定位置上的一本图书的信息(书号、书名、价格),书号、书名、价格用空格分隔,其中价格输出保留两位小数。 若查找失败: 只输出以下提示:抱歉,最佳位置上的图书不存在!
时间: 2024-03-25 11:38:10 浏览: 137
以下是一个可能的实现方式:
```c
#include <stdio.h>
#include <string.h>
#define MAX_BOOKS 1000
struct book {
char id[100];
char name[100];
float price;
};
int main() {
struct book books[MAX_BOOKS]; // 定义一个包含图书信息的顺序表
int n, m, i, pos, found;
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%s %s %f", books[i].id, books[i].name, &books[i].price);
}
scanf("%d", &m);
for (i = 0; i < m; i++) {
scanf("%d", &pos);
found = 0;
if (pos >= 1 && pos <= n) { // 判断输入的位置是否在有效范围内
printf("%s %s %.2f\n", books[pos-1].id, books[pos-1].name, books[pos-1].price);
found = 1;
}
if (!found) {
printf("抱歉,最佳位置上的图书不存在!\n");
}
}
return 0;
}
```
程序首先定义一个包含图书信息的顺序表`books`,并通过循环读入n本图书的信息。然后,程序读入需要查找的次数m,再循环读入每次需要查找的位置序号pos。每次查找时,程序判断输入的位置是否有效,如果有效,则输出该位置上的图书信息,否则输出提示信息。在输出价格时,使用格式化输出函数`printf`指定输出小数点后两位。
阅读全文