判断字符串是否为回文
#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

浙公网安备 33010602011771号