我的程式碼:::::
如果有更簡單的方法麻煩告訴我
銘感五內:)
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s;
while(cin>>s)
{
int flag,k=0;
for(int i=0;;i++)if(s[i]=='.'){flag=i;break;}//找到.位置
if(s[flag+3]>=53 and s[flag+3]<=57)s[flag+2]++;//進位
for(int i=flag+2;i>0;i--)if(s[i]>57 or s[i]==47)//如果9進位
{if(i==flag){s[i]--;s[i-1]++;continue;}//要進到個位時
else s[i-1]+=1;s[i]='0';
}
if(s[0]>57){cout<<1;s[0]='0';} //多一個位數時的處理
if(s[0]=='.'){s[0]='-'; //為負數多一個位數時,待下面要輸出時再補輸出
k=1;
}
for(int i=0;i<=flag+2;i++) //輸出答案
{
if(i==1 and k==1)cout<<1; //負數補輸出
cout<<char(s[i]);
}
cout<<endl;
}
}
我的作法是:
用字串讀入
先處理 -1.0, 0.0, 1.0,其他的數字結構就會是 -0.abcd... 或 0.abcd...
標記是否有負號,並將字串變成 0.abcd...
抓子字串 abc,再轉成整數 N
做四捨五入:N = (int) ((N + 5) / 10)
輸出成 "%d.%.2d", (N / 100), (N % 100)
我的作法是:
用字串讀入
先處理 -1.0, 0.0, 1.0,其他的數字結構就會是 -0.abcd... 或 0.abcd...
標記是否有負號,並將字串變成 0.abcd...
抓子字串 abc,再轉成整數 N
做四捨五入:N = (int) ((N + 5) / 10)
輸出成 "%d.%.2d", (N / 100), (N % 100)
太感謝您了我會再試試看
: )