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

C語言之字符串逆序函數(shù)的三種實現(xiàn)方式

 更新時間:2026年04月09日 10:40:33   作者:銘哥的編程日記  
文章介紹了三種字符串逆序的方法:非函數(shù)、函數(shù)非遞歸、函數(shù)遞歸,并詳細解釋了每種方法的代碼實現(xiàn)和原理,最后還探討了兩次逆序打印數(shù)組的面試題,通過圖解展示了逆序過程

三種方法實現(xiàn)字符串逆序函數(shù)

題目如下(示例):

?寫一段代碼實現(xiàn)字符串的逆序打印

例如:

輸入:abcdef  輸出:fedcba

一、第一種方法(非函數(shù))

代碼如下(示例):

//對一個字符串進行逆序
int main()
{
    char arr[1000] = { 0 };
    gets(arr);
    int len = strlen(arr);
    char* left = arr;
    char* right = arr + len - 1;
    while (left < right)
    {
        char* tmp = *left;
        *left = *right;
        *right = tmp;
        left++;
        right--;
    }
    printf("%s\n", arr);
    return 0;
}

二、第二種方法(函數(shù)非遞歸)

1.函數(shù)的方法

代碼如下(示例):

//寫一個函數(shù)(非遞歸)實現(xiàn)逆序字符串
void severse_string(char* str)
{
	int len = strlen(str);
	char* left = str;
	char* right = str + len - 1;
	while (left < right)
	{
		char tmp = *left;
		*left = *right;
		*right = tmp;
		left++;
		right--;
	}
}
int main()
{
	char arr[] = "abcdef";
	severse_string(arr);
	printf("%s\n", arr);
	return 0;
}

函數(shù)和main函數(shù)原理一樣!這里不做過多的介紹!

2.函數(shù)+數(shù)組的方法

代碼如下(示例):

 //用數(shù)組函數(shù)的方法(非遞歸)實現(xiàn)字符串的逆序打印
void severse_string(char arr[])
{
	int len = strlen(arr);
	int left = 0;
	int right = len - 1;
	while (left < right)
	{
		char tmp = arr[left];
		arr[left] = arr[right];
		arr[right] = tmp;
		left++;
		right--;
	}
}
int main()
{
	char arr[] = "abcdef";
	severse_string(arr);
	printf("%s\n", arr);
	return 0;
}

三、第三種方法(函數(shù)遞歸)

代碼如下(示例):

//用遞歸的(函數(shù))的方法實現(xiàn)對字符串的逆序打印
void reverse_string(char* str)
{
	int len = strlen(str);
	char tmp = *str;
	*str = *(str + len - 1);
	*(str + len - 1) = '\0';

	if ((strlen(str + 1)) >= 2)
	{
		reverse_string(str + 1);
	}
	*(str + len - 1) = tmp;
}
int main()
{
	char arr[] = "abcdef";
	reverse_string(arr);
	printf("%s\n", arr);
	return 0;
}

注意:

這里的 tmp 和 len 的值可以通過調試來觀察變化!如下圖!

這里是函數(shù)在一步一步調用,接下來是遞歸返回的階段~

第一次返回:

第二次返回:

第三次返回:

此時已經對數(shù)組全部進行逆序打??!

四、面試題:對一個數(shù)組進行兩次逆序打印

題目如下(示例):

1.代碼實現(xiàn)

代碼如下(示例):

void reverse_string(char* l, char* r)
{
	while (l < r)
	{
		char tmp = *l;
		*l = *r;
		*r = tmp;
		l++;
		r--;
	}
}
int main()
{
	char arr[100] = { 0 };
	//輸入數(shù)組
	gets(arr);
	//計算數(shù)組的大小
	int len = strlen(arr);
	char* left = arr;
	char* right = left + len - 1;
	reverse_string(left, right);
	//對單詞進行逆序
	char* start = arr;
	char* cur = arr;
	while (*cur!='\0')
	{
		while (*cur != ' ' && *cur!='\0')
		{
			cur++;
		}
		reverse_string(start, cur - 1);
		start = cur + 1;
		if (*cur != '\0')
		{
			cur++;//cui原來是空格
		}
	}
	printf("%s\n", arr);
	return 0;
}

