讲解对象:奇数字符右移 作者:融水公子 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; }
|