2025-03-11 学习记录--C/C++-PTA 习题11-5 指定位置输出字符串
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻
一、题目描述 ⭐️
裁判测试程序样例:
#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
二、代码(C语言)⭐️
char *match(char *s, char ch1, char ch2) {
int i = 0, start_index; // 初始化计数器 i 和变量 start_index(用于记录 ch1 的位置)
while (s[i] != ch1) { // 遍历字符串,直到找到字符 ch1
if (s[i] == '\0') { // 如果遍历到字符串结尾仍未找到 ch1,退出循环
break;
}
i++; // 移动到下一个字符
}
start_index = i; // 记录 ch1 的位置(索引)
// for 循环的初始化部分可以省略 i,因为 i 已经在 while 循环中初始化。
for (; s[i] != '\0'; i++) { // 从 ch1 的位置开始遍历字符串
printf("%c", s[i]); // 打印当前字符
if (s[i] == ch2) { // 如果遇到字符 ch2,退出循环
break;
}
}
printf("\n"); // 打印换行符
return s + start_index; // 返回指向 ch1 位置的指针
}