码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-11-15 20:40:29      阅读:264      评论:0      收藏:0      [点我收藏+]

标签:

《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、首位字符轮流交换

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

标签:

原文地址:http://www.cnblogs.com/microxiami/p/4967107.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!