您的位置:首页 > 其它

有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student".

2018-01-13 22:23 537 查看
有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student".

要求:

不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。    

#include <stdio.h>

#include <assert.h>

int my_strlen(const char *str)//求字符串长度函数

{

    int count = 0;

    assert(str);

    while(*str != '\0')

    {

        count++;

        str++;

    }

    return count;

}

void reverse(char a[],int left,int right)//逆序函数

{

    while(left<right)

    {

        char tmp=a[left];

        a[left]=a[right];

        a[right]=tmp;

        left++;

        right--;

    }

}

char* reverse_string(char a[])//逆序字符串

{

    int i = 0;

    int left = 0;

    int right = my_strlen(a)-1;//逆序整个字符串

    reverse(a,left,right);

    //逆序逐个单词

    while(a[i]!='\0')

    {

        left = i;

        while((a[i]!='\0')&&(a[i]!=' '))

        {

            i++;

        }

        right=i-1;

        reverse(a,left,right);

        if(a[i]!='\0')

            i++;

    }

    return a;

}

int main()

{

    char a[]="student a am i";

    reverse_string(a);

    printf("%s\n",a);

 system("pause");

    return 0;

}
               
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