d561
輸入說明 :
共計三個測資點,每個測資檔中有多行小數n(-1<=n<=1),至多小數點以下有100位數
輸出說明 :
請輸出四捨五入至小數點以下第二位的結果
有點麻煩的題目,先判斷輸入是不是不到小數點以下第2位,是的話小數點以下第二位要補零
ex 輸入0.5 ,輸出要是0.50
再來判斷小數點以下第3位的大小,四捨五入
最後檢查假如某一位是9,然後因為四捨五入+1要進位,要手動把它調回0,然後它的前一位要加1
輸出有一個陷阱就是,假如是-0.003,會輸出成-0.00,所以最後要檢查
#include<stdio.h>
#include<string.h>
int main()
{
char s[110]={'\0'};
int i;
int sum=0;
while(scanf("%s",s)!=EOF)
{
for(i=0;s[i]!='.';i++);
if(s[i+2]=='\0')
s[i+2]='0';
if(s[i+3]>'4')
s[i+2]++;
s[i+3]='\0';
for(i=i+2;i>=0;i--)
{
if(s[i]!='.'&&s[i]!='-')
{
if(s[i]=='9'+1)
{
s[i]='0';
//還在小數
if(s[i-1]!='.')
s[i-1]++;
else
s[i-2]++;
}
}
}
if(strcmp(s,"-0.00")==0)
printf("0.00\n");
else
printf("%s\n",s);
}
}