中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言倒置字符串問題怎么解決

發布時間:2023-02-24 17:47:08 來源:億速云 閱讀:155 作者:iii 欄目:開發技術

這篇文章主要介紹“C語言倒置字符串問題怎么解決”,在日常操作中,相信很多人在C語言倒置字符串問題怎么解決問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”C語言倒置字符串問題怎么解決”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

    先來看題

    C語言倒置字符串問題怎么解決

    解題思路

    首先我們定義一個字符數組來存放字符串,然后用 gets函數來讀入字符串,接下來進行處理階段,設計一個逆序函數逆序整個字符串,然后再逆序每個單詞,最后處理一下細節再輸出

    解題過程

    1.輸入

    定義完一個字符數組后,因為scanf不吃空格符和換行符,所以這里輸入我們采用gets函數來進行讀入字符串,看代碼????

    int main()
    {
    	char arr[101] = { 0 };
    	//輸入
    	gets(arr);

    2.設計逆序函數

    看代碼

    void reverse(char* left, char* right)
    {
    	assert(*left != NULL);
    	assert(*right != NULL);
    
    	while (left < right)
    	{
    		char tmp = *left;
    		*left = *right;
    		*right = tmp;
    		left++;
    		right--;
    	}
    }

    ??字符串的首尾元素逐個進行交換(不包括\0)??

    因為傳過來的是數組首元素地址,所以我們要用指針變量來接收,為了代碼更謹慎,這里使用了assert斷言,防止遇到空指針而導致程序運行錯誤(不能忘記引頭文件<assert.h>)

    3.逆序整個字符串

    	int len = strlen(arr);
    	//逆序整個字符串
    	reverse(arr, arr + len - 1);

    我們使用strlen函數來計算字符串元素個數(不要忘記引頭文件<string.h>),然后調用 reverse函數進行整個字符串的逆置。

    這里的 arr + len - 1是首元素地址+字符串長度(整數)- 1 得到的是末尾元素的地址如果不 - 1指向的就是 &rsquo;\0&lsquo;了

    4.逆序每個單詞

    char* cur = arr;
    	while (*cur)
    	{
    		//找一個單詞
    		char* start = cur;
    		while (*cur != ' ' && *cur != '\0')
    		{
    			cur++;
    		}
    		reverse(start, cur - 1);
    		if (*cur == ' ')
    		{
    			cur++;
    		}
    	}

    定義一個指針變量cur來接收逆序整個字符串之后的arr數組首元素地址,然后如果cur指向的字符不是&rsquo;\0&rsquo;的話就進入循環,然后再定義一個指針變量start來接收每個單詞的首元素地址,然后進入循環判斷如果cur指向的不是空格或者&rsquo;\0&rsquo;就往后跳一個字符,直到cur指向的是空格或者&rsquo;\0&lsquo;了,就說明已經遍歷完確認了一個單詞,然后進入reverse函數 來逆序單詞(cur - 1 是因為如果不 -1,cur指向的是空格或者&rsquo;\0&lsquo;

    最后如果cur指向的是空格而不是&rsquo;\0&lsquo;就說明還沒有結束,還有單詞沒有逆序完,往后跳一個字符循環繼續

    源碼

    #include<stdio.h>
    #include<string.h>
    #include<assert.h>
    
    void reverse(char* left, char* right)
    {
    	assert(*left != NULL);
    	assert(*right != NULL);
    
    	while (left < right)
    	{
    		char tmp = *left;
    		*left = *right;
    		*right = tmp;
    		left++;
    		right--;
    	}
    }
    int main()
    {
    	char arr[101] = { 0 };
    	//輸入
    	gets(arr);
    	//處理
    	int len = strlen(arr);
    	//逆序整個字符串
    	reverse(arr, arr + len - 1);
    	//逆序每個單詞
    	char* cur = arr;
    	while (*cur)
    	{
    		//找一個單詞
    		char* start = cur;
    		while (*cur != ' ' && *cur != '\0')
    		{
    			cur++;
    		}
    		reverse(start, cur - 1);
    		if (*cur == ' ')
    		{
    			cur++;
    		}
    	}
    	//打印
    	printf("%s\n", arr);
    
    	return 0;
    }

    到此,關于“C語言倒置字符串問題怎么解決”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    大同县| 德阳市| 原平市| 渝北区| 汕尾市| 鄂托克旗| 高雄市| 修文县| 德化县| 江达县| 寿光市| 泊头市| 蕉岭县| 贡嘎县| 历史| 通州市| 海丰县| 乐至县| 陇川县| 清河县| 通道| 游戏| 顺义区| 宜兰市| 顺平县| 吴旗县| 江油市| 株洲市| 新田县| 丽水市| 娱乐| 湘潭县| 高平市| 旬邑县| 景德镇市| 永康市| 关岭| 固镇县| 崇文区| 临沭县| 合川市|