1. 程式人生 > >SJTUOJ 1007. 二哥領工資

SJTUOJ 1007. 二哥領工資

題目內容

題目描述
二哥當了多年的助教,今天終於要發工資了!二哥正在高興之際,得知工資是分兩部分發放的。第一部分是這學期的工資,另一部分是之前所有學期的工資總和。而領取工資時,出納員會問二哥,兩部分工資加在一起是多少,如果二哥回答錯了,就只能領到這個學期的工資之前所有學期的勞動就白費了。

二哥從小道訊息得知,出納員是個對數字敏感的人,不能有一點差錯,所以二哥需要一個程式來幫他算出精確的工資總和。

輸入格式
輸入共兩行,每行是一個十進位制表示的工資金額(沒有正負號,小數點後有兩位數字)。

輸出格式
輸出共一行,即精確的工資總和(沒有正負號,小數點後有兩位數字)。

說明
工資金額的有效數字位數不超過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