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

C語言編程C++旋轉字符操作串示例詳解

 更新時間:2021年09月28日 10:12:20   作者:小碼農(nóng)UU  
這篇文章主要為大家介紹了C語言編程中C++旋轉字符操作串示例詳解,文中附含詳細圖文示例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助

旋轉字符串

字符串左旋

實現(xiàn)一個函數(shù),可以左旋字符串中的k個字符。

例如:

ABCD左旋一個字符得到BCDA

ABCD左旋兩個字符得到CDAB

題前認知:

一個字符串如果就定死了。eg:char arr[]=“dfdf”什么的那多沒意思,一點都沒有人機交互的感覺,(雖然現(xiàn)在人機交互適合個體,不適合集群,但也是比死板的定死字符串舒服)

所以字符串得是我們可輸入的,才有可玩性,玩的不盡性就循環(huán)

暴力移位:

#include<stdio.h>
#include<string.h>
char* turn_left(char* arr, int num)
{
	int len = strlen(arr);
	int i = 0;
	//左旋數(shù)是多少就進行幾次移位
	for (i = 0; i < num; i++)
	{
		//每次移位就是單次左旋
		int j = 0;
		char tmp = arr[0];//每次都把首元素存起來
		for (j = 0; j < len-1; j++)
		{			
			arr[j] = arr[j + 1];			
		}
		arr[len-1] = tmp;//把存起來的首元素放到最后一位
	}
	return arr;
}
int main()
{
	char arr[100] = {0};
	int num = 0;
	while (1)
	{
		printf("請輸入想要旋轉的字符串:>");
		gets(arr);
		printf("請輸入想要左旋數(shù):>");
		scanf("%d", &num);
		getchar();//這個的作用是清空緩沖區(qū),因為每次scanf會有一個\n,不清空的話
		//下一次到了gets,他會認為\n是我們打進去的,所以scanf之后必須清空緩沖區(qū)
		printf("左旋字符串為:%s\n", turn_left(arr, num));
	}
	return 0;
}

輸出結果

image-20210909232922661

三步翻轉:

#include<stdio.h>
#include<string.h>
#include<assert.h>
void reverse(char* head, char* tail) //字符串逆序
{
	assert(head && tail);//斷言阻止空指針
	char tmp = 0;
	char* ptmp = &tmp;
	while (head<tail)
	{
		tmp = *head;
		*head = *tail;
		*tail = tmp;
		head++;
		tail--;
	}
	return 0;
}
char* turn_left(char* arr, int num)
{
	assert(arr);
	int len = strlen(arr);
	if (len)
	{
		int n = num % len;           //防止num會越界操作,所以必須是num模len才可,還要保證len不為0
		reverse(arr, &arr[n - 1]);          //逆序左邊
		reverse(&arr[n], &arr[len - 1]);  //逆序右邊
		reverse(arr, &arr[len - 1]);      //逆序整體
		return arr;
	}
	else
	{
		return arr;
	}
}
int main()
{
	char arr[100] = {0};
	int num = 0;
	while (1)
	{
		printf("請輸入想要旋轉的字符串:>");
		gets(arr);
		printf("請輸入想要左旋數(shù):>");
		scanf("%d", &num);
		getchar();//這個的作用是清空緩沖區(qū),因為每次scanf會有一個\n,不清空的話
		//下一次到了gets,他會認為\n是我們打進去的,所以scanf之后必須清空緩沖區(qū)
		printf("左旋字符串為:%s\n", turn_left(arr, num));
	}
	return 0;
}

image-20210910003317406

image-20210910100918779

還有3種方法但那三種就需要很強的數(shù)學功底了,具體的我也看不懂他怎么證明的數(shù)學公式,就不看了。哈哈哈

判斷字符串旋轉

寫一個函數(shù),判斷一個字符串是否為另外一個字符串旋轉之后的字符串。

例如:給定s1 =AABCD和s2 = BCDAA,返回1

給定s1=abcd和s2=ACBD,返回0.

AABCD左旋一個字符得到ABCDA

AABCD左旋兩個字符得到BCDAA

AABCD右旋一個字符得到DAABC

題前認知

大家現(xiàn)在應該知道我干啥,沒錯我倡導交互,兩個字符串都是我們寫

字符串追加判斷

(面試的時候能用庫函數(shù)就用庫函數(shù))

什么叫字符串追加判斷呢 例如asdfg這個字符串

image-20210913231753342

