C語言編程 將句子反轉但單詞拼寫順序正確(不使用庫函數)

eg:
有一個字符數組的內容爲:"student a am i",
請你將數組的內容改爲"i am a student".
要求:
不能使用庫函數。
只能開闢有限個空間(空間個數和字符串的長度無關)。

        student a am i
        i ma a tneduts
        i am a student

        代碼具體思想
        1.將句子反轉(不管單詞拼寫順序)
        2.將各個單詞分別反轉爲正確順序

源代碼:

#include<stdio.h>
#include<stdlib.h>
void Reverse(char *left, char *right)//範圍反轉
{
    char temp;
    while (left < right)
    {
        temp = *left;
        *left = *right;
        *right = temp;
        left++; right--;
    }
}
int TheStrlen(char *str)。。求字符串長度
{
    int count=0,i=0;

    while (*(str + i)!='\0')
    {
        count++;
        i++;
    }

    return count;
}
void ReverseEnd(char *str)
{
    char *left = str;
    char *right = str + TheStrlen(str) - 1;
    char *p = str;
    char *sta;
    Reverse(left, right);
    while (*p != '\0')//將具體單詞反轉
    {
        sta = p;
        while (*p != ' '&&*p != '\0')
        {
            p++;
        }//測單詞長度範圍
        Reverse(sta, p - 1);//反轉單詞
        if (*p == ' ')//跳轉至下一個單詞
        {
            p++;
        }
    }

}
int main()
{
    char str[] = "i am a student";
    ReverseEnd(str);
    printf("%s\n", str);
    system("pause");
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章