《C和指针》章节后编程练习解答参考——6.3

《C和指针》——6.3

题目:

  编写一个函数,把参数字符串中的字符反向排列。

函数原型:

  void reverse_string(char *string);

要求:

  使用指针而不是数组下标

  不要使用任何C函数库中用于操纵字符串的函数

  不要声明一个局部数组来临时存储参数字符串

解答代码:

#include <stdio.h>

void reverse_string(char *string)
{
    int i, n=0;
    
    while (*(string+n) != '\0')        //计算字符串中字符的个数
        n++;
    n--;                            //字符个数n作为索引号时要减1,即从0到n-1
    if (n > 0)                        //字符个数小于等于1时没有必要反转
    {
        for (i=0; i<=(n/2); i++)
        {
            if (i != (n-i))
            {
                char p;                //字符内容交换
                p = *(string+i);
                *(string+i) = *(string+n-i);
                *(string+n-i) = p;
            }
        }
    }
}

int main()
{
    char source[] = "ABCDEFGH";

    printf("Before reverse:\n%s\n", source);
    reverse_string(source);
    printf("After reverse:\n%s\n", source);

    getchar();
    return 0;
}

注:

  1、先计算字符串中非'\0'字符的个数

  2、首位字符轮流交换

posted @ 2015-11-15 19:23  micro虾米  阅读(712)  评论(0编辑  收藏  举报