7-1 查找书籍 (20分)__C++

题目

给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。

输入格式:

输入第一行给出正整数n(<10),随后给出n本书的信息。每本书在一行中给出书名,即长度不超过30的字符串,随后一行中给出正实数价格。题目保证没有同样价格的书。

输出格式:

在一行中按照“价格, 书名”的格式先后输出价格最高和最低的书。价格保留2位小数。

输入样例:

3
Programming in C
21.5
Programming in VB
18.5
Programming in Delphi
25.0

输出样例:

25.00, Programming in Delphi
18.50, Programming in VB

代码

#include <iostream>
using namespace std;
#include <iomanip>
struct shuji
{
 char name[31];
 double price;//double比float保险,能用double就用double
}books[10];
int main()
{
 //1 输入数据 
 int n;
 cin>>n;
 getchar();//吸掉回车
 int i;
 double a[10];
 for(i=0;i<n;i++)
 {
  cin.getline(books[i].name ,32);
  cin>>books[i].price ;
  getchar();
  a[i]=books[i].price;
 }
 //2 找出最大最小值 
 double max=a[0],min=a[0];
 int flag1=0,flag2=0;
 for(i=1;i<n;i++)
 {
  if(a[i]>max)
  {
   max=a[i];
   flag1=i;
  }
  else if(a[i]<min)
  {
   min=a[i];
   flag2=i;
  }
 }
  cout<<setiosflags(ios::fixed)<<setprecision(2)<<max<<", " <<books[flag1].name <<endl;
  cout<<setiosflags(ios::fixed)<<setprecision(2)<<min<<", " <<books[flag2].name ;
 return 0; 
}

总结

  1. 这题的第一个坑是要用getchar()吸走cin后和cin.getline()前的空格,不然程序无法完成正常输入
  2. 在保留n位小数输出时,要用double,不然精度不够会报错。
    总结一下就是能用double的就用double。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值