1. 程式人生 > >codeVS之旅:2235 機票打折

codeVS之旅:2235 機票打折

.輸入機票原價(3到4位的正整數,單位:元),再輸入機票打折率(小數點後最多一位數字)。程式設計計算打折後機票的實際價格(單位:元。計算結果要將個位數四捨五入到十位數“元”)。輸入只有一行兩個數(兩數間用一個空格分隔),第一個為整數,表示機票原價,第二個整數或實數(如是實數,小數點後最多1位數字)表示打折率。

輸入樣例1:

888  7

輸出樣例1:

620

輸入樣例2:

1255  7 

輸出樣例2:

 880

PS:

最近開始重新練習演算法,也給自己定了一個小目標,每天至少刷一道演算法題,然後之前就在CODEVS註冊過帳號,但是沒有做過裡面的題,因此現在也是滕出時間來開始學習。

這道題我的程式碼是這樣的:

#include <iostream>
#include<cstdio>

using namespace std;

int main()
{
    int oldprice;
    double discount;
    cin>>oldprice;
    cin>>discount;
    int a = oldprice*discount;
    int yu = a%10;
    int chu = a/10;
    if(yu>=5)
    {
        chu = chu+1;
    }
    int yu2 = chu%10;
    int chu2 = chu/10;
    if(yu2>=5)
    {
        chu2 = (chu2+1)*10;
    }else
    {
        chu2 = chu2*10;
    }

    cout<<chu2;
    return 0;
}

可以看出來程式碼寫的還是很亂,也沒有遵循程式碼規範。然後我去看了題解,因為我知道自己這個解決方法實在是有點蠢的,也抱著多學習別人思路的想法。並決定把好的思路學習一下。

思路:round函式的使用。

c++有一個四捨五入的函式,叫做round。(這個都不知道,覺得自己很呆。)

int main()
{
    int a;
    double b;
    scanf("%d %lf",&a,&b);
    printf("%d",(int)(round(a*b/100))*10);
    return 0;
}