题意:输入两个绝对值1e6以内的整数,输出其和,需要每三位标注一个逗号

分析:char型数组保存一下和的各位,用一个变量保存逗号信息,每三位一保存即可。需要注意如果和是负数,取模10的时候(保存和值的各位操作)同样会是负数,导致结果错误,需要绝对值操作一下。

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstring>
 4 #include<cmath>
 5 using namespace std;
 6 char s[100010]; 
 7 int main()
 8 {
 9     ios::sync_with_stdio(false);
10     cin.tie(0);
11     cout.tie(0);
12     int a,b;
13     memset(s,0,sizeof(s));
14     while(cin>>a>>b)
15     {
16         int sum=a+b;
17         int op=0;//记录逗号信息
18         int l=0;
19         int sum2=abs(sum);
20         while(sum2!=0)
21         {
22             int temp=sum2%10;
23             sum2/=10;
24             s[l++]=temp+'0';
25             op++;
26             if(op==3)//每三位需要操作一下,加入','到char型数组中
27             {
28                 op=0;
29                 s[l++]=',';
30             }
31         }
32         if(s[l-1]==',')
33         {
34             l--;
35         }
36         if(sum<0)//和为负数时注意加负号
37         {
38             s[l++]='-';
39         }
40         else if(sum==0)//处理和为0的情况
41         {
42             s[l++]='0';
43         }
44         for(int i=l-1;i>=0;i--)
45         {
46             cout<<s[i];
47         }
48         cout<<endl;
49     }
50     return 0;
51 }

 

posted on 2020-08-02 00:48  寻雾~  阅读(48)  评论(0编辑  收藏  举报