【实验课】1. 基于顺序存储结构的图书信息表的最贵图书的查找

2020-06-11  本文已影响0人  仍有不归期

数据结构已经结课,或许我自己都没想到网络教学的效果比线下还差......总共可能听了5节课不到。本以为实验课开始后会有一点激情,然后看了实验课内容发现都是些没学过数据结构也能写出来的东西。。。对网络教学就更没兴趣了。

【问题描述】定义一个包含图书信息(书号、书名、价格)的顺序表,读入相应的图书数据来完成图书信息表的创建。然后,查找价格最高的图书,输出相应图书的信息。
【输入形式】

  总计输入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>

// 书籍信息结构体
typedef struct bookinfo{
    char id[50];
    char name[50];
    double price;
}bookinfo, *bookinfoptr;

int main(){
    // 输入书籍数目
    int n;
    scanf("%d", &n);
    bookinfoptr p = (bookinfoptr)malloc(sizeof(bookinfo) * n);
    
    // 输入书籍信息
    int i;
    for(i = 0; i < n; ++i){
        scanf("%s %s %lf", p[i].id, p[i].name, &p[i].price);
    }
    
    // 找出最贵图书
    int maxprice = 0;
    // 最贵图书数量
    int count = 0; 
    // 这是个很神奇的状态机哈哈哈哈
    for(i = 0; i < n; ++i){
        if(p[i].price > maxprice){
            maxprice = p[i].price;
            count = 1;
        }else if(p[i].price == maxprice){
            count++;
        }
    }
    
    printf("%d\n", count);
    //输出最贵图书
    for(i = 0; i < n; ++i){
        if(p[i].price == maxprice){
            printf("%s %s %.2lf\n", p[i].id, p[i].name, p[i].price);
        }
    }
    return 0;
}
AC

如有疑问,可通过 chenrongxin0130@gmail.com 联系我

上一篇下一篇

猜你喜欢

热点阅读