zoukankan      html  css  js  c++  java
  • SDUST数据结构

    函数题:

      6-1 查找子串:

    裁判测试程序样例:

    #include <stdio.h>
    #define MAXS 30
    
    char *search(char *s, char *t);
    void ReadString( char s[] ); /* 裁判提供,细节不表 */
    
    int main()
    {
        char s[MAXS], t[MAXS], *pos;
    
        ReadString(s);
        ReadString(t);
        pos = search(s, t);
        if ( pos != NULL )
            printf("%d
    ", pos - s);
        else
            printf("-1
    ");
    
        return 0;
    }
    
    /* 你的代码将被嵌在这里 */

    输入样例1:

    The C Programming Language
    ram

    输出样例1:

    10

    输入样例2:

    The C Programming Language
    bored

    输出样例:

    -1

    代码:

    char *search(char *s, char *t)
    {
        int i=0,j=1;
        while(s[i]!='')
        {
            if(s[i] == t[0])
            {
                j=1;
                while(s[i+j] == t[j] && t[j] != '')
                {
                    j++;
                }
                if(t[j]=='')
                    return s+i;
            }
            i++;
        }
        return NULL;
    }
    View Code

    编程题:

      7-1 删除字符串中的子串:

    输入样例:

    Tomcat is a male ccatat
    cat

    输出样例:

    Tom is a male 

    代码:

    #include<stdio.h>
    #include<string.h>
    int main()
    {
        char s1[81]={0},s2[81]={0},s3[81];
        gets(s1);
        gets(s2);//gets()函数读取一行输入,遇到会车结束 
        while(strstr(s1, s2)!=NULL)//strstr用于判断s1串中是否含有s2串 
        {
            int len1=strlen(s1);
            int len2=strlen(s2);
            strcpy(s3, strstr(s1, s2));//将目标串提取出来丙拷贝到s3中 
            int len3=strlen(s3);
            strcpy(s1+len1-len3, s3+len2);
        }
        int l=strlen(s1);//遍历输出,其实可以用puts()函数,,, 
        for(int i=0;i<l;i++)
        {
            printf("%c",s1[i]);
         } 
        return 0;
    }
    View Code

      7-2 字符串循环左移:

    输入样例:

    Hello World!
    2

    输出样例:

    llo World!He

    代码:

    #include<stdio.h>
    #include<string.h>
    int main()
    {
        char s1[101]={0}, s2[101]={0};
        int index;
        gets(s1);
        scanf("%d", &index);
        if(index>strlen(s1))//判断 :index大于长度的话,取余 
        {
            index = index%strlen(s1);
        }
            int len = strlen(s1);
            int j=0;
            for(int i=index;i<len;i++,j++)
            {
                s2[j] = s1[i];//先将左移部分以外的部分依次填入型字符输出中, 
            }
            //j-=1;
            for(int i=0;i<index;i++,j++)
            {    
                s2[j] = s1[i];//再讲左移部分补到结尾 
            }
            //s2[j]='';
            puts(s2);    
        return 0;
    }
    View Code

      7-3 最长对称子串:

    输入样例:

    Is PAT&TAP symmetric?

    输出样例:

    11

    代码:

    #include<stdio.h>
    #include<string.h>
    int main()
    {
        char s1[1001]={0},s2[1001]={0};
        int len;
        int max=0;
        gets(s1);
        len = strlen(s1);
        int k;
        for(int i=0;i<len;i++)//遍历 
        {
            for(int j=0;j<len-i;j++)
            {
                for(k=0;k<(i+1)/2;k++)//对半进行对比 
                {
                    if(s1[j+k] != s1[j+i-k])//不想等就退出 
                        break;
                }
                if(k<(i+1)/2)//小于则继续 
                    continue;
                else
                {
                    max=i+1;
                }
            }
        }
        printf("%d
    ", max);
        return 0;
    }
    View Code
  • 相关阅读:
    UML 类与类之间的关系
    HTTP协议基础
    LDAP介绍
    UML 类与类之间的关系
    我的桌面
    RoR的OO与敏捷[1][88250原创]
    Ubuntu7.10纯仿Leopard[00原创]
    37个我爱Ruby的理由
    在Ubuntu 7.10上安装Rails[00整理]
    RoR的OO与敏捷[1][88250原创]
  • 原文地址:https://www.cnblogs.com/3cH0-Nu1L/p/14038755.html
Copyright © 2011-2022 走看看