c语言编写一个函数palinddrome(char *pstr),该函数用于判断字符指针变量pstr所指向的字符串是否为回文,若是则返回1,否则返回0。在main函数中,输入一个字符串s,调用函数palindrome函数,判断字符串s是否为回文串,若是则输出yes,否则输出no
时间: 2024-06-13 08:08:47 浏览: 8
好的,下面是函数palindrome的实现:
```c
int palindrome(char *pstr) {
int len = strlen(pstr);
for (int i = 0; i < len / 2; i++) {
if (pstr[i] != pstr[len - i - 1]) {
return 0;
}
}
return 1;
}
```
该函数首先获取字符串的长度,然后从字符串的两端开始比较字符是否相等,如果有不相等的字符,则返回0,否则返回1。
在main函数中,可以这样调用palindrome函数:
```c
int main() {
char s[100];
scanf("%s", s);
if (palindrome(s)) {
printf("yes\n");
} else {
printf("no\n");
}
return 0;
}
```
这里使用scanf函数获取输入的字符串,然后调用palindrome函数判断是否为回文串,最后输出结果。
相关问题
语句char *pstr="lalala!"的含义是将字符串存入到变量pstr中。
语句char *pstr="lalala!"的含义是定义一个指向字符的指针pstr,并将字符串常量"lalala!"的首地址赋值给这个指针。这并不是将字符串存入到变量pstr中,而是将指针pstr指向了字符串常量"lalala!"。需要注意的是,字符串常量是只读的,不能通过指针修改其中的内容。如果需要修改字符串的内容,应该将其存储在一个数组中。例如,char str[]="lalala!";可以定义一个字符数组str,并将字符串"lalala!"存储在其中。
用C语言编写一字符串移动函数char *shift(char *pstr, int n, char mode),该函数的功能是: (1)当mode = ‘R’时,将字符串pstr循环右移n位; (2)当mode = ‘L’时,将字符串pstr循环左移n位; 返回值为移位后的字符串的首地址。
好的,下面是使用C语言编写的字符串移动函数:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* shift(char* pstr, int n, char mode)
{
int len = strlen(pstr);
char* result = (char*)malloc(sizeof(char) * (len + 1));
strcpy(result, pstr);
if (mode == 'R') {
n %= len;
if (n == 0) {
return result;
}
strrev(result);
strrev(result + n);
strrev(result + len - n);
} else if (mode == 'L') {
n %= len;
if (n == 0) {
return result;
}
strrev(result);
strrev(result + len - n);
strrev(result + n);
}
return result;
}
int main()
{
char str[] = "Hello, World!";
printf("%s\n", shift(str, 3, 'R')); // 输出:ld!Hello, Wor
printf("%s\n", shift(str, 2, 'L')); // 输出:llo, World!He
return 0;
}
```
这个函数的实现和上一个例子类似,只是使用了C语言的标准库函数`strrev()`,这个函数可以翻转一个字符串。在移动操作中,先翻转整个字符串,然后翻转前n个字符或后面的字符,最后再翻转整个字符串就可以了。
同样需要注意的是,使用完毕后需要手动释放内存,否则可能会导致内存泄漏。