当前位置: 首页 > news >正文

2025-03-09 学习记录--C/C++-PTA 练习11-4 字符定位(最后一次找到的字符)

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻

一、题目描述 ⭐️

在这里插入图片描述

裁判测试程序样例:

#include <stdio.h> 
char *match(char *s, char ch); 

int main(void )
{
    char ch, str[80], *p = NULL;

    scanf("%s", str);
    getchar();                 /* 跳过输入字符串和输入字符之间的分隔符 */
    ch = getchar();          /* 输入一个字符 */
    p = match(str, ch);     /* 调用函数match() */
    if( p != NULL ){        /* 找到字符ch */
        printf("%s\n", p);
    }else{ 
        printf("Not Found.\n");
    }

    return 0;
}

/* 请在这里填写答案 */

输入样例1

program
r

输出样例1

ram

输入样例2

program
x

输出样例2

Not Found.

二、代码(C语言)⭐️

#include <string.h>

// 函数功能:在字符串 s 中从后往前查找字符 ch,如果找到,则从该字符开始截取到字符串末尾,并返回截取后的字符串;如果未找到,返回 NULL。
char *match(char *s, char ch) {
    int len = strlen(s); // 计算字符串 s 的长度
    int start = 0;       // 初始化起始位置为 0
    int cutLen = 0;      // 初始化截取长度为 0

    // 从字符串末尾开始向前遍历
    for (int i = len - 1; i >= 0; i--) {
        // 如果当前字符等于目标字符 ch
        if (s[i] == ch) {
            start = i;              // 记录目标字符的位置
            cutLen = len - i;        // 计算从目标字符到字符串末尾的长度
            // printf("%d %d %d %d\n", len, i, start, cutLen); // 调试信息,打印相关变量值

            // 将目标字符及其后面的部分复制到字符串 s 的开头
            strncpy(s, s + i, cutLen);
            s[cutLen] = '\0';        // 在复制后的字符串末尾添加 null 终止符
            return s;                // 返回截取后的字符串
        }
    }

    // 如果未找到目标字符 ch,返回 NULL
    return NULL;
}

在这里插入图片描述

三、知识点 ⭐️

C语言 截取字符串的三种方法,请查看我的另一篇文章。

在这里插入图片描述

相关文章:

  • 前端 | CORS 跨域问题解决
  • Linux上位机开发实战(开篇)
  • 认识vue2脚手架
  • LangChain4j开发RAG入门示例
  • Unity Dots从入门到精通之 Prefab引用 转 实体引用
  • QT:TCP示例
  • linux查看定时任务与设置定时任务
  • C#的判断语句总结
  • C++面试题:C++怎么避免头文件循环引用?
  • 游戏引擎学习第146天
  • 学习小程序开发--Day1
  • 学习网络安全需要哪些基础?
  • C++单例进化论
  • P8686 [蓝桥杯 2019 省 A] 修改数组--并查集 or Set--lower_bound()的解法!!!
  • 设计模式 一、软件设计原则
  • Spring源码探析(二):BootstrapContext初始化深度解析(默认配置文件加密实现原理)
  • [算法笔记]cin和getline的并用、如何区分两个数据对、C++中std::tuple类
  • uniapp版本加密货币行情应用
  • Unity DOTS从入门到精通之EntityCommandBufferSystem
  • C#模拟鼠标点击,模拟鼠标双击,模拟鼠标恒定速度移动,可以看到轨迹
  • 国内大模型人才大战打响!大厂各出奇招
  • 佩斯科夫:俄会考虑30天停火提议,但试图对俄施压无用
  • 巴防空系统击落印度无人机,印称巴方违反停火协议
  • 花2万多在海底捞办婚礼,连锁餐企要抢酒楼的婚宴生意?
  • 春秋航空:如果供应链持续改善、油价回落到合理水平,公司补充运力的需求将会增长
  • 央行:当前我国债券市场定价效率、机构债券投资交易和风险管理能力仍有待提升