目录
1,题目描述
2,思路
我的:
先将两个数o求和得到sum,若sum为负数,先输出“-”,然后取绝对值;
sum%1000,sum/=1000,将其分成三位三位的数字,并存入out数组中;
从后向前遍历,按格式输出;(即: 栈)
大神的:
直接将a+b转换成字符串,根据特定的位置区分输出。。。
3,测试过程
- 由于是字符串与数字交替输出,需注意先输出符号,再将sum取绝对值;
- sum可能开始就为0,按照我的代码来看,需要提前判断一下,将其入栈,以免出现段错误(数组越界);
- 0->000; 1->001; 10->010;
4,代码【C++】
我的:
#include<iostream>
#include<string>
#include<vector>
#include<math.h>
using namespace std;
int main()
{
int a, b, sum;
cin>>a>>b;
sum = a + b;
vector<int> out;
if(sum < 0) cout<<"-";
sum = fabs(sum); //取整数
if(sum == 0) out.push_back(sum);//测试点4 段错误改正
while(sum != 0){
out.push_back(sum % 1000);
sum /= 1000;
}
cout<<out[out.size() - 1];
for(int i = out.size() - 2 ; i >= 0 ; i--){
if(out[i] == 0) cout<<","<<"000";
else if(out[i] < 10) cout<<","<<"00"<<out[i];
else if(out[i] <100) cout<<","<<"0"<<out[i];
else cout<<","<<out[i];
}
return 0;
}
大神的:
#include <iostream>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
string s = to_string(a + b);
int len = s.length();
for (int i = 0; i < len; i++) {
cout << s[i];
if (s[i] == '-') continue;
if ((i + 1) % 3 == len % 3 && i != len - 1) cout << ",";
}
return 0;
}