【C语言】基于顺序存储结构的图书信息表的最贵图书的查找

本文采用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~~~

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。