把形参s所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注:字符串的长度大于等于2)。 例如,形参s所指字符串为"abcdefgh",执行结果为"ahcbedgf"。
时间: 2023-05-22 22:04:08 浏览: 233
可以使用以下代码实现:
```
#include <stdio.h>
#include <string.h>
void oddRightShift(char *s) {
int len = strlen(s);
char temp = s[len - 1];
for (int i = len - 1; i > 0; i--) {
if (i % 2 != 0) {
s[i] = s[i - 1];
}
}
if (len % 2 != 0) {
s[0] = temp;
}
}
int main() {
char s[] = "abcdefgh";
oddRightShift(s);
printf("%s\n", s); // 输出结果为 "ahcbedgf"
return 0;
}
```
这段代码首先获取字符串的长度,将最后一个字符保存到 temp 变量中。然后从字符串末尾开始往前遍历,如果下标为奇数,则将当前字符往右移动一位。最后,如果字符串长度为奇数,则将 temp 放到第一个奇数位置。运行之后,输出结果即为所求的字符串。
阅读全文