字符串格式
1. 题目地址
https://www.acwing.com/problem/content/1475/
2. 题目解析

根据上述图片,我们可以发现:给定一个数字12345,我们需要做的就是从后往前每三位添加一个逗号,添加完逗号之后,再进行输出。
需要注意的是,如果数字不足四位,则不需要添加逗号。
3. 题解
当我们在处理有关字符串的问题时,通常有两种解决思路:
1. 使用C++中的string数据类型,string类型内部提供了很多的API,以至于我们可以很方便的处理字符串问题。(80%)
2. 使用char[]来解决。(20%)需要注意的是:如果有些题目对于时间复杂度有着非常高的要求,那么使用char[]要比string效率更高。
这道题的解决思路如下:
1. 输入a和b。
2. 将a和b相加。
3. 将a+b转换成字符串。
4. 往字符串中添加逗号,最后输出即可。
需要注意的就是:将a+b转换成字符串时,我们可以使用C++11中的函数to_string()。该函数可以把整数或浮点数均转换为字符串。
如果我们不想用to_string()函数的话,我们就需要手动实现将数字转换成字符串的过程。具体思路如下:
1. 初始化一个string类型的字符串res。
2. 取出数字的个位(%10),将个位转换成字符(加上'0'),添加到res的前面。
3. 将数字本身除10,继续上述过程,当数字为0时,转换结束。
在上述过程中,我们需要考虑数字为负数和数字为0的情况。如果数字为0,那么字符串直接转换成"0"即可。如果数字为负数,我们需要将数字取绝对值之后,再进行转换,最后添加负号即可。
4. 代码
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
int a,b;
scanf("%d%d",&a,&b);
int number = a+b;
string str_number = to_string(number);
string res = "";
for( int i = str_number.size() - 1 , j = 0; i >= 0; i-- ){
res = str_number[i] + res;
j++;
if( j % 3 == 0 && i && str_number[i - 1] != '-' ){
res = ',' + res;
}
}
cout << res << endl;
return 0;
}
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main(){
int a,b;
scanf("%d%d",&a,&b);
int sum = a + b;
string str_number = "";
int number = abs(sum);
if(number == 0){
str_number = "0";
}
while(number){
str_number = char(number % 10 + '0') + str_number;
number /= 10;
}
if(sum < 0){
str_number = '-' + str_number;
}
string res = "";
for(int i = str_number.size() - 1,j = 0; i >= 0; i--){
res = str_number[i] + res;
j++;
if(j % 3 == 0 && i && str_number[i - 1] != '-'){
res = ',' + res;
}
}
cout << res << endl;
return 0;
}
作者:gao79138
链接:https://www.acwing.com/
来源:本博客中的截图、代码模板及题目地址均来自于Acwing。其余内容均为作者原创。
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程