字符串处理问题,本题考察的知识点有,回文字符的判断,大数的计算方法。
坑点如下
1,要单独判断给出的数是否是回文字符
2,reverse函数的用法
reverse(t.begin(),t.end());
3,大数的计算方法
string Add(string a,string b){
int sp=0,num=0,cnt=0;
string s;
for(int i=a.size()-1;i>=0;i--){
num=a[i]-'0'+b[i]-'0'+cnt;
sp=num%10;
s.insert(0,to_string(sp));
cnt=num/10;
}
if(cnt!=0)s.insert(0,to_string(cnt));
return s;
}
4,string中insert函数的使用。
s.insert(0,to_string(sp));//插入字符串
s.insert(s.begin(),a[5]);//插入单个字符
整体代码如下
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
string Add(string a,string b){
int sp=0,num=0,cnt=0;
string s;
for(int i=a.size()-1;i>=0;i--){
num=a[i]-'0'+b[i]-'0'+cnt;
sp=num%10;
s.insert(0,to_string(sp));
cnt=num/10;
}
if(cnt!=0)s.insert(0,to_string(cnt));
return s;
}
int main(){
string ori,changed,judge,t;
int ori1,changed1;
cin>>ori;
t=ori;
reverse(t.begin(),t.end());
if(t==ori){printf("%s is a palindromic number.\n",ori.c_str());
return 0;}
for(int i=0;i<10;i++){
changed=ori;
reverse(changed.begin(),changed.end());
judge=Add(ori,changed);
printf("%s + %s = %s\n",ori.c_str(),changed.c_str(),judge.c_str());
t=judge;
reverse(t.begin(),t.end());
if(t==judge)
{ printf("%s is a palindromic number.\n",judge.c_str());
return 0;}
ori=judge;
}
printf("Not found in 10 iterations.\n");
return 0;
}