SJTUOJ 1007. 二哥領工資
阿新 • • 發佈:2018-12-23
題目內容
題目描述
二哥當了多年的助教,今天終於要發工資了!二哥正在高興之際,得知工資是分兩部分發放的。第一部分是這學期的工資,另一部分是之前所有學期的工資總和。而領取工資時,出納員會問二哥,兩部分工資加在一起是多少,如果二哥回答錯了,就只能領到這個學期的工資之前所有學期的勞動就白費了。
二哥從小道訊息得知,出納員是個對數字敏感的人,不能有一點差錯,所以二哥需要一個程式來幫他算出精確的工資總和。
輸入格式
輸入共兩行,每行是一個十進位制表示的工資金額(沒有正負號,小數點後有兩位數字)。
輸出格式
輸出共一行,即精確的工資總和(沒有正負號,小數點後有兩位數字)。
說明
工資金額的有效數字位數不超過200位,並保證有小數點。
Sample Input
123.45
543.21
Sample Output
666.66
程式碼實現
大數加法,固定兩位小數,一次迴圈即可
#include <stdio.h>
#include <string.h>
int main()
{
char sum[202] = {0};
char input[201];
int i,j,f=0;
scanf("%s",input);
for(i = strlen(input) - 1, j = 0; i >= 0; i--){
if('.' != input[ i]){
sum[j++] = input[i] - '0';
}
}
scanf("%s",input);
for(i = strlen(input) - 1, j = 0; i >= 0; i--){
if('.' != input[i]){
sum[j] += input[i] - '0';
sum[j+1] += sum[j] / 10;
sum[j] = sum[j] % 10;
j++;
}
}
for(i = 201; i >= 0;i--){
if(!f){
if(0 == sum[i]){
continue;
}
else{
f=1;
}
}
if(1 == i){
putchar('.');
}
putchar(sum[i]+'0');
}
putchar('\n');
return 0;
}
時間:0ms 空間:8808kb