1007. 二哥領(lǐng)工資
題目描述
二哥當了多年的助教,今天終于要發(fā)工資了东跪!二哥正在高興之際畸陡,得知工資是分兩部分發(fā)放的。第一部分是這學(xué)期的工資虽填,另一部分是之前所有學(xué)期的工資總和丁恭。而領(lǐng)取工資時,出納員會問二哥斋日,兩部分工資加在一起是多少牲览,如果二哥回答錯了,就只能領(lǐng)到這個學(xué)期的工資之前所有學(xué)期的勞動就白費了恶守。
二哥從小道消息得知第献,出納員是個對數(shù)字敏感的人,不能有一點差錯兔港,所以二哥需要一個程序來幫他算出精確的工資總和庸毫。
輸入格式
輸入共兩行,每行是一個十進制表示的工資金額(沒有正負號衫樊,小數(shù)點后有兩位數(shù)字)飒赃。
輸出格式
輸出共一行,即精確的工資總和(沒有正負號橡伞,小數(shù)點后有兩位數(shù)字)盒揉。
說明
工資金額的有效數(shù)字位數(shù)不超過200位晋被,并保證有小數(shù)點兑徘。
Sample Input
123.45
543.21
Sample Output
666.66
分析
200位輸入,不能使用double羡洛,只是用字符串來進行大數(shù)相加挂脑。
#include <stdio.h>
int main()
{
char a[210], b[210];
int len_a, len_b;
char sum[210];
char tmp;
int len_sum;
int i, j;
char flag=0;
for(len_a=0; (a[len_a]=getchar())!='\n';) {
if(a[len_a]!='.')
len_a++;
}
for(len_b=0; (b[len_b]=getchar())!='\n';) {
if(b[len_b]!='.')
len_b++;
}
len_sum=0;
if(len_a<len_b)
{
for(i=len_a-1, j=len_b-1; i>=0; i--, j--) {
tmp=a[i]+b[j]+flag-'0';
if(tmp>'9') {
flag=1;
sum[len_sum]=tmp-10;
}
else {
sum[len_sum]=tmp;
flag=0;
}
len_sum++;
}
for(; j>=0; j--) {
tmp=b[j]+flag;
if(tmp>'9') {
flag=1;
sum[len_sum]=tmp-10;
}
else {
sum[len_sum]=tmp;
flag=0;
}
len_sum++;
}
if(flag) {
sum[len_sum]='1';
len_sum++;
}
}
else
{
for(i=len_b-1, j=len_a-1; i>=0; i--, j--) {
tmp=b[i]+a[j]+flag-'0';
if(tmp>'9') {
flag=1;
sum[len_sum]=tmp-10;
}
else {
sum[len_sum]=tmp;
flag=0;
}
len_sum++;
}
for(; j>=0; j--) {
tmp=a[j]+flag;
if(tmp>'9') {
flag=1;
sum[len_sum]=tmp-10;
}
else {
sum[len_sum]=tmp;
flag=0;
}
len_sum++;
}
if(flag) {
sum[len_sum]='1';
len_sum++;
}
}
for(i=len_sum-1; i>=0; i--) {
if(i==1)
putchar('.');
putchar(sum[i]);
}
return 0;
}