ZOJ 2476 Total Amount 字符串

来源:互联网 发布:手机解压rar软件 编辑:程序博客网 时间:2024/05/17 05:03

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1476

题目大意:

给你n串数字组成的字符串,要求输出他们相加的和。

如:n= 2
输入$1,123.45和$2,890.23要求输出$4,013.68

思路:

先存入字符数组,然后在转化为double,然后在用sprintf存进字符数组,然后判断是否要输出','输出即可

#include<cstdio>#include<cstring>const int MAXN=50;char a[MAXN];int main(){int n;while(~scanf("%d",&n),n){double ans=0;double temp;for(int i=0;i<n;i++){temp=0;scanf("%s",a);int len=strlen(a);bool point=false;for(int j=1;j<len;j++){if(a[j]==',')continue;if(a[j]=='.'){point=true;continue;}if(point){if(j==len-2)temp+=(a[j]-'0')*0.1+(a[j+1]-'0')*0.01;else if(j==len-1)temp+=(a[j]-'0')*0.1;break;}elsetemp=temp*10+a[j]-'0';}ans+=temp;}bool print_commas[MAXN]={0};char res[MAXN];sprintf(res,"%.2lf",ans);int id=strchr(res,'.')-res;for(int cnt=1;id>=0;id--){if(cnt==3){print_commas[id]=true;cnt=1;continue;}cnt++;}int len=strlen(res);printf("$");for(int i=0;i<len;i++){if( i!=0 &&print_commas[i+1]==true) //忘了i!=0的判断了- -|||printf(",");printf("%c",res[i]);}printf("\n");}return 0;}


1 0
原创粉丝点击