llf123456 发表于 2021-1-6 14:46:07

帮帮我

实验11-1-6 指定位置输出字符串 (20分)
本题要求实现一个函数,对给定的一个字符串和两个字符,打印出给定字符串中从与第一个字符匹配的位置开始到与第二个字符匹配的位置之间的所有字符。

函数接口定义:
char *match( char *s, char ch1, char ch2 );
函数match应打印s中从ch1到ch2之间的所有字符,并且返回ch1的地址。

裁判测试程序样例:
#include <stdio.h>

#define MAXS 10

char *match( char *s, char ch1, char ch2 );

int main()
{
    char str, ch_start, ch_end, *p;

    scanf("%s\n", str);
    scanf("%c %c", &ch_start, &ch_end);
    p = match(str, ch_start, ch_end);
    printf("%s\n", p);

    return 0;
}

/* 你的代码将被嵌在这里 */
输入样例1:
program
r g
输出样例1:
rog
rogram
输入样例2:
program
z o
输出样例2:
(空行)
(空行)
输入样例3:
program
g z
输出样例3:
gram
gram
char *match( char *s, char ch1, char ch2 )
{
        int i,flag=1,k=0;
        char t;
        char *T;
        for(i=0;s!='\0';i++)
        {
          if(s==ch1)
                {
                        T = &s;
                        for(int j=0;s!='\0';j++)
                        {
                                t=s;
                                if(s==ch2)
                                {
                                        flag=0;
                                        t='\0';
                                        break;
                                }
                        }
                }
                if(flag==0)        break;
        }
        puts(t);
        printf("\n");
        return T;
}//为什么我的第二个样例输出错误,能帮我改一下吗

心驰神往 发表于 2021-1-6 14:48:42

帮帮我{:10_327:}

风过无痕1989 发表于 2021-1-6 14:56:19

来看看

jackz007 发表于 2021-1-6 15:17:47

char * match(char * s , char ch1 , char ch2)
{
      int i , r                                                   ;
      for(r = 0 ; s && s != ch1 ; r ++)                     ;
      for(i = r ; s && s != ch2 ; i ++) printf("%c" , s) ;
      if(s) printf("%c" , s)                              ;
      printf("\n")                                                ;
      return & s                                             ;
}
页: [1]
查看完整版本: 帮帮我