習題11-5 指定位置輸出字符串 (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[MAXS], 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
#include <stdio.h>
#include<string.h>
#define MAXS 10
char *match( char *s, char ch1, char ch2 );
int main()
{
char str[MAXS], 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;
}
char *match( char *s, char ch1, char ch2 ){
int i=0,j=0,k=0,len=0;
char *p=NULL;
len = strlen(s);
for(i=0;i<len;i++){
if(s[i]==ch1){
p=&s[i];
for(j=i;j<len;j++){
if(s[j]!=ch2){
printf("%c", s[j]);
}
if(s[j]==ch2){
printf("%c\n", s[j]);
return p;
}
}
printf("\n");
return p;
}
}
printf("\n");
return p;
}