【蓝桥杯】购物单(2017年)

一、题目描述:

小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候经常让小明帮忙到商场代为购物。小明很厌烦,但又不好推辞。
这不,大促销又来了!老板夫人开出了长长的购物单,都是有打折优惠的。
小明也有个怪癖,不到万不得已,从不刷卡,直接现金搞定。
现在小明很心烦,请你帮他计算一下,需要从取款机上取多少现金,才能搞定这次购物。
取款机只能提供 100100 元面额的纸币。小明想尽可能少取些现金,够用就行了。 你的任务是计算出,小明最少需要取多少现金。
以下是让人头疼的购物单,为了保护隐私,物品名称被隐藏了。

****     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

二、解题思路:

(1) 首先对数据进行预处理:
由于原始数据既有中文又有数字,所以要预处理一下。将数据复制到文本文件中,利用替换工具把”****“替换成(空),把“半价”替换成“50”,然后将在“折“替换成(空),最后把文本文件保存为cost.txt。最后数据如下:

     180.90       88
      10.25       65
      56.14        9
     104.65        9
     100.30       88
     297.15        50
      26.75       65
     130.62        50
     240.28       58
     270.62        8
     115.87       88
     247.34       95
      73.21        9
     101.00        50
      79.54        50
     278.44        7
     199.26        50
      12.97        9
     166.30       78
     125.50       58
      84.98        9
     113.35       68
     166.57        50
      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        50
     218.37        50
     289.69        8

(2)利用freopen将数据输入改成到文件中读入,然后利用循环语句读取文件数据。
(3)计算数据并输出
注意:折扣如果小于10,则需要进行除以10处理。
这里是引用

三、代码实现:

#include<iostream>
using namespace std;
float price[100];
int discount[100];
int main()
{
    
    
	int i;
	freopen("cost.txt","r",stdin);
	i = 0;
	//输入数据 
	while(cin >> price[i] >> discount[i])
		i++;
	i = 0;
	float sum = 0;
	while(price[i] != 0){
    
    
		if(discount[i] < 10)
			sum += price[i] * discount[i]/10;
		else
			sum += price[i] * discount[i]/100;
		i++;
	}
	cout << sum << endl;
	return 0;
 } 

最后运行结果为5136.86,但是注意取款机最少,取100,所以最后结果为5200。

猜你喜欢

转载自blog.csdn.net/qq_62775411/article/details/129326872
今日推荐