字符串反序操作


        字符串反序操作,可以分為兩種類型,一種是將字符串的反序存儲,一種是將字符串反序輸出。
        對於前一種,假設字符串長度為n,可以從第1個字符到第floor(n/2) (取整函數,取得不超過某個數的最大整數)個字符,依次將第i個字符和第n+1-i個字符交換位置。這一結束后,字符串就反序存儲了。
        對於后一種,可以采取兩種方法。第一種方法是從字符串的最后一個字符逆序遍歷到第一個字符,依次打印每個字符。第二種方法是采用遞歸方法,這里先不做解釋,稍后會在具體例子中說明。采用前一種方法簡單直觀,后一種方法則更加巧妙。
        下面來看一個C語言編寫的具體例子。
#include <stdio.h>
#include <string.h>

void inversePrint(const char * const);//將字符串反序打印
void invert(char * const);//將字符串反轉存儲

int main()
{
	char str[15]="I love China";

	//將原字符串反序存儲
	invert(str);
	printf("反序后的字符數組為:\n%s\n", str);
	//將原字符串反序輸出
	printf("反序打印的結果為:\n");
	inversePrint(str);
	return 0;
}

void invert(char * const str)
{
	int n = strlen(str);
	int m = n / 2 - 1;//計算中間值的序號
	int i = 0;
	char ch;
	for(i = 0; i <= m; i++)
	{
		//交換對稱的數組元素
		ch = str[i];
		str[i] = str[n-1-i];
		str[n-1-i] = ch;
	}
}

//采用遞歸方法反序輸出字符串
void inversePrint(const char * const str)//傳入參數為字符數組的起始地址
{
	if(*str == '\0')
	{
			return;//遇到結束符,結束遞歸,返回上一層
	}
	else
        {
		inversePrint(str + 1);//將以下一個字符為起始元素的子數組的首地址作為實參再次調用
		/*輸出單個字符,這是當遞歸到字符串結束符后開始執行的,執行完成再返回上一層,直到
返回到第一層,輸出首個字符*/	
                putchar(*str);
        }
}
 
 

運行結果為:

反序后的字符數組為:

anihC evol I
反序打印的結果為:

I love China


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



字符串反序輸出字符串 輸入字符串反序輸出 五、字符串操作 字符串的操作 字符串的操作 字符串操作(1) 字符串操作1 字符和字符串操作 c# 對字符串反序列成匿名對象 javascript 反序列化json字符串
 
粤ICP备14056181号  © 2014-2020 ITdaan.com