【PTA数据结构 | C语言版】剪切粘贴

粘贴工具,可应对PTA和学习通等网站不能粘贴的情况 还在为PTA和学习通等网站不能粘贴而头疼吗?这个软件将解决您的烦恼 阅读详情

本专栏持续输出数据结构题目集,欢迎订阅。

文章目录

题目

使用计算机进行文本编辑时常见的功能是剪切功能(快捷键:Ctrl + X)。请实现一个简单的具有剪切和粘贴功能的文本编辑工具。

工具需要完成一系列剪切后粘贴的操作,每次操作分为两步:

  • 剪切:给定需操作的起始位置和结束位置,将当前字符串中起始位置到结束位置部分的字符串放入剪贴板中,并删除当前字符串对应位置的内容。例如,当前字符串为 abcdefg,起始位置为 3,结束位置为 5,则剪贴操作后, 剪贴板内容为 cde,操作后字符串变为 abfg。字符串位置从 1 开始编号。

  • 粘贴:给定插入位置的前后字符串,寻找到插入位置,将剪贴板内容插入到位置中,并清除剪贴板内容。例如,对于上面操作后的结果,给定插入位置前为 bf,插入位置后为 g,则插入后变为 abfcdeg。如找不到应该插入的位置,则直接将插入位置设置为字符串最后,仍然完成插入操作。查找字符串时区分大小写。
    每次操作后的字符串即为新的当前字符串。在若干次操作后,请给出最后的编辑结果。

输入格式:
输入第一行是一个长度小于等于 200 的字符串 S,表示原始字符串。字符串只包含所有可见 ASCII 字符,不包含回车与空格。

第二行是一个正整数 N (1≤N≤100),表示要进行的操作次数。

接下来的 N 行,每行是两个数字和两个长度不大于 5 的不包含空格的非空字符串,前两个数字表示需要剪切的位置,后两个字符串表示插入位置前和后的字符串,用一个空格隔开。如果有多个可插入的位置,选择最靠近当前操作字符串开头的一个。

剪切的位置保证总是合法的。

输出格式:
输出一行,表示操作后的字符串。

输入样例:
AcrosstheGreatWall,wecanreacheverycornerintheworld
5
10 18 ery cor
32 40 , we
1 6 tW all
14 18 rnerr eache
1 1 e r

输出样例:
he,allcornetrrwecaneacheveryGreatWintheworldAcross

题目引用自团体程序设计天梯赛真题(2023年)。

代码

#include <stdio.h>
#include <string.h>

// 移除字符串中的所有空格
void RemoveSpaces(char* str, int length) {
    int i, j;
    for (i = 0, j = 0; i < length; i++) {
        if (str[i] != ' ') {
            str[j++] = str[i];
        }
    }
    str[j] = '\0';
}

// 查找字符串中是否存在连续的front和back子串,并返回插入位置
int FindInsertPosition(const char* source, const char* front, const char* back) {
    int sourceLen = strlen(source);
    int frontLen = strlen(front);
    int backLen = strlen(back);
    
    for (int i = 0; i <= sourceLen - frontLen - backLen; i++) {
        if (strncmp(source + i, front, frontLen) == 0 && 
            strncmp(source + i + frontLen, back, backLen) == 0) {
            return i + frontLen;
        }
    }
    return 0;
}

// 将子字符串插入到目标位置
void InsertSubstring(char* target, const char* substring, int position) {
    int targetLen = strlen(target);
    int subLen = strlen(substring);
    
    // 如果position为0,则直接追加到末尾
    if (position == 0) {
        strcat(target, substring);
        return;
    }
    
    // 确保目标数组有足够空间
    if (targetLen + subLen + 1 > 201) {
        return; // 处理溢出情况
    }
    
    // 后移元素为插入腾出空间
    for (int i = targetLen; i >= position; i--) {
        target[i + subLen] = target[i];
    }
    
    // 插入子字符串
    for (int i = 0; i < subLen; i++) {
        target[position + i] = substring[i];
    }
}

int main() {
    char source[201] = {0};
    int operations;
    
    // 读取原始字符串
    fgets(source, sizeof(source), stdin);
    source[strcspn(source, "\n")] = 0; // 移除换行符
    
    // 读取操作次数
    scanf("%d", &operations);
    getchar(); // 消耗scanf后的换行符
    
    // 处理每个操作
    for (int op = 0; op < operations; op++) {
        int start, end;
        char front[10] = {0};
        char back[10] = {0};
        char substring[201] = {0};
        
        // 读取操作参数
        scanf("%d %d %s %s", &start, &end, front, back);
        getchar(); // 消耗scanf后的换行符
        
        // 提取子字符串并替换为空格
        int subIndex = 0;
        for (int i = start - 1; i < end && i < strlen(source); i++) {
            substring[subIndex++] = source[i];
            source[i] = ' ';
        }
        substring[subIndex] = '\0';
        
        // 移除空格
        RemoveSpaces(source, strlen(source));
        
        // 查找插入位置
        int insertPos = FindInsertPosition(source, front, back);
        
        // 插入子字符串
        InsertSubstring(source, substring, insertPos);
    }
    
    // 输出结果
    printf("%s\n", source);
    return 0;
}    
C语言:PTA题解,剪切粘贴 立即下载

