#include<stdio.h> #define maxsize 100 typedef struct{ char ch[maxsize]; int n; }SeqString; void Assign(SeqString &L,char ch1[]){ int i=0; while(ch1[i]!=' '){ L.ch[i]=ch1[i]; i++; } L.n=i; } void DisqStr(SeqString &L){ printf("L.ch的字符串为:"); for(int i=0;i<L.n;i++){ printf("%c",L.ch[i]); } printf(" "); } void Strlength(SeqString &L){ printf("字符串L.ch的长度为:%d ",L.n); } int Length(char ch2[]){ int i=0,j; while(ch2[i]!=' '){ i++; } return i; } void StrEqual(SeqString &L,char ch2[],int i){ int k=0,a; a=L.n>=i?L.n:i; printf("比较L.ch和ch2的字符串大小!(L.ch等于ch2输出0,L.ch大于ch2输出1,L.ch小于ch2输出-1) "); for(int j=0;j<a;j++){ if(L.ch[j]==ch2[j]){ k++; }else if(L.ch[j]>ch2[j]){ printf("1 "); break; }else { printf("-1 "); break; } } if(k==a){ printf("0 "); } } void InsStr(SeqString &L,int n,int m){ int i; if(n<1||n>L.n||n+m>=L.n+2){ printf("位置选择错误,查找失败! "); } else { printf("L.ch字符串第%d个位置开始的第%d个字符为",n,m); for(i=n-1;i<n+m-1;i++){ printf("%c",L.ch[i]); }} printf(" "); } void DelStr(SeqString &L,int n,int m){ int i; if(n<1||n>L.n||m<1||m>L.n){ printf("位置选择错误,删除失败!"); } else{ for(i=n-1;i<=L.n;i++){ L.ch[i]=L.ch[i+m]; } L.n=L.n-m; printf("删除第%d个位置的%d个字符之后组成新的字符串为:",n,m); for(i=0;i<L.n;i++){ printf("%c",L.ch[i]); } } } void InStr(SeqString &L,int n,int m,char ch2[]){ if(n<1||n>L.n+1){ printf("位置选择错误!"); }else{ for(int i=L.n-1;i>=n-1;i--){ L.ch[i+m]=L.ch[i]; } for(int i=0;i<m;i++){ L.ch[n+i-1]=ch2[i]; } L.n=L.n+m; printf("将ch2插在L.ch的第%d个位置之后构成的字符串为:",n); for(int i=0;i<L.n;i++){ printf("%c",L.ch[i]); }} printf(" "); } void Find (SeqString &L,char ch3[]){ int n=0,i,j,k,m=0; while(ch3[n]!=' '){ n++; } for(i=0;i<L.n-n;i++){ for(j=0,k=i;j<n;j++,k++){ if(ch3[j]!=L.ch[k]){ break; }} if(j==n){ printf("ch3字符串是从L.ch字符串中的第%d位置到第%d的位置 ",i+1,i+n); m++; } } printf("字符串ch3在L.ch字符串中总共有%d处相同! ",m); return; } int main(){ int i,n,m,a,b,k; char ch1[5],ch2[]="abdef",ch3[4]="ab"; SeqString L; printf("请输入一个长度最大为5的字符串:"); gets(ch1); Assign(L,ch1); DisqStr(L); Strlength(L); i=Length(ch2); StrEqual(L,ch2,i); printf("请问要查找第几个位置开始的第几个字符:"); scanf("%d %d",&n,&m); InsStr(L,n,m); printf("请问要在第几个位置插入字符串ch2:"); scanf("%d",&k); InStr(L,k,i,ch2); printf("查找字符串ch3在L.ch字符串中的位置: "); Find(L,ch3); printf("请问要删除第几个位置开始的几个字符:"); scanf("%d %d",&a,&b); DelStr(L,a,b); return 0; }