用C语言编程程序:从键盘输入一个字符串(长度小于80),判断是否为回文,如果是回文,输出Yes,否则输出No。回文是指正向、反向拼写都一样的字符串。例如ABCBA是回文,ABCD不是回文。
时间: 2024-05-01 20:18:09 浏览: 10
好的,以下是用C语言编写的程序:
```
#include <stdio.h>
#include <string.h>
int main() {
char str[80];
int len, i, j;
int isPalindrome = 1; // 假设是回文字符串
printf("请输入一个字符串:");
scanf("%s", str);
len = strlen(str);
for (i = 0, j = len - 1; i < j; i++, j--) {
if (str[i] != str[j]) {
isPalindrome = 0; // 如果不相同,则不是回文字符串
break;
}
}
if (isPalindrome) {
printf("Yes\n");
} else {
printf("No\n");
}
return 0;
}
```
程序中,首先从键盘输入一个字符串,然后通过循环判断字符串的正向和反向是否相同,如果不相同,则不是回文字符串,否则是回文字符串。最后根据 isPalindrome 变量的值输出 Yes 或 No。
相关问题
用C语言写一个程序,输入一个长度不超过20的字符串,判断这个字符串是否为回文。如果是回文,则输出"YES",否则输出"NO"。
以下是使用C语言编写的程序,可以实现输入一个长度不超过20的字符串,判断其是否为回文:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str[21]; // 声明一个长度为21的字符数组,用于存储输入的字符串,包括末尾的'\0'
int len, i, j, flag = 1; // 定义字符串长度、循环变量i和j,以及标志位flag
printf("请输入一个长度不超过20的字符串:");
scanf("%s", str); // 读入字符串
len = strlen(str); // 计算字符串长度
// 从头尾同时遍历字符串,判断对应字符是否相等
for (i = 0, j = len - 1; i < len / 2; i++, j--)
{
if (str[i] != str[j]) // 如果发现不相等的字符
{
flag = 0; // 将标志位设置为0,表示不是回文
break; // 跳出循环
}
}
if (flag) // 如果标志位为1,说明是回文
{
printf("YES\n");
}
else // 否则不是回文
{
printf("NO\n");
}
return 0;
}
```
程序中使用了一个标志位flag,用于判断输入的字符串是否为回文。首先读入字符串并计算其长度,然后从头尾同时遍历字符串,判断对应字符是否相等,如果发现不相等的字符,则将标志位设置为0并跳出循环,最后根据标志位输出结果。
c语言判断输入的字符串是否为回文串,如果是输出yes,如果不是输出no。
可以使用双指针来判断一个字符串是否为回文串。具体做法如下:
1. 定义两个指针i和j,分别指向字符串的起始位置和末尾位置。
2. 循环比较i和j指向的字符是否相等,如果不相等,说明该字符串不是回文串,输出no。
3. 如果相等,将i指针往右移动一位,j指针往左移动一位,继续进行比较。
4. 当i和j指针相遇时,说明该字符串是回文串,输出yes。
下面是C语言实现的代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
int i, j, len;
printf("请输入一个字符串:");
gets(str); // 输入字符串
len = strlen(str);
for (i = 0, j = len - 1; i < j; i++, j--) {
if (str[i] != str[j]) {
printf("no\n");
return 0;
}
}
printf("yes\n");
return 0;
}
```
需要注意的是,上面的代码使用了gets函数来获取输入的字符串,但是gets函数存在安全隐患,应该尽量避免使用。可以使用fgets函数替代,具体用法可以参考C语言的相关教材。