最后一个测试点段错误,18分
反正我用指针经常段错误?或者大整数运算越界?
1⃣️sscanf,sprintf的头文件是cstring
将字符串转化成整数:
sscanf(字符数组名,“整数类型,可以是%lld,%d,%lf等等”,&整数变量)
将整数转换成字符串:
sprintf(字符数组名,“整数类型,可以是%lld,%d,%lf等等”,整数变量)
它们参数只差了一个 &,注意不能是string
2⃣️字符数组不能直接赋值,使用strcpy(str1,str2)可以将str2的值赋给str1
字符串长度s.length()
字符数组内容长度:strlen(s)
字符数组存储空间大小:sizeof(s)
#include<iostream>
#include<cstring>
using namespace std;
char result[10],res[10];
void reverses(char* s){
for(int i=0;i<strlen(s);i++){
res[i]=s[strlen(s)-i-1];
}
}
bool judge(char result[10]){
int n=strlen(result);
for(int i=0;i<(n/2);i++){
if(result[i]!=result[n-i-1])
return false;
}
return true;
}
bool toadd(char str1[10],char str2[10]){
long long num1,num2;
long long sum;
sscanf(str1,"%lld",&num1);
sscanf(str2,"%lld",&num2);
sum=num1+num2;
sprintf(result,"%lld",sum);
cout<<str1<<" + "<<str2<<" = "<<sum<<endl;
if(judge(result))
return true;
return false;
}
int main(){
char s[10];
cin>>s;
if(judge(s)){
cout<<s<<" is a palindromic number."<<endl;
return 0;
}
for(int i=0;i<10;i++){
char rev[10];
reverses(s);
strcpy(rev,res);
if(toadd(s,rev)){
cout<<result<<" is a palindromic number."<<endl;
return 0;
}
strcpy(s,result);
}
cout<<"Not found in 10 iterations."<<endl;
return 0;
}