C语言中输入一个以回车符为结束标志的字符串(少于80个字符)判断该字符是否为回文,如果是,输出Yes ,否则输出No
时间: 2024-02-15 20:02:18 浏览: 85
好的,以下是 C 语言代码实现:
```c
#include <stdio.h>
#include <string.h>
int main() {
char string[80];
printf("请输入一个字符串: ");
fgets(string, 80, stdin);
int len = strlen(string) - 1;
for(int i = 0; i < len/2; i++) {
if(string[i] != string[len-i-1]) {
printf("No");
return 0;
}
}
printf("Yes");
return 0;
}
```
解释一下代码:首先,我们定义一个长度为 80 的字符数组 string 来存储用户输入的字符串。然后,使用 fgets() 函数从标准输入流(键盘输入)中读取字符串。接着,我们计算出字符串的长度,并使用一个 for 循环来遍历字符串的前一半字符。在循环中,我们比较字符串的第 i 个字符和倒数第 i+1 个字符是否相等。如果它们不相等,则说明字符串不是回文,输出 No。如果遍历完字符串的前一半字符后都没有发现不相等的情况,则说明字符串是回文,输出 Yes。
相关问题
用c语言编写 判断回文字符串。输入一个以回车符为结束标志的字符串(少于 80 个字符),判断该字符串是否为回文
以下是用C语言编写的判断回文字符串的程序[^1]:
```c
#include <stdio.h>
#include <string.h>
int main() {
char a[100]; // 声明一个字符数组来存储输入的字符串
fgets(a, sizeof(a), stdin); // 从标准输入获取字符串,包括回车符
int len = strlen(a) - 1; // 计算字符串长度(不包括结尾的'\0')
int i = 0;
while (i < len / 2) { // 只需比较一半的字符,因为另一半会与前面匹配
if (a[i] != a[len - i]) { // 如果当前字符和对应的反转字符不同
break; // 打破循环,非回文
}
i++;
}
// 输出原始字符串
printf("%s", a);
// 根据比较结果输出Yes或No
if (i >= len / 2)
printf("\nYes");
else
printf("\nNo");
return 0;
}
```
这个程序首先通过`fgets`获取输入的字符串,然后逐半比较字符,如果发现有任何一对字符不相等,则立即停止并输出"No"。如果所有对称的字符都匹配,则输出"Yes"。
c语言编程 输入一个以回车符为结束标志的字符串(少于80个字符),判断该字符串是否为回文。 回文就是字符串中心对称,如“abcba”、“abccba”是回文,“abcdba”不是回文。
好的,我可以帮你解决这个问题。你可以参考以下代码实现:
```c
#include <stdio.h>
#include <string.h>
int main(void) {
char str[80];
int len, i, flag = 1; // flag为标志位,初值为1表示是回文
printf("请输入一个字符串:");
fgets(str, 80, stdin);
len = strlen(str) - 1; // 去掉回车符的长度
for (i = 0; i < len / 2; i++) {
if (str[i] != str[len - i - 1]) {
flag = 0; // 不是回文
break;
}
}
if (flag) {
printf("是回文字符串\n");
} else {
printf("不是回文字符串\n");
}
return 0;
}
```
这个程序会让你输入一个字符串,然后判断是否为回文字符串。它的实现思路是:将字符串分成前半部分和后半部分,然后逐个比较对应位置的字符是否相同,如果不同,则不是回文字符串。如果全部比较完成都是相同的,则是回文字符串。
阅读全文