> 文章列表 > 购物清单(蓝桥杯C/C++省赛)

购物清单(蓝桥杯C/C++省赛)

购物清单(蓝桥杯C/C++省赛)

目录

1 问题描述

2  文件的读取格式

3  代码实现


1 问题描述

小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦,但又不好推辞。
这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有打折优惠的。
小明也有个怪癖,不到万不得已,从不刷卡,直接现金搞定。
现在小明很心烦,请你帮他计算一下,需要从取款机上取多少现金,才能搞定这次购物。
取款机只能提供100元面额的纸币。小明想尽可能少取些现金,够用就行了。
你的任务是计算出,小明最少需要取多少现金。以下是让人头疼的购物单,为了保护隐私,物品名称被隐藏了。
需要说明的是,88折指的是按标价的88%计算,而8折是按80%计算,余者类推。
特别地,半价是按50%计算。请提交小明要从取款机上提取的金额,单位是元。
答案是一个整数,类似4300的样子,结尾必然是00,不要填写任何多余的内容。特别提醒:不许携带计算器入场,也不能打开手机。
输入
没有输入
输出
请输出小明要从取款机上提取的金额,单位是元。
答案是一个整数,类似4300的样子,结尾必然是00,不要输出任何多余的内容。
提示
把答案放在输出语句中输出,例如C/C++语言可以用printf或cout。
 

-----------------
     180.90       88折
      10.25       65折
      56.14        9折
     104.65        9折
     100.30       88折
     297.15        半价
      26.75       65折
     130.62        半价
     240.28       58折
     270.62        8折
     115.87       88折
     247.34       95折
      73.21        9折
     101.00        半价
      79.54        半价
     278.44        7折
     199.26        半价
      12.97        9折
     166.30       78折
     125.50       58折
      84.98        9折
     113.35       68折
     166.57        半价
      42.56        9折
      81.90       95折
     131.78        8折
     255.89       78折
     109.17        9折
     146.69       68折
     139.33       65折
     141.16       78折
     154.74        8折
      59.42        8折
      85.44       68折
     293.70       88折
     261.79       65折
      11.30       88折
     268.27       58折
     128.29       88折
     251.03        8折
     208.39       75折
     128.88       75折
      62.06        9折
     225.87       75折
      12.89       75折
      34.28       75折
      62.16       58折
     129.12        半价
     218.37        半价
     289.69        8折

2  文件的读取格式

FILE* fi;
fi=freopen("address","read/write",输入流);

3  代码实现

#include <bits/stdc++.h>
using namespace std;FILE* fi;
double sum;
double a[50],b[50];
int main()
{fi=freopen("C:\\Users\\张px\\Desktop\\input.txt","r",stdin);for(int i=0;i<50;i++){scanf("%lf%lf",&a[i],&b[i]);}for(int i=0;i<50;i++){sum+=a[i]*b[i]/100;}cout<<sum;fclose(fi);return 0;
}

但此时发现编译错误: 

 原因是一个\\是不识别的,所以要在\\前再加一个\\才能被识别为\\

#include <bits/stdc++.h>
using namespace std;FILE* fi;
double sum;
double a[50],b[50];
int main()
{fi=freopen("C:\\\\Users\\\\张px\\\\Desktop\\\\input.txt","r",stdin);for(int i=0;i<50;i++){scanf("%lf%lf",&a[i],&b[i]);}for(int i=0;i<50;i++){sum+=a[i]*b[i]/100;}cout<<sum;fclose(fi);return 0;
}

答案:5136.86,根据题意最终答案为5200