本文采用C语言求解
【问题描述】
定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据来完成图书信息表的创建。然后,查找价格最高的图书,输出相应图书的信息。
【输入形式】
总计输入n+1行。其中,第一行是图书数目n,后n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。其中,书号和书名为字符串类型,价格为浮点数类型。
【输出形式】
总计输出m+1行,其中,第一行是最贵图书的数目(价格最高的图书可能有多本),后m行是m本最贵图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔。其中,价格输出保留两位小数。
【样例输入】
6
9787302257646 程序设计基础 25.00
9787302164340 程序设计基础(第2版) 20.00
9787302219972 单片机技术及应用 32.00
9787302203513 单片机原理及应用技术 26.00
9787810827430 工业计算机控制技术——原理与应用 29.00
9787811234923 汇编语言程序设计教程 32.00
【样例输出】
2
9787302219972 单片机技术及应用 32.00
9787811234923 汇编语言程序设计教程 32.00
【样例说明】
【评分标准】
完整代码如下:
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 10000
struct Book
{
char BookNumber[MAXSIZE];
char BookName[MAXSIZE];
double BookPrice;
}book[MAXSIZE];
int main()
{
int n, m = 0;
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%s", book[i].BookNumber);
scanf("%s", book[i].BookName);
scanf("%lf", &book[i].BookPrice);
}
double MaxPrice = book[0].BookPrice;
int maxnumber[MAXSIZE];
for (int i = 0; i < n; i++)
{
if (book[i].BookPrice > MaxPrice)
{
MaxPrice = book[i].BookPrice;
}
}
for (int i = 0; i < n; i++)
{
if (book[i].BookPrice == MaxPrice)
{
maxnumber[m] = i;
m = m + 1;
}
}
printf("%d\n", m);
for (int i = 0; i < m; i++)
{
printf("%s", book[maxnumber[i]].BookNumber);
printf(" %s", book[maxnumber[i]].BookName);
printf(" %0.2lf\n", book[maxnumber[i]].BookPrice);
}
return 0;
}
end~~~