题目链接:PTA | 程序设计类实验辅助教学平台
题目大意:输入两个数(范围int就够了),输出他们的和,要求右数每三位用一个comma就是逗号隔开。
一开始做的:
用string记录每一位。
1.注意负数是每次取余得到的是负数,所以一开始abs一下
2.最后记得补上负号输出
3.记得考虑0的情况,测试点4
#include<bits/stdc++.h>
using namespace std;
int a, b, c, cnt = 1 ;
string s;
int main(){
cin >> a >> b;
c = abs(a + b);
while( c ){
s += ( c%10 + '0' );
if( cnt % 3 == 0 && c > 9 ) s += ',';
cnt ++ , c /= 10;
}
if( a+b < 0 ) cout << "-";
if( a+b == 0 ) cout << 0 ;
for( int i = s.length()-1 ; i >= 0 ; i -- ) cout << s[i];
cout << endl;
}
后面想到用to_string()
#include<bits/stdc++.h>
using namespace std;
int a, b, len;
string s;
int main(){
cin >> a >> b;
s = to_string(a+b);
len = s.length();
for( int i = 0; i < len; i ++ )
cout << s[i] << ( (len-i-1) % 3 == 0 && s[i] != '-' ? ( i == len - 1 ? "\n" : ",") : "" ) ;
}
10行ac