pat甲级1001 A+B Format
题意:输入两个绝对值1e6以内的整数,输出其和,需要每三位标注一个逗号
分析:char型数组保存一下和的各位,用一个变量保存逗号信息,每三位一保存即可。需要注意如果和是负数,取模10的时候(保存和值的各位操作)同样会是负数,导致结果错误,需要绝对值操作一下。
1 #include2 #include 3 #include 4 #include 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 }