国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

順序串基本操作

2019-11-11 02:28:12
字體:
來源:轉載
供稿:網友
#include <stdio.h>#define MaxSize 100    			//最多的字符個數typedef struct{   char data[MaxSize];			//定義可容納MaxSize個字符的空間    int length;             	//標記當前實際串長} SqString;void StrAssign(SqString &s,char cstr[])	//創建串{	int i;	for (i=0;cstr[i]!='/0';i++)		s.data[i]=cstr[i];	s.length=i;}void StrCopy(SqString &s,SqString t)	//s為引用型參數{	int i;	for (i=0;i<t.length;i++)		s.data[i]=t.data[i];	s.length=t.length;}bool StrEqual(SqString s,SqString t){	bool same=true;	int i;	if (s.length!=t.length)				//長度不相等時返回0		same=false;	else		for (i=0;i<s.length;i++)			if (s.data[i]!=t.data[i])	//有一個對應字符不相同時返回0			{	same=false;				break;			}	return same;}int StrLength(SqString s)//求串的長度{	return s.length;}SqString Concat(SqString s,SqString t){	SqString str;	int i;	str.length=s.length+t.length;	for (i=0;i<s.length;i++)	//將s.data[0..s.length-1]復制到str		str.data[i]=s.data[i];	for (i=0;i<t.length;i++)	//將t.data[0..t.length-1]復制到str		str.data[s.length+i]=t.data[i];	return str;}SqString SubStr(SqString s,int i,int j)//提取串s的第i個字符開始的j個字符{	SqString str;	int k;	str.length=0;	if (i<=0 || i>s.length || j<0 || i+j-1>s.length)		return str;					//參數不正確時返回空串	for (k=i-1;k<i+j-1;k++)  		//將s.data[i..i+j]復制到str		str.data[k-i+1]=s.data[k];	str.length=j;	return str;}SqString InsStr(SqString s1,int i,SqString s2)//在串s1的第i個位置插入串s2{	int j;	SqString str;	str.length=0;	if (i<=0 || i>s1.length+1)  //參數不正確時返回空串		return str;	for (j=0;j<i-1;j++)      		//將s1.data[0..i-2]復制到str		str.data[j]=s1.data[j];	for (j=0;j<s2.length;j++)		//將s2.data[0..s2.length-1]復制到str		str.data[i+j-1]=s2.data[j];	for (j=i-1;j<s1.length;j++)		//將s1.data[i-1..s1.length-1]復制到str		str.data[s2.length+j]=s1.data[j];	str.length=s1.length+s2.length;	return str;}SqString DelStr(SqString s,int i,int j)//從s的第i個位置刪除j個字符{	int k;	SqString str;	str.length=0;	if (i<=0 || i>s.length || i+j>s.length+1) //參數不正確時返回空串		return str;	for (k=0;k<i-1;k++)       		//將s.data[0..i-2]復制到str		str.data[k]=s.data[k];	for (k=i+j-1;k<s.length;k++)	//將s.data[i+j-1..s.length-1]復制到str		str.data[k-j]=s.data[k];	str.length=s.length-j;	return str;}SqString RepStr(SqString s,int i,int j,SqString t)//將串s第i個字符開始的j個字符替換成串t{	int k;	SqString str;	str.length=0;	if (i<=0 || i>s.length || i+j-1>s.length) //參數不正確時返回空串		return str;	for (k=0;k<i-1;k++)				//將s.data[0..i-2]復制到str		str.data[k]=s.data[k];	for (k=0;k<t.length;k++)   		//將t.data[0..t.length-1]復制到str		str.data[i+k-1]=t.data[k];	for (k=i+j-1;k<s.length;k++)	//將s.data[i+j-1..s.length-1]復制到str		str.data[t.length+k-j]=s.data[k];	str.length=s.length-j+t.length;	return str;}void DispStr(SqString s)//輸出串{	int i;	if (s.length>0)	{	for (i=0;i<s.length;i++)			PRintf("%c",s.data[i]);		printf("/n");	}}int  main(){	SqString s,s1,s2,s3,s4;	printf("順序串的基本運算如下:/n");	printf("  (1)建立串s和串s1/n");	StrAssign(s,"abcdefghijklmn");	StrAssign(s1,"123");	printf("  (2)輸出串s:");DispStr(s);	printf("  (3)輸出串s1:");DispStr(s1);	printf("  (4)串s的長度:%d/n",StrLength(s));	printf("  (5)在串s的第9個字符位置插入串s1而產生串s2/n");	s2=InsStr(s,9,s1);	printf("  (6)輸出串s2:");DispStr(s2);	printf("  (7)刪除串s第2個字符開始的3個字符而產生串s2/n");	s2=DelStr(s,2,3);	printf("  (8)輸出串s2:");DispStr(s2);	printf("  (9)將串s第2個字符開始的5個字符替換成串s1而產生串s2/n");	s2=RepStr(s,2,5,s1);	printf("  (10)輸出串s2:");DispStr(s2);	printf("  (11)提取串s的第2個字符開始的10個字符而產生串s3/n");	s3=SubStr(s,2,10);	printf("  (12)輸出串s3:");DispStr(s3);	printf("  (13)將串s1和串s2連接起來而產生串s4/n");	s4=Concat(s1,s2);	printf("  (14)輸出串s4:");DispStr(s4);	return 0;}

運行結果:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 灵武市| 利辛县| 满洲里市| 茌平县| 休宁县| 涪陵区| 远安县| 乐东| 平乡县| 五原县| 潜山县| 丰宁| 望谟县| 黑水县| 濉溪县| 彰化县| 富裕县| 抚顺县| 堆龙德庆县| 临夏市| 高邮市| 金昌市| 阜康市| 兴隆县| 延津县| 鹤壁市| 柘城县| 邵东县| 邵武市| 永年县| 门源| 正镶白旗| 会同县| 龙岩市| 玛曲县| 和平区| 咸丰县| 敦煌市| 黄骅市| 隆德县| 新巴尔虎左旗|