zoj 2476 Total Amount

/*
zoj_2476    字符串处理
简单的字符串处理,但有很多小问题需要注意,wa了数次才过。
注意点:
1.应该*100把小数点去掉,不要用double处理
2.结果小于10和100时的特判
3.不要在最前面输出','

收获:
这题用double做时导致了各种错误。。double在比较的时候不能直接比较大小,
而要用eps控制。
*/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <math.h>
using namespace std;

int count( string s )
{
    int i;
    int num=0,mul=100;
    num+=( 10*( s[s.size()-2]-'0' )+( s[s.size()-1]-'0' ) ) ;
    for( i=s.size()-4;i>=1;i-- )
    {
        if( s[i]!=',' )
        {
            num+=( mul*(s[i]-'0') );
            mul*=10;
        }
    }
    return num;
}

void print( string s )
{
    int i,co=0;
    string re="";
    if( s.size()==1 )
    {
        re+=s[ s.size()-1 ];
        re+="0.0";
    }
    else if( s.size()==2 )
    {
        re+=s[ s.size()-1 ];
        re+=s[ s.size()-2 ];
        re+=".0";
    }
    else
    {
        re+=s[ s.size()-1 ];
        re+=s[ s.size()-2 ];
        re+='.';
        for( i=s.size()-3;i>=0;i-- )
        {
            re+=s[i];
            co++;
            if( co%3==0 && i!=0 )  re+=',';
        }
    }
    re+='

; for( i=re.size()-1;i>=0;i-- ) cout<<re[i]; cout<<endl;}int main(){ int n,i,sum; string s; char temp[20]; while( cin>>n && n ) { sum=0; for( i=0;i<n;i++ ) { cin>>s; sum+=count(s); } sprintf( temp,"%d",sum ); s=""; s.append(temp); print( s ); } return 0;}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值