题目内容
题目描述
二哥当了多年的助教,今天终于要发工资了!二哥正在高兴之际,得知工资是分两部分发放的。第一部分是这学期的工资,另一部分是之前所有学期的工资总和。而领取工资时,出纳员会问二哥,两部分工资加在一起是多少,如果二哥回答错了,就只能领到这个学期的工资之前所有学期的劳动就白费了。
二哥从小道消息得知,出纳员是个对数字敏感的人,不能有一点差错,所以二哥需要一个程序来帮他算出精确的工资总和。
输入格式
输入共两行,每行是一个十进制表示的工资金额(没有正负号,小数点后有两位数字)。
输出格式
输出共一行,即精确的工资总和(没有正负号,小数点后有两位数字)。
说明
工资金额的有效数字位数不超过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