zoukankan      html  css  js  c++  java
  • 数据结构5月14日上机(字符串的基本操作)

    #include<stdio.h>
    #define maxsize 100
    typedef struct{
        char A[maxsize];
        int n;
    }SeqString;
    
    void Assign(SeqString &L,char B[]){
        int i=0;
        while(B[i]!=''){
            L.A[i]=B[i];
            i++;
        } 
        L.n=i;
    }
    
    void DisqStr(SeqString &L){
        printf("L.B字符串为:");
        for(int i=0;i<L.n;i++){
            printf("%c",L.A[i]);
        }
        printf("
    ");
    }
    
    void Strlength(SeqString &L){
        printf("字符串L.A的长度为:%d
    ",L.n);
    }
    
    int  concat(SeqString &L,char C[]){
        int i=0,j;
        while(C[i]!=''){
            i++;
        }
        for(j=0;j<i;j++){
            L.A[j+L.n]=C[j];
        }
        printf("将串C连接到L.A后得到的字符串为:%s
    ",L.A);
        return i;
    }
    
    void StrEqual(SeqString &L,char C[],int i){
        int k=0,a;
        a=L.n>=i?L.n:i;
        printf("比较L.A和B的字符串大小!(L.A等于C输出0,L.A大于C输出1,L.A小于C输出-1)
    ");
        for(int j=0;j<a;j++){
            if(L.A[j]==C[j]){
                k++;
            }else if(L.A[j]>C[j]){
                printf("1
    ");
                break; 
            }else {
                printf("-1
    ");
                break;
            }
        }
        if(k==a){
            printf("0
    ");
        }
        }
    
    void InsStr(SeqString &L,int n,int m){
        int i;
        printf("L.A字符串第%d个位置开始的第%d个字符为:",n,m);
        for(i=n-1;i<n+m-1;i++){
            printf("%c",L.A[i]);
        }
        printf("
    ");
    }
    
    void DelStr(SeqString &L,int n,int m){
        int i;
        L.n=L.n-m;
        for(i=n;i<=L.n;i++){
            L.A[i-1]=L.A[i+m-1];
        }
        printf("删除第%d个位置的%d个字符之后组成新的字符串为:",n,m);
        for(i=0;i<L.n;i++){
            printf("%c",L.A[i]);
        } 
    }
    
    void InStr(SeqString &L,int n,int m,char C[]){
        int a[L.n-n+1]; 
        for(int i=0;i<L.n-n+1;i++){
                a[i]=L.A[i+n-1];
        }  
        for(int i=0;i<m;i++){
            L.A[i+n-1]=C[i];
        }
        for(int i=0;i<L.n-n+1;i++){
            L.A[n+m-1+i]=a[i];
        }    
        L.n=L.n+m;
        printf("将C插在L.A的第%d个位置构成的字符串为:",n);
        for(int i=0;i<L.n;i++){
            printf("%c",L.A[i]);
        }
        printf("
    ");
    }
    
    void Find (SeqString &L,char D[]){
        int n=0,i,j,k;
        while(D[n]!=''){
            n++ ; 
        }
        for(i=0;i<L.n-n;i++){
           for(j=0,k=i;j<n;j++,k++){
              if(D[j]!=L.A[k]){
                break;
            } } 
            if(j==n){
            printf("D是L.A字符串中从第%d位置到第%d的位置的字符串:
    ",i+1,i+n); 
            }         
        }
        return;  
       } 
    
    int main(){
        int i,n,m,a,b,k;
        char B[5],C[]="abcdefg",D[4]="cde";
        SeqString L;
        printf("请输入一个最大长度为5的字符串:"); 
        gets(B);
        Assign(L,B);
        DisqStr(L);
        Strlength(L);
        i=concat(L,C);
        StrEqual(L,C,i);
        printf("请输入要查找从第几个位置开始到后面的第几个字符:");
        scanf("%d %d",&n,&m);
        InsStr(L,n,m); 
        printf("请输入在第几个位置插入字符串C:");
        scanf("%d",&k);
        InStr(L,k,i,C);
        printf("请查找字符串D在L.A字符串中的位置:
    ");
        Find(L,D); 
        printf("请输入要删除第几个位置开始的几个字符:");
        scanf("%d %d",&a,&b);
        DelStr(L,a,b);
        return 0;
    } 

  • 相关阅读:
    Convert.ToInt32()和int.Parse()的区别
    C# 提取字符串中的数字
    asp.net FileUpload 控件上传文件 以二进制的形式存入数据库并将图片显示出来
    angularjs如何在ng-repeat过程中控制字符串长度超过指定长度后面内容以省略号显示
    html label 标签的 for 属性
    bootstrap-paginator 分页控件的使用
    时间戳的转换
    Server.MapPath() 解析
    Angularjs 日期格式转换
    1.docker 慕课入门
  • 原文地址:https://www.cnblogs.com/hyy0209/p/10861472.html
Copyright © 2011-2022 走看看