NYOJ 數字分隔(二)

2021-08-21 18:19:40 字數 1537 閱讀 7443

時間限制:1000 ms  |  記憶體限制:65535 kb

難度:3

描述在乙個遙遠的國家,銀行為了更快更好的處理使用者的訂單,決定將一整串的數字按照一定的規則分隔開來,分隔規則如下:

1、實數的整數部分按照每三個數字用逗號分隔開(整數部分的高位有多餘的0時,需先將多餘的0過濾後,再進行數字分隔,如:0001234567 輸出結果為1,234,567.00)

2、小數部分保留兩位小數(四捨五入)

3、如果該數是負的,則在輸出時需用括號將分隔後的數字括起來,例如:-10005.1645的輸出結果為(10,005.16)  

輸入:多組測試資料(以eof結尾),每行輸入乙個實數n(n的位數小於100)

輸出:輸出分隔後的結果

樣例輸入

0001234567

0.0000

-10005.1645

樣例輸出

1,234,567.00

0.00

(10,005.16)

//第一次發 ,**較亂 比較長,後續會改進.

//但是執行可以通過 借鑑別的大佬**,並改進。

// 注釋寫的挺詳細的

#include#includeint main()

a[len+1]='\0';

if(a[1]=='.')

}}

if(a[0]=='.')

} a[len+1]='\0';

a[0]='0';

len=strlen(a);

} //整數部分去除0 把0置為 *

for(i=0; i='1' &&a[i]<='9' )

break;

else else if(i+2>=len) else

for(k=i+3; k='0' && a[i]<='9' )

} for(i=0; i'9')

for(i=dian+2; i>start; i--)

}a[i+1]=a[i]; //如果進製 把整個陣列往後挪一位 999.999的情況 是1000.00

// 此時 a[start]沒有動

}if(a[start]>'9' && a[start+1]!='.') else if(a[start+1]!='.') else

} int sum=0;

int count=0;

for(i=0; i='0' && a[i]<='9')

sum++;

}} count=sum%3;

if(count>0) // 判斷在第幾位輸出 『,』

count=3-count;

for(i=0; iprintf("%c",a[i]);

count++;

}} for(j=i; j} if(fu==1)

printf("\n");

} return 0;

}

數字分隔(二)

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 在乙個遙遠的國家,銀行為了更快更好的處理使用者的訂單,決定將一整串的數字按照一定的規則分隔開來,分隔規則如下 1 實數的整數部分按照每三個數字用逗號分隔開 整數部分的高位有多餘的0時,需先將多餘的0過濾後,再進行數字分隔,如 0...

數字分隔(二)

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述在乙個遙遠的國家,銀行為了更快更好的處理使用者的訂單,決定將一整串的數字按照一定的規則分隔開來,分隔規則如下 1 實數的整數部分按照每三個數字用逗號分隔開 整數部分的高位有多餘的0時,需先將多餘的0過濾後,再進行數字分隔,如 00...

NYOJ1092數字分隔(二)(水水)

參照了別人的思路。include include const int maxn 120 char s maxn int main if point strchr s,else pt len printf len pt d n len pt if len pt 3 處理進製 如果小數字大於等於3位 i...