#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]!='\0'){
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("\n");
}
void Strlength(SeqString &L){
printf("字符串L.ch的长度为:%d\n",L.n);
}
int Length(char ch2[]){
int i=0,j;
while(ch2[i]!='\0'){
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)\n");
for(int j=0;j<a;j++){
if(L.ch[j]==ch2[j]){
k++;
}else if(L.ch[j]>ch2[j]){
printf("1\n");
break;
}else {
printf("-1\n");
break;
}
}
if(k==a){
printf("0\n");
}
}
void InsStr(SeqString &L,int n,int m){
int i;
if(n<1||n>L.n||n+m>=L.n+2){
printf("位置选择错误,查找失败!\n");
}
else {
printf("L.ch字符串第%d个位置开始的第%d个字符为",n,m);
for(i=n-1;i<n+m-1;i++){
printf("%c",L.ch[i]);
}}
printf("\n");
}
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("\n");
}
void Find (SeqString &L,char ch3[]){
int n=0,i,j,k,m=0;
while(ch3[n]!='\0'){
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的位置\n",i+1,i+n);
m++;
}
}
printf("字符串ch3在L.ch字符串中总共有%d处相同!\n",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字符串中的位置:\n");
Find(L,ch3);
printf("请问要删除第几个位置开始的几个字符:");
scanf("%d %d",&a,&b);
DelStr(L,a,b);
return 0;
}

浙公网安备 33010602011771号