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

定义函数合并字符串—超详细讲解

【问题描述】
编写一个函数void  str_bin(char str1[ ], char str2[ ]), str1、str2是两个有序字符串(其中字符按ASCII码从小到大排序),将str2合并到字符串str1中,要求合并后的字符串仍是有序的,允许字符重复。在main函数中测试该函数:从键盘输入两个有序字符串,然后调用该函数,最后输出合并后的结果。
【输入形式】
分行从键盘输入两个有序字符串(不超过100个字符)
【输出形式】
输出合并后的有序字符串
【输入样例】

aceg
bdfh

【输出样例】

abcdefgh

【样例说明】
输入两个有序字符串aceg和bdfh,输出合并后的有序字符串abcdefgh

 

#include <iostream>
#include <cstring>
using namespace std;//函数声明:str_bin函数用于将两个有序字符串进行合并
//str1和str2是两个输入的字符数组,代表要合并的两个有序字符串
//这里要求字符串中的字符按ASCII码从小到大排序
//合并后的字符串将存放在str1中,并且仍然保持有序,允许字符重复
void str_bin(char str1[], char str2[]);int main()
{//定义字符数组str1,用于存储输入的第一个字符串//数组大小为100,可容纳最多99个字符(因为还需要一个位置存放字符串结束符'\0')char str1[100];//定义字符数组str2,用于存储输入的第二个字符串//数组大小同样为100,可容纳最多99个字符及字符串结束符'\0'char str2[100];//使用cin.getline函数从键盘读取一行输入,并将其存储到str1数组中//该函数会读取输入流中的字符,直到遇到换行符'\n'为止,但换行符不会被存储到str1数组中//最多读取100个字符(包括空格等所有字符),如果输入的字符数超过100,超出部分将被丢弃cin.getline(str1, 100);//再次使用cin.getline函数从键盘读取另一行输入,并将其存储到str2数组中//同样最多读取100个字符,读取到换行符为止,换行符不存储,超出部分丢弃cin.getline(str2, 100);//调用str_bin函数,将已经读取到的两个字符串str1和str2作为参数传递进去//在str_bin函数内部,将会把str2合并到str1中,使str1成为合并后的有序字符串str_bin(str1, str2);//使用cout输出合并后的str1字符串//输出完毕后,再输出一个换行符'\n',使输出结果在控制台显示更加清晰美观cout << str1 << "\n";return 0;
}//str_bin函数的具体实现部分
void str_bin(char str1[], char str2[])
{//计算str1字符串的长度,这里使用strlen函数来获取//strlen函数会从str1指向的起始位置开始,逐个字符计数,直到遇到字符串结束符'\0'为止//它返回的长度值是不包含字符串结束符'\0'的字符个数int len1 = strlen(str1);//同样使用strlen函数计算str2字符串的长度int len2 = strlen(str2);//初始化三个整型变量i、j、k,它们将作为后续循环操作中对str1、str2和临时数组temp的索引//i用于指向str1中的当前字符位置//j用于指向str2中的当前字符位置//k用于指向临时数组temp中的当前存储位置int i = 0, j = 0, k = 0;//定义一个临时字符数组temp,用于暂存合并过程中的字符//数组大小设置为200,是考虑到合并后的字符串长度可能会比str1和str2单独的长度之和还要长//但在实际情况中,如果对输入字符串长度有严格限制,也可以根据具体情况设置更合适的大小char temp[200];//以下是一个循环结构,用于比较str1和str2中的字符,并将较小的字符依次放入临时数组temp中//只要str1和str2中都还有未处理的字符(即i < len1 且 j < len2),循环就会继续执行while (i < len1 && j < len2){//如果str1中当前位置(索引为i)的字符的ASCII码值小于str2中当前位置(索引为j)的字符的ASCII码值if (str1[i] < str2[j])//将str1中当前位置的字符放入临时数组temp的当前位置(索引为k)temp[k++] = str1[i++];else//否则,如果str2中当前位置字符的ASCII码值小于或等于str1中当前位置字符的ASCII码值//将str2中当前位置的字符放入临时数组temp的当前位置(索引为k)temp[k++] = str2[j++];}//当str1中还有剩余字符(即i < len1),而str2中的字符已经全部处理完毕(j >= len2)时//以下循环会将str1中剩余的字符依次放入临时数组temp中while (i < len1)temp[k++] = str1[i++];//当str2中还有剩余字符(即j < len2),而str1中的字符已经全部处理完毕(i >= len1)时//以下循环会将str2中剩余的字符依次放入临时数组temp中while (j < len2)temp[k++] = str2[j++];//初始化一个整型变量m,用于将临时数组temp中的合并后的字符串逐个字符地复制回str1数组中int m = 0;//以下循环会将临时数组temp中的字符,按照顺序逐个复制到str1数组中//从索引为0的位置开始,直到将临时数组temp中所有合并后的字符都复制完毕while (m < k){str1[m] = temp[m];m++;}//在将临时数组temp中的字符全部复制到str1数组后,需要在str1数组的末尾添加字符串结束符'\0'//这样才能确保str1是一个完整的、符合C++字符串格式要求的字符串str1[m] = '\0';
}

