一、考点:字符串的处理
二、知识点:
- int 数据类型数值范围为-2147483648 到 2147483647。题目要求满足。
- int 数字的长度,选择数学方法,负数要取绝对值。
(int)log10(abs(sum))+1
考虑一个四位数的数字x介于两者之间1000 <= x < 10000.取所有三个组件的对数基数10给出3.000 <= log(x, 10) <= 3.999.取每个组件的底线(或int)并添加一个4 <= int(log(x, 10))+1 <= 4.忽略舍入误差,这会给出x中的位数
- int 转 string,不取绝对值会有"-"号,得出的结果sum_str是一个字符数组。
string sum_str=to_string(abs(sum));
三、代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
int sum=a+b;
int len=(int)log10(abs(sum))+1;
if (len<=3)
{
cout<<sum;
}
else
{
if(sum<0) cout<<"-";
string sum_str=to_string(abs(sum));
int m=len%3;
if(m!=0)
{
for(int i=0;i<m;i++)
{
cout<<sum_str[i];
}
cout<<",";
}
int k=0;
for(int i=m;i<len;i++)
{
cout<<sum_str[i];
k++;
if(k==3 && i<len-1)
{
cout<<",";
k=0;
}
}
}
}