#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
int main()
{
char a[1001];
int n, i, j;
cin>>a; // 输入字符串,注意:这里不会处理空格
n = strlen(a); // 获取字符串长度
// 只检查到字符串长度的一半(如果是奇数,则少检查一个字符)
for (i = 0, j = n - 1; i < n / 2; i++, j--) {
if (a[i] != a[j]) { // 比较字符
cout<<"不是一个回文数!"<<endl;
return 0;
}
}
cout<<"是一个回文数!"<<endl; // 如果循环结束没有打印"不是一个回文数!",则是回文
return 0;
}
代码思路:
-
字符串输入:使用 cin>>a
;
读取字符串,但它不会处理字符串中的空格。 -
字符串长度:
strlen(a)
函数返回字符串a
的长度,即它包含的字符数(不包括结尾的\0
)。 -
回文检查:使用两个索引
i
和j
分别从字符串的开头和结尾开始,向中间移动。每次比较a[i]
和a[j]
是否相等。如果所有的对应字符都相等,则字符串是回文的。 -
字符串长度一半:因为只需要比较到字符串的一半,所以循环条件是
i<n/2
。如果n
是奇数,中间的字符不需要比较,因为回文中间字符既可以是前半部分也可以是后半部分。 -
输出结果:如果所有字符都匹配,则输出字符串是回文的消息;否则,一旦找到不匹配的字符,就输出字符串不是回文的消息,并结束程序。