#include<stdio.h>
#include<string.h>
#include<assert.h>
int is_left_move(char* str1, char* str2)
{	
	assert(str1 && str2);
	int len1 = strlen(str1);
	int len2 = strlen(str2);
	//長度不同就肯定不是旋轉字符串
	if (len1 - len2)
		return 0;
	//在arr1字符串中追加一個自己
	strncat(str1, str1, len1);
	//判斷判斷的那個字符串是不是追加字符串的子串
	char* ret = strstr(str1, str2);
	if (ret == NULL)
		return 0;
	else
		return 1;
}
int main()
{
	char arr1[50] = {0};//有足夠的空間
	char arr2[50] = {0};
	while (1)
	{
		printf("請輸入字符串:>");
		gets(arr1);
		printf("請輸入需判斷的旋轉字符串:>");
		gets(arr2);
		int ret = is_left_move(arr1, arr2);
		if (ret == 1)
		{
			printf("是旋轉字符串\n");
		}
		else
		{
			printf("不是旋轉字符串\n");
		}
	}	
	return 0;
}

結果

image-20210913231922969

以上就是C語言編程C++旋轉字符操作串示例詳解的詳細內(nèi)容,更多關于C語言編程C++旋轉字符串的資料請關注腳本之家其它相關文章!

相關文章

  • C++標準庫介紹及使用string類的詳細過程

    C++標準庫介紹及使用string類的詳細過程

    C++中將string封裝為單獨的類,string?類是?C++?標準庫中的一個非常重要的類,用于表示和操作字符串,這篇文章主要介紹了C++標準庫介紹及使用string類,需要的朋友可以參考下
    2024-08-08
  • 深入淺析C++ traits技術

    深入淺析C++ traits技術

    traits就是提取“被傳進的對象”對應的返回類型,讓同一個接口實現(xiàn)對應的功能。因為STL的算法和容器是分離的,兩者通過迭代器鏈接,本文通過實例代碼給大家介紹C++ traits技術,感興趣的朋友一起看看吧
    2021-05-05
  • C++實現(xiàn) vector 的四則運算

    C++實現(xiàn) vector 的四則運算

    本文給大家介紹的是在C++中實現(xiàn)高效的vector四則運算的方法的相關資料,需要的朋友可以參考下
    2016-07-07
  • vc中使用SendMessage自定義消息函數(shù)

    vc中使用SendMessage自定義消息函數(shù)

    這篇文章主要介紹了vc中使用SendMessage自定義消息函數(shù)的相關資料,需要的朋友可以參考下
    2015-06-06
  • C++超詳細講解數(shù)組操作符的重載

    C++超詳細講解數(shù)組操作符的重載

    C 語言提供了豐富的操作符,有:算術操作符,移位操作符,位操作符,賦值操作符,單目操作符,關系操作符,邏輯操作符,條件操作符等。接下了讓我們探究一下數(shù)組操作符的重載
    2022-06-06
  • vscode ssh遠程連接服務器一直卡在下載 vscode server問題解決

    vscode ssh遠程連接服務器一直卡在下載 vscode server問題解決

    在使用vscode使用ssh遠程連接服務器時,一直卡在下載"vscode 服務器"階段,本文主要介紹了vscode ssh遠程連接服務器一直卡在下載 vscode server問題解決,感興趣的可以了解一下
    2025-01-01
  • C++賦值函數(shù)+移動賦值函數(shù)+移動構造函數(shù)詳解

    C++賦值函數(shù)+移動賦值函數(shù)+移動構造函數(shù)詳解

    這篇文章主要介紹了C++賦值函數(shù)+移動賦值函數(shù)+移動構造函數(shù)詳解,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • C語言實現(xiàn)班級學生管理系統(tǒng)

    C語言實現(xiàn)班級學生管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)班級學生管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 解析C++中std::ref的使用

    解析C++中std::ref的使用

    這篇文章主要介紹了解析C++中std::ref的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • C語言修煉之路靈根孕育源流出?初識C言大道生上篇

    C語言修煉之路靈根孕育源流出?初識C言大道生上篇

    C語言是一門面向過程、抽象化的通用程序設計語言,廣泛應用于底層開發(fā)。C語言能以簡易的方式編譯、處理低級存儲器。C語言是僅產(chǎn)生少量的機器語言以及不需要任何運行環(huán)境支持便能運行的高效率程序設計語言
    2022-03-03

最新評論

大理市| 龙岩市| 淅川县| 遵义县| 渭南市| 高碑店市| 岱山县| 双流县| 香港| 克东县| 洱源县| 鸡东县| 湖州市| 鹤壁市| 甘洛县| 霍林郭勒市| 姜堰市| 新丰县| 饶平县| 盐亭县| 绥芬河市| 平塘县| 钟山县| 盐亭县| 新野县| 天气| 武山县| 通道| 平安县| 宣汉县| 辽宁省| 芒康县| 兰考县| 青龙| 惠东县| 如皋市| 永兴县| 青海省| 郎溪县| 侯马市| 蓬莱市|