数据结构已经结课,或许我自己都没想到网络教学的效果比线下还差......总共可能听了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;
}
![](https://img.haomeiwen.com/i16314622/17dffc75798d8fe7.png)
如有疑问,可通过 chenrongxin0130@gmail.com 联系我
网友评论