相关推荐

剪切粘贴pta用c语言实现.rar

剪切粘贴pta c语言在C语言中,并没有直接提供像一些高级语言(如Python或Java)那样的剪切和粘贴功能,因为C语言主要关注于底层编程,不涉及到图形用户界面(GUI)或操作系统的剪贴板功能。 然而,如果你希望在C语言中处理文本数据,你可以通过复制和移动内存中的字符串来实现类似的效果。这通常涉及到使用字符串处理函数,如strcpy(复制字符串)和memmove(移动内存块)。

天梯赛:L1-094 剪切粘贴

解决问题②:题目给出的条件是找到前字符串是s1,后字符串是s2的位置插入拷贝的字符串,如果我们运用模拟的方法找,会很麻烦,巧妙的是我们可以直接找到s1+s2的字符串,就不用模拟模拟模拟了.解决问题①:运用string库中的拷贝函数(substr),以及删除(erase)函数.①“拷贝”删除的字符串。

weixin_73928839的博客 3114

第四篇:关于python程序打包的问题-找不到fsspec

这个问题困扰了我将近两天的时间一直找不到什么好的办法,甚至打算放弃。主要原因是身边没有可以述说的人,也没有可以请教的人。正在想要放弃的时候找到了解决办法。 打包后运行程序是这样的, 大概意思是找不见fsspec这个依赖,刚接触python说实话对于这些第三方库理解不是很到位,我的理解就是:类似于java程序中的jar包,程序找不见了。可怎么让他找见了,刚开始以为我自己没有安装fsspec,在cmd中进行了安装,结果如下图所示 很明显,已经安装并且安装目录都有,跟着网上的一些解决办法,在打包的时候把这.

weixin_47861710的博客 5865

PTA L1-094 剪切粘贴 (15 分)

使用计算机进行文本编辑时常见的功能是剪切功能(快捷键:Ctrl + X)。请实现一个简单的具有剪切和粘贴功能的文本编辑工具。abcdefg35cdeabfg1bfgabfcdeg每次操作后的字符串即为新的当前字符串。在若干次操作后,请给出最后的编辑结果。

00后的博客 4701

java modbus通讯协议_Modbus通 讯 协 议

电磁流量计Modbus通 讯 协 议(版本号:9000-K V9.1.1)2020年01月01日通讯协议针对KFD电磁流量计工业应用设计,版本:9000-K V9.1.1,该版本主要用于实时数据采集、流量测量、流量累计控制及部分参数的修改。一、主机系统通讯部件要求1.国际标准RS-485通讯接口部件,不小于11Bytes 的通信缓冲区(FIFO),支持1200、2400、4800、96...

weixin_39956612的博客 1012

Codesys软运动控制进阶:用SMC_FreeEncoder为ECAT轴搭建一个“虚拟手轮”调试工具

本文详细介绍了如何利用Codesys的SMC_FreeEncoder功能为ECAT轴搭建虚拟手轮调试工具,解决自动化设备开发中的硬件依赖问题。通过软件模拟手轮脉冲信号,实现无硬件依赖的运动控制逻辑验证,显著提升调试效率。适用于汇川AM400等PLC平台,特别适合机械安装滞后或伺服驱动器故障时的调试场景。

weixin_33737774的博客 477

[PTA]7-6 剪切粘贴

使用计算机进行文本编辑时常见的功能是剪切功能(快捷键:Ctrl + X)。请实现一个简单的具有剪切和粘贴功能的文本编辑工具。工具需要完成一系列剪切后粘贴的操作,每次操作分为两步:剪切:给定需操作的起始位置和结束位置,将当前字符串中起始位置到结束位置部分的字符串放入剪贴板中,并删除当前字符串对应位置的内容。例如,当前字符串为 abcdefg,起始位置为 3,结束位置为 5,则剪贴操作后, 剪贴板内容为 cde,操作后字符串变为 abfg。字符串位置从 1 开始编号。

2201_75443644的博客 1835

高通拨号流程介绍

