(山理工)PTA实验九:7-19 sdut-C语言实验-回文串的判断(2023)

代码源自CSDN上一位大佬的正确答案,十分感谢给予的开导。在此浅陋地对其进行了可读性优化和注释。

1.参考代码与解析

/*这道题有一个很不容易做对的测试点:"只考虑字母字符,字母的大小写没有区别。" */




#include<stdio.h>
#include<string.h>
#include<ctype.h>

int main(){
    char str1[1000];           
    char str2[1000];                         //用于存储处理后的字符串
    gets(str1);




    int length = strlen(str1);
    int sub = 0;                            //"sub":下标——用于追踪处理后字符串的下标
    for(int i=0;i<length;i++){              //遍历str1字符串,将字母字符复制到str2数组中(我们取大写字母来统一,将小写字母化为大写字母)
        if(isupper(str1[i])){               //"isupper"的函数作用:判断是否为大写字母
            str2[sub++] = str1[i];
        }
        else if(islower(str1[i])){          //"islower"的函数作用:判断是否为小写字母
            str2[sub++] = str1[i] - 32;     //大小写字母ASCII码差32,将小写字母转换为大写字母
        }
    }
    str2[sub] = '\0';                       //在处理后字符串的末尾添加结束字符,形成字符串




     //开始判断是否为回文串
    int length2 = strlen(str2);
    int flag=0;
    for(int i=0;i<length2/2;i++){           //此判断法利用的是回文串的对称性
        if(str2[i] != str2[length2-i-1]){
            flag=1;
            break;
        }
    }




    if(flag==1){
        printf("no");
    }
    else if(flag==0){
        printf("yes");
    }
    return 0;
}



2.题目

输入一个字符串(可以包含空格),判断该字符串是否为回文,只考虑字母字符,字母的大小写没有区别。
回文就是字符串中心对称,从左向右读和从右向左读的内容是一样的。

输入格式:

输入一串字符(长度小于100)。

输出格式:

若该串字符是回文串输出“yes",否则输出“no”。

输入样例:

level

输出样例:

yes

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值