2.圖解面試題

第一步:整體逆序字符串!

循環(huán):第二步:對單個單詞進行逆序!??!

1.將第一個字符串逆序

2.將第二個字符串逆序

總結

以上就是今天要講的內容,本文介紹了字符串逆序函數(shù)的實現(xiàn)原理和相關的面試題。

這些僅為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Qt Creator使用教程的簡單說明

    Qt Creator使用教程的簡單說明

    如今 Qt Creator 功能十分強大了,包含項目模板生成、代碼編輯、UI 設計、QML 界面編輯、調試程序、上下文幫助等豐富功能,本文就詳細的介紹一下如何使用
    2021-08-08
  • C語言求Fibonacci斐波那契數(shù)列通項問題的解法總結

    C語言求Fibonacci斐波那契數(shù)列通項問題的解法總結

    斐波那契數(shù)列相關問題是考研和ACM中常見的算法題目,這里特地為大家整理了C語言求Fibonacci斐波那契數(shù)列通項問題的解法總結,需要的朋友可以參考下
    2016-06-06
  • C++異常處理入門(try和catch)

    C++異常處理入門(try和catch)

    C++ 提供了異常機制,讓我們能夠捕獲運行時錯誤,本文就詳細的介紹了C++異常處理入門,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • C++?Primer的變量和基本類型詳解

    C++?Primer的變量和基本類型詳解

    這篇文章主要為大家介紹了C++?Primer,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • C語言實現(xiàn)圖書管理系統(tǒng)(文件數(shù)據(jù)庫)

    C語言實現(xiàn)圖書管理系統(tǒng)(文件數(shù)據(jù)庫)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)圖書管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C語言獲取消耗內存的方法

    C語言獲取消耗內存的方法

    這篇文章主要介紹了C語言獲取消耗內存的方法,涉及C語言中malloc方法的使用技巧,非常簡單實用,需要的朋友可以參考下
    2015-07-07
  • VS2013安裝配置和使用Boost庫教程

    VS2013安裝配置和使用Boost庫教程

    這篇文章主要為大家詳細介紹了VS2013安裝配置和使用Boost庫的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • 使用c語言生成隨機數(shù)的示例分享

    使用c語言生成隨機數(shù)的示例分享

    在C語言中,rand()函數(shù)可以用來產生隨機數(shù),但是這不是真真意義上的隨機數(shù),是一個偽隨機數(shù),這篇文章主要介紹了使用c語言生成隨機數(shù)的示例,需要的朋友可以參考下
    2014-03-03
  • C語言實現(xiàn)數(shù)組的循環(huán)移位的方法示例

    C語言實現(xiàn)數(shù)組的循環(huán)移位的方法示例

    這篇文章主要介紹了C語言實現(xiàn)數(shù)組的循環(huán)移位的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • C++中rapidjson組裝map和數(shù)組array的代碼示例

    C++中rapidjson組裝map和數(shù)組array的代碼示例

    今天小編就為大家分享一篇關于C++中rapidjson組裝map和數(shù)組array的代碼示例,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04

最新評論

丹寨县| 建始县| 菏泽市| 贵德县| 得荣县| 娱乐| 凌源市| 濉溪县| 乐陵市| 南通市| 昆山市| 南投市| 德江县| 宁国市| 寿宁县| 黄骅市| 大名县| 英山县| 平泉县| 日喀则市| 绥江县| 新丰县| 顺昌县| 汉阴县| 崇左市| 延吉市| 阳原县| 长泰县| 安泽县| 莱芜市| 德格县| 灵台县| 莒南县| 兴文县| 库车县| 磐石市| 横峰县| 天峻县| 孟连| 汉寿县| 资中县|