本文介绍了高通平台(如SDX55)中APSS(A7处理器)与ModEM(Q6处理器)间的通信机制。

四儿家的小祖宗的博客 1067

【PTA题目解答】7-5 剪切粘贴

使用计算机进行文本编辑时常见的功能是剪切功能(快捷键:Ctrl + X)。请实现一个简单的具有剪切和粘贴功能的文本编辑工具。abcdefgcdeabfgbfgabfcdeg每次操作后的字符串即为新的当前字符串。在若干次操作后,请给出最后的编辑结果。

weixin_73266891的博客 445

基于风机和水轮机互补发电系统的Simulink仿真

随着全球对清洁能源的需求不断增长,风力发电和水力发电作为两种重要的可再生能源发电方式,受到了广泛关注。风机和水轮机互补发电系统结合了两者的优势,能够在不同的自然条件下稳定地输出电能,提高能源利用效率和供电可靠性。本文将详细介绍风机和水轮机互补发电的原理,包括风力发电原理、水力发电原理以及两者互补的机制和优势,并通过相关数学公式进行深入分析。水轮机也有其特定的特性曲线,包括流量 - 水头曲线、功率 - 流量曲线等。在不同的水头和流量条件下,水轮机的输出功率会发生变化。

平时工作较为繁忙,私信消息一般晚上回复,谢谢大家~~ 168

使用 Python 爬虫抓取 IMDb 电影信息 - 评分、评论与基本信息抓取教程

本文介绍了如何使用 Python 爬虫技术抓取 IMDb 电影评分、评论和基本信息。我们分别展示了通过IMDb API和两种方法抓取数据,并进行了数据存储、分析与可视化。在未来,我们还可以基于这些数据开发电影推荐系统、情感分析工具等,进一步丰富电影数据的应用场景。通过这些实践,您不仅学会了如何抓取和存储数据,还可以通过这些基础来构建自己的数据分析应用,获取更丰富的电影数据。

2201_76125261的博客 601

L1-094 剪切粘贴

使用计算机进行文本编辑时常见的功能是剪切功能(快捷键:Ctrl + X)。请实现一个简单的具有剪切和粘贴功能的文本编辑工具。abcdefgcdeabfgbfgabfcdeg每次操作后的字符串即为新的当前字符串。在若干次操作后,请给出最后的编辑结果。输入第一行是一个长度小于等于 200 的字符串 S,表示原始字符串。字符串只包含所有可见 ASCII 字符,不包含回车与空格。第二行是一个正整数 N (1≤N≤100),表示要进行的操作次数。接下来的 N 行,每行是两个数字和两个。

CSTQiang的博客 448

QCM2290 PM-3 如何让mirco-usb支持关机充电

PM4125-3插入type-C触发开机进入关机充电的CC脚中断条件是否可以软件上屏蔽, 做到只通过VBUS中断即可触发进入关机充电模式,达到和PM4125-2的效果一样只要插入micro USB 就可以触发进入关机充电模式。硬件团队提议修改寄存器 SCHG_L_MISC_SYSOK_CFG 0x164A bit[4] 目前修改如下 — a/BOOT.XF.4.1/boot_images/QcomPkg/Library/PmicLib/target/Agatti_pmCocos/psi/pm_confi

墨染天玑的博客 443

PTA 团体程序设计天梯赛 15分题 094

使用计算机进行文本编辑时常见的功能是剪切功能(快捷键:Ctrl + X)。请实现一个简单的具有剪切和粘贴功能的文本编辑工具。abcdefgcdeabfgbfgabfcdeg每次操作后的字符串即为新的当前字符串。在若干次操作后,请给出最后的编辑结果。

LxiazichengxiL的博客 596

【车载以太网】【架构】整体架构与协议标准

车载以太网架构图 应用层:DHCP /SOMEIP/DoIP/XCP/UDPNM 传输层:TCP/IP 网络层:IPv4/IPv6/ARP/ICMP 链路层:IEEE Ethernet MAC+VLAN 物理层:Ethernet PHY: 100BASE-T1/1000BASE-T1/100BASE-Tx

专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。 8355

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

PTA团体程序设计天梯赛-练习集L1(Python3实现)

目录L1-001 Hello WorldL1-002 打印沙漏L1-003 个位数统计L1-004 计算摄氏温度L1-005 考试座位号L1-006 连续因子L1-007 念数字L1-008 求整数段和L1-009 N个数求和L1-010 比较大小L1-011 A-BL1-012 计算指数L1-013 计算阶乘和L1-014 简单题L1-015 跟奥巴马一起画方块L1-016 查验身份证L1-017 到底有多二L1-018 大笨钟L1-019 谁先倒L1-020 帅到没朋友L1-021 重要的话说三遍L1-

