当前位置:网站首页>PTA 指定位置输出字符串(c)
PTA 指定位置输出字符串(c)
2022-08-09 10:58:00 【拾荒大妈】
本题要求实现一个函数,对给定的一个字符串和两个字符,打印出给定字符串中从与第一个字符匹配的位置开始到与第二个字符匹配的位置之间的所有字符。
函数接口定义:
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
思路:
首先找到ch1的地址,用j记录ch1的地址,并且用sign保证为是第一个出现的地址,找到第一次出现的地址后依次输出,如果找到ch2则跳出循环,否则直到字符串结束。当字符串中存在ch1字符时返回其地址,否则返回“\0”。
char *match( char *s, char ch1, char ch2 )
{
int i=0;
int j=-1;//记录ch1的地址
int sign=-1;//保证ch1的地址是第一次出现的地址
char *p=NULL;
for(;s[i]!='\0';i++)
{
if(s[i]==ch1&&sign==-1)
{
j=i;
sign=1;
}
if(s[i]!=ch2&&sign==1)
{
printf("%c",s[i]);
}
if(s[i]==ch2&&sign==1)
{
printf("%c",s[i]);
break;
}
}
printf("\n");
if(j!=-1)
{
return &s[j];
}
else
return "\0";
}
边栏推荐
猜你喜欢
随机推荐
【 original 】 VMware Workstation implementation Openwrt soft routing, the ESXI, content is very detailed!
FreeRTOS任务创建源码分析
golang 标准库json Marshal、Unmarshal坑
程序员的专属浪漫——用3D Engine 5分钟实现烟花绽放效果
json库的dumps()方法和loads()方法
caffe ---make all editing error
cesium加载地图
多商户商城系统功能拆解26讲-平台端分销设置
pip常见命令和更改源文件
Tensorflow realize parameter adjustment of linear equations
golang源代码阅读,sync系列-Pool
faster-rcnn学习
cnn的输入输出
MySQL查询性能优化七种武器之索引潜水
Cesium加载三维模型数据
彻底理解工厂模式
Error: Cannot find module ‘./application‘
The torch. The stack () official explanation, explanation and example
MNIST机器学习入门
真香!肝完Alibaba这份面试通关宝典,我成功拿下今年第15个Offer