基于C语言,判断字符串是否为回文?若是则输出YES,否则输出NO。回文是指顺读和倒读都一样的字符串。
时间: 2024-02-19 16:02:29 浏览: 72
好的,下面是基于C语言的代码实现:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
int i, len, flag = 0;
printf("请输入一个字符串:");
fgets(str, 100, stdin);
len = strlen(str) - 1; // 去除字符串末尾的换行符
for (i = 0; i < len/2; i++) {
if (str[i] != str[len-i-1]) {
flag = 1;
break;
}
}
if (flag == 1) {
printf("NO\n");
} else {
printf("YES\n");
}
return 0;
}
```
这个程序首先使用 `fgets` 函数从标准输入读取一个字符串,然后计算该字符串的长度 `len`,接着使用一个 for 循环遍历前半部分字符,判断对应位置的字符是否与后半部分对称位置的字符相等,如果不相等,就将 `flag` 置为 1,表示不是回文字符串。最后根据 `flag` 的值输出 YES 或 NO。
相关问题
用c语言编写1、判断字符串是否为回文?若是,则输出YES,否则输出NO。回文是指顺读和倒读都一样的字符串。 2、将s数组中下标为偶数同时ASCII值为奇数的字符删除,s串中剩余的字符形成的新串放在数组中,并输出。 3、将s数组中的字母转换为按字母序列的后续字母(但z转换为A,z转换为a),其他字符不变。 4、编写程序,输入任意一个含有空格的字符串(至少 10 个字符),删除指定位置的字符后输出该字符串。如:输入"BEIJING123"和删除位置 3,则输出:"BEIING123"。
以下是本人编写的c语言代码,实现了上述四个问题的功能:
1、判断字符串是否为回文:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str[100];
int i, len, flag = 0;
printf("请输入字符串:");
scanf("%s", str);
len = strlen(str);
for (i = 0; i < len / 2; i++)
{
if (str[i] != str[len - i - 1])
{
flag = 1;
break;
}
}
if (flag)
printf("NO\n");
else
printf("YES\n");
return 0;
}
```
2、将s数组中下标为偶数同时ASCII值为奇数的字符删除:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char s[100], new_s[100] = {0};
int i, j = 0, len;
printf("请输入字符串:");
scanf("%s", s);
len = strlen(s);
for (i = 0; i < len; i++)
{
if (i % 2 == 0 && s[i] % 2 != 0)
continue;
else
new_s[j++] = s[i];
}
printf("删除指定字符后的字符串为:%s\n", new_s);
return 0;
}
```
3、将s数组中的字母转换为按字母序列的后续字母:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char s[100];
int i, len;
printf("请输入字符串:");
scanf("%s", s);
len = strlen(s);
for (i = 0; i < len; i++)
{
if (s[i] >= 'A' && s[i] <= 'Z')
s[i] = (s[i] - 'A' + 1) % 26 + 'A';
else if (s[i] >= 'a' && s[i] <= 'z')
s[i] = (s[i] - 'a' + 1) % 26 + 'a';
}
printf("转换后的字符串为:%s\n", s);
return 0;
}
```
4、删除指定位置的字符:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str[100];
int i, len, pos;
printf("请输入字符串:");
fgets(str, sizeof(str), stdin);
len = strlen(str);
if (str[len - 1] == '\n')
str[len - 1] = '\0';
printf("请输入要删除的位置:");
scanf("%d", &pos);
for (i = pos - 1; i < len - 1; i++)
str[i] = str[i + 1];
str[len - 1] = '\0';
printf("删除指定位置后的字符串为:%s\n", str);
return 0;
}
```
希望我的回答能够帮助到你!
c语言 判断输入的一个字符串是否为回文串,若是输出Yes,否则输出No。回文串是指正读和反读都一样的字符串,如level。 【输入】 输入一个字符串。 【输出】 输出Yes或No。
以下是用 C 语言实现判断输入的一个字符串是否为回文串的代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
int i, len, flag = 0;
printf("请输入一个字符串:");
scanf("%s", str);
len = strlen(str);
for (i = 0; i < len / 2; i++) {
if (str[i] != str[len - i - 1]) {
flag = 1;
break;
}
}
if (flag)
printf("No\n");
else
printf("Yes\n");
return 0;
}
```
程序中先定义了一个字符串变量 `str`,然后通过 `scanf` 函数获取用户输入的字符串。接着使用 `strlen` 函数获取字符串的长度,并通过循环判断每一个字符是否与对应位置的字符相同,如果不相同,则将 `flag` 标记为 `1`,并跳出循环。最后根据 `flag` 的值输出结果。
阅读全文
相关推荐
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)