题目介绍
实现思路
- 首先这是一个字符串处理问题,那我们首先想到string类及其成员函数
- 既然输入是int类型,而这题我们对字符串进行处理会方便很多,那么就用to_string函数把int变为string类型
- 然后我们要处理3个数一组(从右往做算),那么我们可以用取模
- 但是如果是负数那么就需要考虑负号,负号是不算数的,所以我们需要去处理,解决的办法是先输出当前的字符,然后判断是否为负号,如果是负号那么跳过当前循环直接进入下一轮
实现代码
#include<iostream>
#include<cstdio>
#include<vector>
#include<cstring>
#include<sstream>
#include<algorithm>
using namespace std;
int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("1.txt", "r", stdin);
#endif
int a,b;
cin>>a>>b;
string str=to_string(a+b);
int len=str.length();
for(int i=0;i<len;i++)
{
cout<<str[i];
if(str[i]=='-')
continue;
/*这一个判断语句解释一下,i+1是指i从0开始,因为实际上是没有第0个字符串的,只是C的数组是从0开始,所以需要变一下,len%3是精华,这里既考虑了3个一组,又考虑了负号的情况,自己体会一下;最后的条件就是防止最后一组也是3个数,但不输出逗号的情况,这样就表明无论最后一组是否为3个数一组,都不加逗号*/
if((i+1)%3==len%3 && (i != len-1))
cout<<",";
}
return 0;
}
Comments | 1 条评论
博客作者 Vina Husband
I appreciate your talent for making accessible complex concepts into comprehensible bits. Impressive.