2017年藍橋杯——購物清單

1998cying發表於2018-07-16

題目:購物單小明剛剛找到工作,老闆人很好,只是老闆夫人很愛購物。老闆忙的時候經常讓小明幫忙到商場代為購物。小明很厭煩,但又不好推辭。這不,XX大促銷又來了!老闆夫人開出了長長的購物單,都是有打折優惠的。小明也有個怪癖,不到萬不得已,從不刷卡,直接現金搞定。現在小明很心煩,請你幫他計算一下,需要從取款機上取多少現金,才能搞定這次購物。取款機只能提供100元面額的紙幣。小明想盡可能少取些現金,夠用就行了。你的任務是計算出,小明最少需要取多少現金。以下是讓人頭疼的購物單,為了保護隱私,物品名稱被隱藏了。

解題思路:
將題目資訊複製到.txt檔案中,然後用程式讀取檔案並對其中的資料進行計算輸出

程式碼如下:

#include<stdio.h>
int main()
{
    double x,y;
    double count=0;
    freopen("r1.txt","r",stdin);//stdin是標準輸入 一般指鍵盤輸入到緩衝區的東西
    while(scanf("%lf%lf",&x,&y)!=EOF){
        count+=x*y/100;
    }
    printf("%lf",count);
    return 0;
}

freopen函式

  • 含義:重新定向輸入輸出流,在不改變程式碼的原貌下改變輸入輸出環境
  • 格式:FILE *fropen(const char *filename, const char *mode, FILE *stream);
  • 引數:
    filename:需要重定向到的檔名或檔案路徑(即應該從何處讀入檔案)
    mode: 代表檔案訪問許可權的字串。(“r”表示只讀訪問,“w”表示只寫訪問, “a”表示追加寫入)
    stream : 需要被重定向的檔案流(比如:stdin 標準輸入流。本來應該是從stdin讀資料 但它被重定向了)
  • 返回值:如果成功,則返回該指向輸出流的檔案指標,否則返回為NULL