PAT1001 A+B Format

 题目:PAT 1001

 

题解:本来觉得是道水题,结果花了我好长时间...萌新瑟瑟发抖

起初我是想用mod三位三位的输出,但是发现一个是顺序问题,还有就是假如为1,001,001,那么每三位中前的0也不好处理,所以就放弃了。

因为是要添加逗号,再考虑到顺序问题,顺其自然的想到了字符串。把加起来的和放到字符数组中,每3位添加一个逗号,最后倒序输出。

总觉得好像麻烦了...能逮到耗子的就是好猫..

 

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cstring>
 4 
 5 using namespace std;
 6 
 7 char n[11];
 8 
 9 int main()
10 {
11     int a,b,num,i;
12     bool f=false;
13 
14     scanf("%d%d",&a,&b);
15 
16     num=a+b;
17     if(num<0){//判断是不是最后要加负号
18          f=true;
19          num=-num;//把负数转化为整数处理更方便
20     }
21 
22     if(num==0) printf("0");//结果为零的情况
23     else{
24         for(i=1;num>0;i++){
25             if(i%4==0&&i>=4){
26                 n[i]=',';
27             }else{
28                 n[i]=num%10+48;//根据ASCII码来把整数转化为字符
29                 num/=10;
30             }
31         }
32         if(f) n[i+1]='-';
33 
34 
35         for(int i=11;i>=1;i--)//倒序输出
36             if(n[i]!=0) printf("%c",n[i]);
37         }
38 
39     return 0;
40 }

 

posted on 2017-02-24 00:11  RocSAMA  阅读(102)  评论(0)    收藏  举报