• C语言程序设计进阶 第1周编程题


    第1周编程题

    查看帮助

    返回

     

     

     

    依照学术诚信条款,我保证此作业是本人独立完成的。

    温馨提示:

    1.本次作业属于Online Judge题目,提交后由系统即时判分。

    2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩。

    1

    字符串比对(10分)

    题目内容:

    题目说起来很简单,你会读到两个字符串,每个字符串占据一行,每个字符串的长度均小于10000字符,而且第一个字符串的长度小于第二个字符串的。你的程序要找出第一个字符串在第二个字符串中出现的位置,输出这些位置,如果找不到,则输出-1。

     

    注意,第一个字符的位置是0。

     

    注意,第一个字符串在第二个字符串中的位置可能不止一处。

     

    注意,字符串中可能含有空格。

     

    注意,两个字符串的长度一定大于0。

     

    输入格式:

    两个字符串,一行一个。

     

    输出格式:

    第一个字符串在第二个字符串中出现的位置,按照从小到到的顺序排列,每个数字后面有一个空格。

    如果在第二个字符串中找不到第一个字符串,则输出-1。

     

    输入样例:

    abba

    ababbba abbabbabbabbaacc

     

    输出样例:

    8 11 14 17

    时间限制:500ms内存限制:32000kb

     1 //
     2 //  main.c
     3 //  CC
     4 //
     5 //  Created by anzhongyin on 2016/12/10.
     6 //  Copyright © 2016年 anzhongyin. All rights reserved.
     7 //
     8 
     9 #include <stdio.h>
    10 #include <stdlib.h>
    11 #include <string.h>
    12 int main(int argc, const char * argv[]) {
    13     // insert code here...
    14     char c;
    15     int i=0;
    16     char str[1000]={''}; //大字符串
    17     char dest[100]={''}; //子字符串
    18     char *q=0;
    19     char *p=0;
    20     int b=1; //BOOL,b=0,第二个字符串中找到第一个字符串,否则为1
    21     while((c=getchar())!='
    ') //读入子字符串
    22     {
    23         dest[i]=c;
    24         i++;
    25         
    26         
    27     }
    28      i=0;
    29     while((c=getchar())!='
    ')//读入长字符串
    30     {
    31         str[i]=c;
    32         i++;
    33         
    34         
    35     }
    36    
    37     p=str; //将&str[0]地址赋值p
    38     
    39     while((q=strstr(p,dest))!=NULL) //将大字符串中小字符串的起始位地址赋给q
    40     {
    41         char a=*q;  //将*q的值赋给a,以便还原
    42         *q='';    //大字符串中首次出现小字符的位置,写入0,作str字符串的结束位置
    43         printf("%lu ",strlen(str));//统计的str长度即dest首次出现位置
    44         *q=a; //还原字符串
    45         p=q+1;//将str字符串q址址的下一地址作为p字符串开始位置
    46         if(b==1)
    47             b=0; //b=0,第二个字符串中找到第一个字符串
    48     }
    49     if(b)
    50         printf("-1");
    51     printf("
    ");
    52     
    53     return 0;
    54 }
  • 相关阅读:
    ubuntu-14.04.2-desktop-amd64.iso:ubuntu-14.04.2-desktop-amd64:安装Oracle11gR2
    ubuntu-15.04-desktop-amd64.iso:ubuntu-15.04-desktop-amd64:安装Oracle11gR2
    Ubuntu 使用文件 casper-rw 镜像文件 保存变更内容
    continue — Skip to the next iteration of a loop in a shell script
    Is there a TRY CATCH command in Bash
    tar 打包压缩
    oracle 重复只保留一条
    sed 删除 51, 54 行 输出到原文件
    ORA-01000: maximum open cursors exceeded
    Oracle 在字符串中输入单引号或特殊字符
  • 原文地址:https://www.cnblogs.com/bcd589/p/6158857.html
Copyright © 2020-2023  润新知