相关文章:

定义函数合并字符串—超详细讲解

【问题描述】 编写一个函数void str_bin(char str1[ ], char str2[ ])&#xff0c; str1、str2是两个有序字符串&#xff08;其中字符按ASCII码从小到大排序&#xff09;&#xff0c;将str2合并到字符串str1中&#xff0c;要求合并后的字符串仍是有序的&#xff0c;允许字符重…...

实现 vue3 正整数输入框组件

1.实现代码 components/InputInteger.vue <!-- 正整数输入框 --> <template><el-input v-model"_value" input"onInput" maxlength"9" clearable /> </template><script lang"ts" setup> import { ref …...

Leetcode - 周赛425

目录 一&#xff0c;3364. 最小正和子数组 二&#xff0c; 3365. 重排子字符串以形成目标字符串 三&#xff0c;3366. 最小数组和 四&#xff0c;3367. 移除边之后的权重最大和 一&#xff0c;3364. 最小正和子数组 本题可以直接暴力枚举&#xff0c;代码如下&#xff1a; …...

c++(斗罗大陆2)

我把魂力等级更新到了31级 #include<iostream> #include<conio.h> #include<windows.h> #include<stdlib.h> #include<stdio.h> #include<time.h> #include<string.h> using namespace std; int qs10; int xthl0;//先…...

redis常见数据类型

Redis是一个开源的、内存中的数据结构存储系统&#xff0c;它可以用作数据库、缓存和消息代理&#xff0c;支持多种数据类型。 一、数据类型介绍 String&#xff08;字符串&#xff09; Redis中最基本的数据类型。可以存储任何类型的数据&#xff0c;包括字符串、数字和二进制…...

MySQL - 性能优化

使用 Explain 进行分析 Explain 用来分析 SELECT 查询语句&#xff0c;开发人员可以通过分析 Explain 结果来优化查询语句。 比较重要的字段有: select_type : 查询类型&#xff0c;有简单查询、联合查询、子查询等 key : 使用的索引 rows : 扫描的行数 type &#xff1a;…...

Linux进程概念-详细版(一)

目录 进程概念 描述进程-PCB task_struct-PCB的一种 task_struct内容分类 查看进程 通过系统目录查看 通过ps命令查看 通过系统调用获取进程的PID和PPID 通过系统调用创建进程 fork的认识 使用if进行分流 最后的总结 Linux进程状态 运行状态-R 浅度睡眠状态-S 深度睡…...

K8S网络系列--Flannel网络下UDP、VXLAN模式的通信流程机制分析

文章目录 前言一、了解overlay、underlay容器网络二、网络通信1.分类2.网络虚拟设备对2.1、什么是网络虚拟设备对veth pair?2.2、如何查看容器的网卡与主机的哪个veth设备对是成对的关系? 3、vxlan和vtep3.1、vtep3.2、vxlan相关概念 三、Flannel网络模式剖析0、flannel的作用…...

ThreadLocal的设计思考

问题的提出 在Java多线程中&#xff0c;共享变量的读写非常容易出现不可预测的行为&#xff0c;因此对共享变量的访问控制非常重要。因此在多线程编程时&#xff0c;为了保证线程安全&#xff0c;需要进行额外的同步措施。比如典型的操作就是加锁。除了加锁外&#xff0c;另一…...

shell脚本练习(2)

1. 使用case实现成绩优良差的判断 2. for创建20用户 用户前缀由用户输入 用户初始密码由用户输入 例如&#xff1a;test01,test10 3. for ping测试指网段的主机 网段由用户输入&#xff0c;例如用户输入192.168.2 &#xff0c;则ping 192.168.2.10 --- 192.168.2.2…...

通讯专题4.1——CAN通信之计算机网络与现场总线

从通讯专题4开始&#xff0c;来学习CAN总线的内容。 为了更好的学习CAN&#xff0c;先从计算机网络与现场总线开始了解。 1 计算机网络体系的结构 在我们生活当中&#xff0c;有许多的网络&#xff0c;如交通网&#xff08;铁路、公路等&#xff09;、通信网&#xff08;电信、…...

Harmony NEXT-越过相机读写权限上传图片至项目云存储中

问题成因 在制作用户注册登录界面时想要实现用户头像上传共能&#xff0c;查询API文档&#xff0c;发现有picker和PhotoAccessHelper两个包可以选择使用&#xff0c;但是在使用PhotoAccessHelper包拉起相册并读入所选的照片后将该照片传入云存储中产生报错&#xff0c;需要相册…...

MATLAB基础应用精讲-【数模应用】Retinex图像去雾算法(附MATLAB和python代码实现)

目录 前言 算法原理 图像去雾 数学模型 算法步骤 算法拓展 多尺度Retinex (MSR) 算法 MSR算法的实现细节 McCann Retinex 算法 McCann99 Retinex算法 基于暗通道先验的图像去雾算法 暴力解法——直方图均衡化去雾 基于Retinex理论的图像去雾 基于暗通道先验的单…...

点击A组件跳转到B页面的tab的某一列

1、使用vuex存储点击的数据&#xff1b; 点击A组件里面的button按钮&#xff1a; <div><button click"banli(first)">已办理</button><button click"banli(second)">未办理</button><button click"banli(third)&quo…...

HarmonyOS xml转换JavaScript 常用的几个方法

HarmonyOS 使用 xml转换JavaScript 的好处 易用性&#xff1a; 提供了简洁的API接口&#xff0c;使得XML到JavaScript对象的转换变得简单直接。转换选项的灵活性允许开发者根据实际需求自定义转换结果。 高效性&#xff1a; HarmonyOS对底层运行时环境进行了优化&#xff0c;使…...

Linux笔记---进程:进程等待

1. 进程等待的概念 进程等待是指父进程通过系统调用wait或waitpid来对子进程进行状态检测与回收的功能。 当子进程退出时&#xff0c;如果父进程不读取子进程的退出状态&#xff0c;子进程就会成为僵尸进程&#xff0c;造成内存泄漏的问题。因此&#xff0c;父进程需要调用wa…...

【Linux】匿名管道通信场景——进程池

&#x1f525; 个人主页&#xff1a;大耳朵土土垚 &#x1f525; 所属专栏&#xff1a;Linux系统编程 这里将会不定期更新有关Linux的内容&#xff0c;欢迎大家点赞&#xff0c;收藏&#xff0c;评论&#x1f973;&#x1f973;&#x1f389;&#x1f389;&#x1f389; 文章目…...

算法妙妙屋-------1.递归的深邃回响:全排列的奇妙组合

全排列的简要总结 全排列&#xff08;Permutation&#xff09;是数学中一个经典的问题&#xff0c;指的是从一组元素中&#xff0c;将所有元素按任意顺序排列形成的所有可能序列。 特点 输入条件&#xff1a; 给定一组互异的元素&#xff08;通常为数组或字符串&#xff09;。…...

【maven-6】Maven 生命周期相关命令演示

Maven 是一个广泛使用的项目管理工具&#xff0c;尤其在 Java 项目中。它通过定义一系列的生命周期阶段&#xff08;Phases&#xff09;来管理项目的构建过程。理解这些生命周期阶段及其相关命令&#xff0c;对于高效地构建和管理项目至关重要。本文将通过实际演示&#xff0c;…...

黑马程序员Java笔记整理(day06)

1.继承的特点 2.继承的权限 3. 4.小结 5.方法重写 6.子类构造器 7.兄弟构造器 8.多态 9.小结...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...