讲解对象:奇数字符右移
作者:融水公子 rsgz
要求:
函数fun的功能是 把形参s所指字符串中下标为奇数的字符串右移到下一个奇数位置
最右边移出的字符绕回放在第一个奇数位置 下标为偶数的字符不动(要求是字符串的长度>=2)
实例 s所指的字符串abcd adcb
#include<stdio.h>
#include<stdlib.h>
#define N 81
void fun(char *s) {
int i, n = 0, k;
char c;
for (i = 0; s[i] != '\0'; i++) {
n++;//统计字符串的长度(换成正常的计数)
}
if (n % 2 == 0) {
k = n - 1;//n为偶数的时候 把某个数的值赋值给k 1234
}
else {
k = n-2;//字符串为奇数的时候 将n赋值给k 12345
}
//为什么字符串个数为奇数偶数的时候要分开处理
c = s[k];//将某个值赋值给c
for (i = k - 2; i >= 1; i -= 2) {
s[i + 2] = s[i];//奇数位置字符的移位
}
s[1] = c;
}
int main() {
char s[80] = "abcd";
printf("原来的字符串是:%s\n", s);
fun(s);
printf("移动后:%s\n", s);
system("pause");
return 0;
}
联系客服