最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言通過三步翻轉(zhuǎn)法實(shí)現(xiàn)單詞倒置詳解

 更新時(shí)間:2022年05月23日 11:18:54   作者:這個(gè)需求做不了.  
這篇文章主要為大家分享了用三步翻轉(zhuǎn)法將一句話的單詞進(jìn)行倒置的方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下

一、解題思路

如何將一句話的單詞倒置,而標(biāo)點(diǎn)不倒置?

例如:I like beijing. 倒置成:beijing. like I

可以利用三步翻轉(zhuǎn)法,先將整句話倒置,再將每個(gè)單詞倒置。前面的例子中輸入的內(nèi)容有空格,如果使用 scanf() 函數(shù)的話,scanf 檢測(cè)到空格后就停止錄入了;所以要使用 gets() 函數(shù),gets 可以直接錄入一行,包括空格。

代碼示例:

可以看到 scanf() 函數(shù)讀取到空格就不讀了。

而 gets() 函數(shù)可以連空格一起讀入。

二、完整代碼與注釋

//將一句話的單詞進(jìn)行倒置,標(biāo)點(diǎn)不導(dǎo)致。
//例如:I like BiJing. 倒置成BiJing. like I
#include<stdio.h>
 
#include<string.h>
 
void reverse(char* left, char* right)
{
	while (left < right)
	{
		char temp = *left;
		*left = *right;
		*right = temp;
		left++;
		right--;
	}
}
 
int main()
{
	char arr[100] = { 0 };
	//I like BiJing.
	gets(arr);
	//三步翻轉(zhuǎn)法
	//1.字符串整體翻轉(zhuǎn)
	// .gniJib ekil I
	int len = strlen(arr);//求字符串長(zhǎng)度
	reverse(arr, arr + len - 1);
	//2每個(gè)單詞翻轉(zhuǎn)
	//BiJing. like I
	char* strat = arr;//*strat指向數(shù)組首元素的地址
	while (*strat)//*strat指向'\0'跳出循環(huán)
	{
		char* end = strat;//*end指向*strat指向的內(nèi)容
		while (*end != ' ' && *end != '\0')
		{
			end++;
		}
		//逆序一個(gè)單詞
		reverse(strat, end - 1);
		if (*strat == ' ')//一個(gè)單詞倒置結(jié)束
		{
			strat = end + 1;
		}
        //整個(gè)字符串倒置結(jié)束
		else
		{
			strat = end;
		}
	}
	printf("%s\n", arr);
	return 0;
}

三、代碼剖析

1.實(shí)現(xiàn)字符串整體的翻轉(zhuǎn)

首先使用 strlen 求出字符個(gè)數(shù), 定義 reverse() 函數(shù)來進(jìn)行倒置。使用指針訪問字符串最左端和最右端的字符,然后利用 temp 空變量進(jìn)行三個(gè)值的交換,也就是倒置。

函數(shù)實(shí)現(xiàn)的代碼如下:

void reverse(char* left, char* right)
{
	while (left < right)
	{
		char temp = *left;
		*left = *right;
		*right = temp;
		left++;
		right--;
	}
}

2.一個(gè)單詞的翻轉(zhuǎn)

先定義一個(gè) strat 指向字符串的第一個(gè)單詞,在定義一個(gè) end 指向 strat 所指向的位置,也就是字符串的第一個(gè)單詞的地址。、

使用 while 循環(huán)判斷 end 指向的位置是不是空格或者 \0 ,如果 end 指向的位置不是 \0 ,就說明當(dāng)前字符串還未倒置完成, end 指向空格就說明當(dāng)前一個(gè)單詞倒置結(jié)束。當(dāng) end 不是指向空格的時(shí)候,end++ 就可以指向下一個(gè)位置,直至找到這一個(gè)單詞所有的字母,然后調(diào)用 reverse 進(jìn)行倒置。

3.字符串中的每一個(gè)單詞的翻轉(zhuǎn)

我們可以倒置完一個(gè)單詞后利用 if 判斷 strat 指向的位置是不是空格,或者是不是 \0 。如果是空格就說明還有單詞未倒置,strat 就指向 end + 1的位置,這個(gè)位置就是下一個(gè)單詞首字母的位置;如果是 \0 就說明整個(gè)字符串的單詞已經(jīng)全部倒置完成,strat 就指向 end 的位置,也就是 \0的位置。

