zoukankan      html  css  js  c++  java
  • 字符串

    
    
    #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;
    }
     
    
     
    

      

    
    

     

  • 相关阅读:
    Go语言
    Go语言
    electron-builder vue3 用户自定义安装目录
    提取页面中的style标签内容
    px2rpx | px转rpx
    js EventBus
    select 下拉选择多个值
    keep-alive页面缓存
    js适配移动端页面
    vue日常问题记录
  • 原文地址:https://www.cnblogs.com/lusilin/p/10859709.html
Copyright © 2011-2022 走看看