2011年8月19日 星期五

d561: 被秒殺的四捨五入

內容 :
    拿氣溫來說,攝氏15度和攝氏15.05度的差距對人來說差異實在不大,有了數學概數的觀念,我們可以透過四捨五入法來得到一個數字的估計值,進而方便統計。
    現在請你將一些小數利用程式來四捨五入。

輸入說明 :
    共計三個測資點,每個測資檔中有多行小數n(-1<=n<=1),至多小數點以下有100位數

輸出說明 :
    請輸出四捨五入至小數點以下第二位的結果

範例輸入 :
1.00000
0.5
0.715
0.1234567890
-0.995

範例輸出 :
1.00
0.50
0.72
0.12
-1.00

提示 :
    背景知識: 浮點數

程式碼 :
#include <stdio.h>

int main()
{
    int i,dot;
    char s[105];
        
    while(scanf("%s",s)==1)
    {
        for(i=0;s[i]!='.';i++);
        dot = i;
        if(s[dot+3]>'4')
            s[dot+2]++;
        for(i=dot+2;i>-1;i--)
        {
            if(s[i]!='.' && s[i]!='-')
            {
                if(s[i]==58)
                {
                    s[i] = 48;
                    if(s[i-1] != '.')
                        s[i-1]++;
                    else
                        s[i-2]++;
                }
                else
                    break;
            }            
        }
        s[dot+3] = '\0';
        if(s[1]==s[3] && s[3]==s[4] && s[4]=='0')
            printf("%s\n",s+1);
        else
          printf("%s\n",s);
    }
    return 0;
}




http://zerojudge.tw/ShowProblem?problemid=d561

沒有留言:

張貼留言