1136 A Delayed Palindrome (20 point(s))字符串和整数转换,字符串和字符数组

本文介绍了在C++编程中,使用sscanf和sprintf进行字符串与整数转换时可能出现的问题,如段错误和大整数运算越界。强调了头文件的正确引用,字符数组的操作,以及字符串长度的获取方法。同时,通过示例展示了如何判断回文数,并在10次尝试内寻找加法结果为回文数的组合。
摘要由CSDN通过智能技术生成

最后一个测试点段错误,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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值