用C语言设计一个函数反转单词前缀 函数原型: void reversePrefix(char *word, char ch); 如: 输入:abcdefd d 输出:dcbaefd 解释:字符d第一次出现在下标3, 反转从下标0到下标3(含下标3)的这段字符 输入:xyxzxe z 输出:zxyxxe 输入:abcd z 输出:abcd 解释:字符z不在这个字符串中,则原字符串不用翻转,原样输出
时间: 2023-12-03 15:44:50 浏览: 83
下面是一个使用C语言实现的函数,可以反转单词前缀:
```c
#include <string.h>
void reversePrefix(char *word, char ch) {
int len = strlen(word);
int idx = -1;
for (int i = 0; i < len; i++) {
if (word[i] == ch) {
idx = i;
break;
}
}
if (idx == -1) {
return;
}
for (int i = 0, j = idx; i < j; i++, j--) {
char temp = word[i];
word[i] = word[j];
word[j] = temp;
}
}
```
这个函数接受两个参数:一个字符串 `word` 和一个字符 `ch`。函数会在 `word` 中查找第一次出现 `ch` 的位置,如果找到了,就将从字符串开始到该位置(包括该位置)的部分反转。如果没有找到,就什么也不做。
例如,对于输入字符串 `"abcdefd"` 和字符 `'d'`,函数会将字符串变为 `"dcbaefd"`,对于输入字符串 `"abcd"` 和字符 `'z'`,函数会原样输出字符串 `"abcd"`。
相关问题
用C语言设计一个函数反转单词前缀 函数原型: void reversePrefix(char *word, char ch); 如: 输入:abcdefd d 输出:dcbaefd
下面是用C语言实现反转单词前缀的代码:
```c
#include <stdio.h>
#include <string.h>
void reversePrefix(char *word, char ch) {
int len = strlen(word);
int i = 0;
while (i < len && word[i] != ch) {
i++;
}
if (i >= len) return; // ch不在字符串中
int j = 0;
while (j < i) {
char temp = word[j];
word[j] = word[i];
word[i] = temp;
j++;
i--;
}
}
int main() {
char word[100], ch;
printf("请输入一个字符串:");
scanf("%s", word);
printf("请输入要反转的前缀字符:");
scanf(" %c", &ch);
reversePrefix(word, ch);
printf("反转后的字符串为:%s\n", word);
return 0;
}
```
使用方法:
1. 先输入一个字符串。
2. 再输入要反转的前缀字符。
3. 程序会输出反转后的字符串。
例如,输入:abcdefd d,输出:dcbaefd。
设计一个函数反转单词前缀 函数原型: void reversePrefix(char *word, char ch); 如: 输入:abcdefd d 输出:dcbaefd 解释:字符d第一次出现在下标3, 反转从下标0到下标3(含下标3)的这段字符 输入:xyxzxe z 输出:zxyxxe 输入:abcd z 输出:abcd 解释:字符z不在这个字符串中,则原字符串不用翻转,原样输出
以下是实现该函数的代码:
```c
void reversePrefix(char *word, char ch) {
// 找到字符 ch 在字符串中第一次出现的位置
char *p = strchr(word, ch);
if (p == NULL) {
// 字符 ch 不在字符串中,不用翻转,直接返回
return;
}
// 计算翻转的起始位置和长度
int start = 0, len = p - word + 1;
// 翻转字符串前缀
for (int i = start, j = len - 1; i < j; i++, j--) {
char temp = word[i];
word[i] = word[j];
word[j] = temp;
}
}
```
该函数的实现过程如下:
1. 使用 `strchr` 函数查找字符 ch 在字符串中第一次出现的位置,如果找不到则说明不用翻转,直接返回。
2. 如果找到了,则计算翻转的起始位置和长度,起始位置为下标 0,长度为字符 ch 在字符串中的下标加 1。
3. 使用双指针法翻转字符串前缀,即将起始位置到结束位置的字符串翻转。
阅读全文