1. 程式人生 > >2017年第八屆藍橋杯 C/C++B組 真題分析與題解(未完待續)

2017年第八屆藍橋杯 C/C++B組 真題分析與題解(未完待續)

一、前言

二、題目型別與分值分佈
1. 結果填空
(1)購物單 5’
(2)等差素數列 7’
(3)承壓計算 13’
(4)方格分割 17’
2. 程式碼填空
(5)取數位 9’
(6)最大公共子串 11’
3. 程式設計
(7)日期問題 19’
(8)包子湊數 21’
(9)分巧克力 23’
(10)k倍區間 25’
三、真題與題解

1. 標題: 購物單

    小明剛剛找到工作,老闆人很好,只是老闆夫人很愛購物。老闆忙的時候經常讓小明幫忙到商場代為購物。小明很厭煩,但又不好推辭。

    這不,XX大促銷又來了!老闆夫人開出了長長的購物單,都是有打折優惠的。
小明也有個怪癖,不到萬不得已,從不刷卡,直接現金搞定。 現在小明很心煩,請你幫他計算一下,需要從取款機上取多少現金,才能搞定這次購物。 取款機只能提供100元面額的紙幣。小明想盡可能少取些現金,夠用就行了。 你的任務是計算出,小明最少需要取多少現金。 以下是讓人頭疼的購物單,為了保護隱私,物品名稱被隱藏了。 ----------------- **** 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折 -------------------- 需要說明的是,88折指的是按標價的88%計算,而8折是按80%計算,餘者類推。 特別地,半價是按50%計算。 請提交小明要從取款機上提取的金額,單位是元。 答案是一個整數,類似4300的樣子,結尾必然是00,不要填寫任何多餘的內容。 特別提醒:不許攜帶計算器入場,也不能開啟手機。

【分析】資料處理

#include <stdio.h>
int main()
{
    double price=0;
    price+=180.90*0.88;
    price+=10.25*0.65;
    price+=56.14*0.9;
    price+=104.65*0.9;
    price+=100.30*0.88;
    price+=297.15*0.5;
    price+=26.75*0.65;
    price+=130.62*0.5;
    price+=240.28*0.58;
    price+=270.62*0.8;
    price+=115.87*0.88;
    price+=247.34*0.95;
    price+=73.21*0.9;
    price+=101.00*0.5;
    price+=79.54*0.5;
    price+=278.44*0.7;
    price+=199.26*0.5;
    price+=12.97*0.9;
    price+=166.30*0.78;
    price+=125.50*0.58;
    price+=84.98*0.9;
    price+=113.35*0.68;
    price+=166.57*0.5;
    price+=42.56*0.9;
    price+=81.90*0.95;
    price+=131.78*0.8;
    price+=255.89*0.78;
    price+=109.17*0.9;
    price+=146.69*0.68;
    price+=139.33*0.65;
    price+=141.16*0.78;
    price+=154.74*0.8;
    price+=59.42*0.8;
    price+=85.44*0.68;
    price+=293.70*0.88;
    price+=261.79*0.65;
    price+=11.30*0.88;
    price+=268.27*0.58;
    price+=128.29*0.88;
    price+=251.03*0.8;
    price+=208.39*0.75;
    price+=128.88*0.75;
    price+=62.06*0.9;
    price+=225.87*0.75;
    price+=12.89*0.75;
    price+=34.28*0.75;
    price+=62.16*0.58;
    price+=129.12*0.5;
    price+=218.37*0.5;
    price+=289.69*0.8;
    printf("%lf\n",price);
    return 0;
}

【答案】5200