wasd233666的博客 5478

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

PTA L1系列题解(C语言)(L1_089 -- L1_096)

L1-090 什么是机器学习 - 团体程序设计天梯赛-练习集 (pintia.cn)什么是机器学习?面试官:9 + 10 等于多少?答:3面试官:差远了,是19。答:16面试官:错了,是19。答:18面试官:不,是19。答:19本题就请你模仿这个“机器学习程序”的行为。

黑不拉几的小白兔和你一起努力 2020

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

2023 PTA天梯赛补题(L1 & L2)

输入输出题输入输出题k == n 和 k == m 分别输出,题目怎么说就怎么做判断一下c 等于a + b还是a*b或者都不是,分别按要求输出针对每一群玩游戏的宝宝,枚举判断一下就好了写的有点烦,基本就是一步一步模拟,思路在注释里写了枚举分配方案,代码中a代表女生寝室的数量,b为男生寝室的数量,如果存在寝室人数差值小于之前的最小值,则更新a,b,最后输出a和b即可模拟,要注意这里是NA是SB的整数倍,写的时候要小心,容易看错。

Sunny不要停的博客 3646

2025年北京邮电大学计算机考研复试机试真题

2025年北京邮电大学计算机考研复试机试真题

pgcode 487

PTA题解 --- 剪切粘贴(C语言)

此代码首先定义了一个原始字符串和一个剪贴板字符串来存储剪切的内容。对于每次操作,首先执行剪切操作,然后根据提供的前后字符串确定粘贴位置,进行粘贴操作。最后输出编辑后的字符串。注意,代码考虑了当找不到匹配的粘贴位置时,直接在字符串末尾进行粘贴的情况。:对于每次操作,先进行剪切,然后根据给定的前后字符串确定粘贴位置,如果找不到精确匹配的位置,就将内容粘贴在字符串末尾。:根据输入的次数,循环读取每次操作的详细信息,包括剪切的起始和结束位置,以及粘贴的前后字符串。:最后输出操作完成后的字符串。

退役复学在校大学生,目光所至,皆为华夏 2217

L1-6 剪切粘贴

剪切:给定需操作的起始位置和结束位置,将当前字符串中起始位置到结束位置部分的字符串放入剪贴板中,并删除当前字符串对应位置的内容。例如,当前字符串为 abcdefg,起始位置为 3,结束位置为 5,则剪贴操作后, 剪贴板内容为 cde,操作后字符串变为 abfg。接下来的 N 行,每行是两个数字和两个长度不大于 5 的不包含空格的非空字符串,前两个数字表示需要剪切的位置,后两个字符串表示插入位置前和后的字符串,用一个空格隔开。当时没做出这个题来,我是真*******************

m0_65204357的博客 383

PTA L1-094 剪切粘贴(2023 天梯赛)

【代码】PTA L1-094 剪切粘贴(2023 天梯赛)

m0_72993980的博客 1962

C++:PTA L1-094 剪切粘贴

L1-094剪切粘贴:使用计算机进行文本编辑时常见的功能是剪切功能(快捷键:Ctrl+X)。工具需要完成一系列剪切后粘贴的操作,每次操作分为两步:剪切:给定需操作的起始位置和结束位置,将当前字符串中起始位置到结束位置部分的字符串放入剪贴板中,并删除当前字符串对应位置的内容。例如,当前字符串为 abcdefg,起始位置为3,结束位置为5,则剪贴操作后,剪贴板内容为 cde,操作后字符串变为 abfg。字符串位置从1开始编号。 粘贴:给定插入位置的前后字符串。。。。。。

crescent_yue的博客 1177

L1-094 剪切粘贴(PTA)

接下来的 N 行,每行是两个数字和两个长度不大于 5 的不包含空格的非空字符串,前两个数字表示需要剪切的位置,后两个字符串表示插入位置前和后的字符串,用一个空格隔开。如果有多个可插入的位置,选择最靠近当前操作字符串开头的一个。输入第一行是一个长度小于等于 200 的字符串 S,表示原始字符串。请实现一个简单的具有剪切和粘贴功能的文本编辑工具。第二行是一个正整数 N (1≤N≤100),表示要进行的操作次数。输出一行,表示操作后的字符串。剪切的位置保证总是合法的。

m0_73841621的博客 994
上一篇: 【PTA数据结构 | C语言版】字符串匹配算法比较
下一篇: 【PTA数据结构 | C语言版】吃火锅
秋说
秋说 优质创作者: 编程框架、信息安全技术领域 优质创作者: 编程框架、信息安全技术领域
博客等级 码龄4年 3万+粉丝 1906原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋说

感谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值