回文是指正读和反读都一样的字符串,如abcba就是一个回文, 从键盘输入一个字符串判断其是否是回文,如果是则输出"Yes!", 否则输出"No!",请填空完成相应功能。 输入输出样例如下: 输入样例1: abccba 输出样例1: Yes! 输入样例2: abcde 输出样例2: No! #include <stdio.h> #include <string.h> #define N 80 int main(void) {char s[N]; int i,j; gets(s); //输入一个字符串 i=0; j= ; while( ) {if( ) {i++; j--; } else ; } if( ) printf("Yes!\n"); else printf("No!\n"); return 0; }
时间: 2024-03-05 15:48:58 浏览: 96
这道题目可以使用双指针法来解决,具体方法是使用两个指针从字符串的两端开始向中间移动,如果两个指针所指的字符相同,则继续向中间移动,否则说明该字符串不是回文。
具体的代码如下:
```c
#include <stdio.h>
#include <string.h>
#define N 80
int main(void) {
char s[N];
int i, j;
gets(s); //输入一个字符串
i = 0;
j = strlen(s) - 1;
while (i < j) {
if (s[i] == s[j]) {
i++;
j--;
} else {
break;
}
}
if (i >= j) {
printf("Yes!\n");
} else {
printf("No!\n");
}
return 0;
}
```
其中,`gets(s)` 用于从标准输入中读入一个字符串,`strlen(s)` 用于获取字符串的长度。双指针法的具体实现在 `while` 循环中,如果两个指针所指的字符相同,则继续向中间移动,否则退出循环。最后根据循环结束时两个指针的位置判断字符串是否是回文,如果是,输出 "Yes!",否则输出 "No!"。
需要注意的是,由于 `gets` 函数不安全,可能会导致缓冲区溢出等问题,所以在实际使用中应该使用更安全的函数替代,例如 `fgets`。
阅读全文