到此這篇關(guān)于C語言通過三步翻轉(zhuǎn)法實(shí)現(xiàn)單詞倒置詳解的文章就介紹到這了,更多相關(guān)C語言單詞倒置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • VisualStudio2022不支持.NET Framework 4.0項(xiàng)目解決辦法

    VisualStudio2022不支持.NET Framework 4.0項(xiàng)目解決辦法

    本文主要介紹了VisualStudio2022不支持.NET Framework 4.0項(xiàng)目解決辦法,文中通過圖文的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-09-09
  • 380行C++代碼實(shí)現(xiàn)掃雷小游戲

    380行C++代碼實(shí)現(xiàn)掃雷小游戲

    這篇文章主要為大家詳細(xì)介紹了380行C++代碼實(shí)現(xiàn)掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • 內(nèi)聯(lián)函數(shù)inline與宏定義深入解析

    內(nèi)聯(lián)函數(shù)inline與宏定義深入解析

    類的內(nèi)斂函數(shù)是一個(gè)真正的函數(shù)。使用內(nèi)聯(lián)函數(shù)inline可以完全取代表達(dá)式形式的宏定義
    2013-09-09
  • c語言5個(gè)常用的排序算法實(shí)例代碼

    c語言5個(gè)常用的排序算法實(shí)例代碼

    這篇文章主要介紹了c語言5個(gè)常用的排序算法實(shí)例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • C語言學(xué)習(xí)筆記之VS2022安裝使用教程

    C語言學(xué)習(xí)筆記之VS2022安裝使用教程

    這篇文章主要介紹了C語言學(xué)習(xí)筆記之VS2022安裝使用教程,在VS2022中,在使用scanf函數(shù)編譯出錯(cuò),本文給大家提到了解決方法,需要的朋友可以參考下
    2022-05-05
  • C語言數(shù)據(jù)的存儲(chǔ)超詳細(xì)講解中篇練習(xí)

    C語言數(shù)據(jù)的存儲(chǔ)超詳細(xì)講解中篇練習(xí)

    使用編程語言進(jìn)行編程時(shí),需要用到各種變量來存儲(chǔ)各種信息。變量保留的是它所存儲(chǔ)的值的內(nèi)存位置。這意味著,當(dāng)您創(chuàng)建一個(gè)變量時(shí),就會(huì)在內(nèi)存中保留一些空間。您可能需要存儲(chǔ)各種數(shù)據(jù)類型的信息,操作系統(tǒng)會(huì)根據(jù)變量的數(shù)據(jù)類型,來分配內(nèi)存和決定在保留內(nèi)存中存儲(chǔ)什么
    2022-04-04
  • CISBitmap派生的VC++位圖透明類實(shí)例

    CISBitmap派生的VC++位圖透明類實(shí)例

    這篇文章主要介紹了CISBitmap派生的VC++位圖透明類,比較實(shí)用的功能,需要的朋友可以參考下
    2014-08-08
  • 深入探索C++中stack和queue的底層實(shí)現(xiàn)

    深入探索C++中stack和queue的底層實(shí)現(xiàn)

    這篇文章主要介紹了C++中的stack和dequeue的底層實(shí)現(xiàn),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • 詳解C++-(=)賦值操作符、智能指針編寫

    詳解C++-(=)賦值操作符、智能指針編寫

    C++的智能指針是克服C++大坑的非常有用的的手段,之所以說它智能,是因?yàn)樗鼮槌绦騿T克服了重要的編程問題——懸掛指針,下面通過本文給大家分享C++-(=)賦值操作符、智能指針編寫,感興趣的朋友一起看看吧
    2018-03-03
  • C/C++產(chǎn)生隨機(jī)數(shù)函數(shù)簡(jiǎn)單介紹

    C/C++產(chǎn)生隨機(jī)數(shù)函數(shù)簡(jiǎn)單介紹

    這篇文章主要為大家詳細(xì)介紹了C/C++產(chǎn)生隨機(jī)數(shù)函數(shù)的實(shí)現(xiàn)方法,如何使用C/C++產(chǎn)生隨機(jī)數(shù)函數(shù),感興趣的小伙伴們可以參考一下
    2016-04-04

最新評(píng)論

哈巴河县| 萨嘎县| 乐都县| 久治县| 宣汉县| 大竹县| 沂源县| 赣榆县| 衡南县| 江口县| 六盘水市| 如皋市| 临湘市| 毕节市| 娱乐| 信丰县| 桓仁| 修武县| 伊春市| 上栗县| 金山区| 铜川市| 双辽市| 嘉善县| 剑河县| 鹤峰县| 英山县| 八宿县| 锡林郭勒盟| 惠东县| 玉树县| 鄂州市| 兴城市| 阿瓦提县| 乌鲁木齐县| 额尔古纳市| 扎赉特旗| 牙克石市| 哈密市| 防城港市| 太原市|