判断字符串是否为回文

#include <stdio.h>
#include <stdlib.h>
#include <cstring>
int main(int argc, char *argv[]) {
    char a[6];
    int i,j;
    scanf("%s",a);
    //scanf("%c",&a);   %c需要取地址符
    int h=1;
    int len=strlen(a);
    for(i=0,j=len-1;i<j;i++,j--){
        if(a[i]!=a[j]){
            h=0;
            break;
        }
    }
    if(h) printf("YES!");
    else printf("NO!");
    return 0;
}

回文字符串就是正读和反读都一样的字符串

例如:

aa、aassaa、20200202就是回文字符串

而ab、aabb、2022就不是

 

也就是只需要将反过来的字符串与原本的字符串比较,只要有一个不相同,那么这个字符串就不是回文字符串

在这里我给了i,j两个变量,分别从字符串的开头和结尾开始移动并进行比较

 

关于输入、输出的一些内容:

%c用于读取或输出单个字符

输入:读取下一个字符,包括空白字符(如空格、制表符和换行符)

输出:将单个字符显示在输出中

 

%s 用于读取或输出字符串(即字符数组,以空字符 `\0` 结尾)

输入:读取一系列字符,直到遇到空白字符(如空格、制表符或换行符)或文件结束符为止。会自动在字符串末尾添加空字符 `\0`
输出:输出整个字符串,直到遇到空字符 `\0` 为止

 

注意:

1.%c需要取地址符&,但%s不用

2.使用 %s 时,需要确保目标字符数组有足够的空间来存储输入的字符串,以防止缓冲区溢出

3.在输入时也可以使用限制长度的格式说明符,如 %99s

 

posted @ 2025-06-08 15:03  Crane71  阅读(45)  评论(0)    收藏  举报