#include <stdio.h> #include <string.h> void strrev(char *p,char *q) { while(p<q) { int t=*p;*p=*q;*q=t; p++;q--; } } int main(int argc, const char *argv[]) { char str[]="good good study"; char *p=str; char *q=str+strlen(str)-1; strrev(p,q); p=q=str; while(*p!='\0') { while(*q!=' '&&*q!='\0') { q++; } char *k=q-1; strrev(p,k); while(*q==' ') q++; q=p; } puts(str); return 0; }
时间: 2024-04-20 16:24:09 浏览: 101
这段代码是用来颠倒字符串中每个单词的序的。它首先定义了一个函数`strrev`,用于颠倒字符串中给定区间的字符顺序然后在`main`函数中,它将字符串"good good study"储在字符数组`str`中。接着它使用指针`p`和`q`分别指向字符串的开头和结尾。
然后,它调用`strrev函数来颠倒整个字符串。接下来,它使用两个指针`p`和`q`来遍历字符串,找到每个单词的起始和结束位置,并调用`strrev`函数来颠倒每个单词的字符顺序。最后,它打印出颠倒后的字符串。
这段代码的输出结果应该是"doog doog yduts",也就是将原字符串中每个单词的顺序颠倒了。
相关问题
编写一个函数 void reverseString(char* str),实现将一个字符串进行反转。不能使用标准 库函数 strrev
可以使用双指针法编写一个简单的 C 语言函数来实现字符串反转。这个函数接受一个字符数组 `str` 的地址作为输入,然后通过交换首尾字符并逐个向中间移动指针来达到反转的效果。以下是函数的实现:
```c
#include <stdio.h>
void reverseString(char* str) {
if (str == NULL || *str == '\0') { // 检查字符串是否为空
return;
}
char* start = str; // 初始化开始指针
char* end = str + strlen(str) - 1; // 初始化结束指针
while (start < end) { // 当两个指针未相遇时
// 交换当前指向的字符
char temp = *start;
*start = *end;
*end = temp;
// 移动指针
start++;
end--;
}
}
// 示例用法
int main() {
char testStr[] = "Hello, World!";
printf("Original string: %s\n", testStr);
reverseString(testStr);
printf("Reversed string: %s\n", testStr);
return 0;
}
```
当你运行这个程序,输入的字符串 "Hello, World!" 将会变成 "!dlroW ,olleH"。
3. (简答题)编写一个程序来反转字符串,而不使用 string.h 库中定义的and函数。 strlen() strrev() 下面是一个运行示例。 ------------------------------------ 输入字符串:南京 反向字符串:gnijnaN
好的,以下是C语言的实现代码:
```c
#include <stdio.h>
// 函数声明
void reverse(char str[]);
int main()
{
char str[100];
printf("输入字符串:");
scanf("%s", str);
reverse(str);
printf("反向字符串:%s\n", str);
return 0;
}
// 函数定义
void reverse(char str[])
{
int len = 0;
while (str[len] != '\0') // 获取字符串长度
{
len++;
}
for (int i = 0; i < len / 2; i++) // 反转字符串
{
char temp = str[i];
str[i] = str[len - 1 - i];
str[len - 1 - i] = temp;
}
}
```
该程序读入一个字符串,然后通过 `reverse()` 函数将其反转,最后输出反转后的字符串。
需要注意的是,该程序没有使用 C 语言标准库中定义的 `string.h` 库中的 `strlen()` 和 `strrev()` 函数,而是通过手动编写代码实现了字符串反转的功能。
阅读全文