亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

一、解題思路

如何將一句話的單詞倒置,而標點不倒置?

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

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

代碼示例:

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

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

二、完整代碼與注釋

//將一句話的單詞進行倒置,標點不導致。
//例如: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);
	//三步翻轉法
	//1.字符串整體翻轉
	// .gniJib ekil I
	int len = strlen(arr);//求字符串長度
	reverse(arr, arr + len - 1);
	//2每個單詞翻轉
	//BiJing. like I
	char* strat = arr;//*strat指向數(shù)組首元素的地址
	while (*strat)//*strat指向'\0'跳出循環(huán)
	{
		char* end = strat;//*end指向*strat指向的內容
		while (*end != ' ' && *end != '\0')
		{
			end++;
		}
		//逆序一個單詞
		reverse(strat, end - 1);
		if (*strat == ' ')//一個單詞倒置結束
		{
			strat = end + 1;
		}
        //整個字符串倒置結束
		else
		{
			strat = end;
		}
	}
	printf("%s\n", arr);
	return 0;
}

三、代碼剖析

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

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

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

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

2.一個單詞的翻轉

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

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

3.字符串中的每一個單詞的翻轉

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

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

相關文章

  • 深入學習C語言mmap和shm*的使用方法技巧

    深入學習C語言mmap和shm*的使用方法技巧

    本文將詳細介紹mmap和shm的工作原理,包括它們在內存映射和共享內存方面的優(yōu)勢和適用場景,同時,文章還會分享一些使用mmap和shm的技巧和經驗,以幫助讀者優(yōu)化并提高程序性能,使你能夠在實際項目中更好地利用這些技術來加速數(shù)據共享和多線程應用
    2023-10-10
  • C 創(chuàng)建鏈表并將信息存儲在二進制文件中讀取的實例代碼

    C 創(chuàng)建鏈表并將信息存儲在二進制文件中讀取的實例代碼

    C 創(chuàng)建鏈表并將信息存儲在二進制文件中讀取的實例代碼,需要的朋友可以參考一下
    2013-03-03
  • C++算法系列之中國農歷的算法

    C++算法系列之中國農歷的算法

    這篇文章主要介紹了C++計算中國農歷的深入淺析,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • C語言示例講解動態(tài)/文件/靜態(tài)功能版本的通訊錄實現(xiàn)

    C語言示例講解動態(tài)/文件/靜態(tài)功能版本的通訊錄實現(xiàn)

    通訊錄是一個可以記錄親人、好友信息的工具,這篇文章主要為大家詳細介紹了C語言實現(xiàn)通訊錄管理,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • c語言之char*和unsigned?char*的區(qū)別及說明

    c語言之char*和unsigned?char*的區(qū)別及說明

    這篇文章主要介紹了c語言之char*和unsigned?char*的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • C++變量初始化形式及其默認初始值問題

    C++變量初始化形式及其默認初始值問題

    這篇文章主要介紹了C++變量初始化形式及其默認初始值問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 詳解C++ 臨時量與臨時對象及程序的相關優(yōu)化

    詳解C++ 臨時量與臨時對象及程序的相關優(yōu)化

    這篇文章主要介紹了C++ 臨時量與臨時對象及程序的相關優(yōu)化,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • c語言中getch,getche,getchar的區(qū)別

    c語言中getch,getche,getchar的區(qū)別

    getche() 和getch()很相似,它也需要引入頭文件conio.h,那它們之間的區(qū)別又在哪里呢?不同之處就在于getch()無返回顯示,getche()有返回顯示
    2013-09-09
  • C語言自定義軍旗游戲源碼

    C語言自定義軍旗游戲源碼

    這篇文章主要為大家詳細介紹了C語言自定義軍旗游戲源碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Opencv分水嶺算法學習

    Opencv分水嶺算法學習

    這篇文章主要為大家詳細介紹了Opencv分水嶺算法的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01

最新評論