回文
通过课程进入 | 题 号: | 99 | 回文 | 语言要求: | C++ |
回文测试:输入一30个字符以内的字符串,判断是否为回文;如果是,则打印"true";否则打印"false"。像"aba"这样的从左往右读与从右往左读一致就是回文。 |
#include<stdio.h>
#include<string.h>
char a[100],s[100];
int len;
void hui(int y);
int main(){
gets(a);
len=strlen(a);
int k=len/2-1; //一半
hui(k);
return 0;
}
void hui(int y){
int u;
int top=0;
for(u=0;u<=y;u++){
s[++top]=a[u];
}
if(len%2==0){
y=y+1;
}else{
y=y+2;
}
for(u=y;u<len;u++){
if(a[u]!=s[top])
break;
top--;
}
if(top==0)
{printf("true");
}else{
printf("false");
}
}
这段代码是一个判断字符串是否为回文的程序,即判断一个字符串从左往右读和从右往左读是否一样。它的具体实现过程如下:
1. 第 1 行和第 2 行是 C 语言中的预处理器指令,用于导入 `stdio.h` 和 `string.h` 这两个头文件,这些头文件包含了 I/O 和字符串操作相关的函数等信息。
2. 第 4 行定义了一个字符数组 `a`,长度为 100,用于存储输入的字符串。
3. 第 5 行定义了另一个字符数组 `s`,长度为 100,用于存储处理后的字符串。
4. 第 6 行定义了一个 `len` 变量,用于存储输入字符串的长度。
5. `hui()` 函数的主要功能是判断输入的字符串是否为回文,其输入参数为一个整数 `y`,表示选取前 y 个作为回文比较的内容。
6. 在 `hui()` 函数中,首先定义了一个整数变量 `top`,用于记录当前栈顶位置,初始化为 0。
7. 接着,在循环中,将一个字符 `a[u]` 压入栈 `s` 中,并移动栈顶指针(`++top`)。
8. 根据回文字符串中字符数的奇偶性,决定需要进行比较的字符范围,并在循环中依次比较字符 `a[u]` 是否与栈顶字符 `s[top]` 相同。如果相同,则将栈顶指针向下移动一位 ( `top--`)。
9. 最后,判断栈是否为空。如果为空,则表示字符串是回文;否则,表示该字符串不是回文。
10. 在 `main()` 函数中,首先调用了 `gets()` 函数来获取输入的字符串,并使用 `strlen()` 函数计算字符串长度。然后,计算需要比较的字符区间的右端点 `k`,并调用 `hui()` 函数进行比较。最后返回 0,表示程序执行成功。