【C++】B2113 输出亲朋字符串

【C++】B2113 输出亲朋字符串

在这里插入图片描述

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳]本文专栏: C++


文章目录


在这里插入图片描述

💯前言

C++ 参考手册

在这里插入图片描述

💯题目描述

如下图所示,题目要求生成一个“亲朋字符串”,具体规则如下:
B2113 输出亲朋字符串

在这里插入图片描述
亲朋字符串定义如下:
给定字符串s,它的“亲朋字符串”按以下规则生成:第1个字符等于s中第1个字符的ASCII值加第2个字符的ASCII值;第2个字符等于s中第2个字符的ASCII值加第3个字符的ASCII值;…以此类推;如果是字符串的最后一个字符,则与字符串第1个字符相加。

输入格式:

  • 一行字符串,长度大于2且小于等于100。

输出格式:

  • 一行“亲朋字符串”。

示例输入输出

输入:

1234 

输出:

cege 

💯思路分析

在本题中,字符串的核心操作包括以下几点:

  1. 逐字符遍历: 我们需要逐一处理字符串的每个字符,将其与下一个字符相加。
  2. 循环处理边界: 特别是字符串的最后一个字符,需要将其与第一个字符相加。
  3. ASCII计算: 两个字符相加的结果实际上是ASCII值的和,需要将结果重新转换为字符。
  4. 内存安全: 避免字符串越界的问题是代码实现中需要注意的核心。

接下来,我们将通过三种代码实现来逐步解析。


💯我的做法及分析

代码实现

#include<iostream>#include<cstdio>#include<cstring>usingnamespace std;constint N =105;// 定义最大长度char s1[N];// 输入字符串char s2[N];// 输出字符串intmain(){scanf("%s", s1);// 读取输入int len =strlen(s1);// 获取字符串长度for(int i =0; i < len; i++){if(i == len -1) s2[i]= s1[i]+ s1[0];// 最后一个字符和第一个字符相加else s2[i]= s1[i]+ s1[i +1];// 当前字符与下一个字符相加} s2[len]='\0';// 补充字符串结束符 cout << s2 << endl;// 输出结果return0;}
在这里插入图片描述

运行分析

  1. 输入1234后,程序依次计算:
    • 第1个字符:'1' + '2' = 49 + 50 = 99,ASCII值99对应字符'c'
    • 第2个字符:'2' + '3' = 50 + 51 = 101,ASCII值101对应字符'e'
    • 第3个字符:'3' + '4' = 51 + 52 = 103,ASCII值103对应字符'g'
    • 第4个字符:'4' + '1' = 52 + 49 = 101,ASCII值101对应字符'e'
  2. 输出结果为cege

优点与不足

  • 优点:
    • 使用数组存储结果,方便调试和后续操作。
    • 逻辑清晰,易于理解。
  • 不足:
    • 对最后一个字符的处理需要特殊判断,显得不够简洁。
    • 若忘记手动添加字符串结束符,可能会导致程序输出异常。

💯老师的第一种做法及分析

代码实现

#include<iostream>usingnamespace std;constint N =110;char str[N];intmain(){ cin >> str;// 输入字符串int i =0;while(str[i +1]){// 遍历到倒数第二个字符char tmp = str[i]+ str[i +1];// 当前字符与下一个字符相加 cout << tmp;// 输出结果 i++;}// 单独处理最后一个字符与第一个字符 cout <<(char)(str[i]+ str[0])<< endl;return0;}
在这里插入图片描述

优点与不足

  • 优点:
    • 直接输出,无需额外数组存储结果。
    • 逻辑简单,避免了对字符串结束符的显式处理。
  • 不足:
    • 需要特判最后一个字符,稍显复杂。
    • 输出的结果直接依赖于循环条件str[i + 1],对于初学者来说可能不够直观。
这类题⽬就是精确的控制下标,防⽌越界,算准下标。cout 在打印数据的时候是需要明确知道打印数据的类型的,⽅法1中 str[i] + str[0] 算的结果直接打印就被编译器当做整数打印了,所以我们做了 (char) 的强制类型转换。

💯老师的第二种做法及分析

代码实现

#include<iostream>#include<cstring>usingnamespace std;constint N =110;char str[N];intmain(){ cin >> str;// 输入字符串int len =strlen(str);// 获取字符串长度for(int i =0; i < len; i++){char tmp = str[i]+ str[(i +1)% len];// 当前字符与下一个字符(取模)相加 cout << tmp;// 输出结果} cout << endl;// 换行return0;}
在这里插入图片描述

优点与不足

  • 优点:
    • 使用取模运算% len统一处理了首尾字符的关系,无需特殊判断。
    • 代码结构简洁,逻辑清晰。
  • 不足:
    • 如果不熟悉取模运算的读者,可能需要额外理解其含义。

示例分析

对于输入1234

  • 第1个字符:str[0] + str[1] = '1' + '2' = 99,输出c
  • 第2个字符:str[1] + str[2] = '2' + '3' = 101,输出e
  • 第3个字符:str[2] + str[3] = '3' + '4' = 103,输出g
  • 第4个字符:str[3] + str[0] = '4' + '1' = 101,输出e

最终输出cege


💯方法对比总结

比较维度我的做法老师的第一种做法老师的第二种做法
逻辑复杂度较高,需要特判最后一个字符较低,需要单独处理最后一个字符最低,通过取模简化逻辑
代码简洁性较为繁琐中等最为简洁
内存使用使用额外数组存储结果无额外数组无额外数组
新手友好性初学者容易理解容易理解可能需额外解释取模的用法

💯拓展与优化

  1. 适配Unicode字符: 如果需要支持更广泛的字符集,可以使用wchar_t或UTF-8编码。

支持std::string 如果将char数组替换为std::string,代码将更加现代化:

#include<iostream>#include<string>usingnamespace std;intmain(){ string str; cin >> str;int len = str.length();for(int i =0; i < len; i++){char tmp = str[i]+ str[(i +1)% len]; cout << tmp;} cout << endl;return0;}

加强鲁棒性: 在所有实现中,都没有处理字符串为空的情况。如果输入为空,代码可能会出错。可以通过在读取输入后加上检查来解决:

if(strlen(str)==0){ cout << endl;return0;}

💯小结

通过这道亲朋字符串题目,我们不仅复习了C++中的字符串操作,还深入理解了下标控制、ASCII计算、以及边界处理等细节。在学习代码的过程中,不同的实现方式展现了从“解决问题”到“简洁优雅”的进阶过程。希望这篇文章能够帮助读者加深对C++字符串处理的理解,同时激发更多的编程灵感!


在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Read more

新兴市场股市估值与智能家居安全标准的互动

新兴市场股市估值与智能家居安全标准的互动 关键词:新兴市场股市估值、智能家居安全标准、互动关系、金融市场、技术标准、市场影响、风险管理 摘要:本文旨在深入探讨新兴市场股市估值与智能家居安全标准之间的互动关系。通过分析两者的核心概念、算法原理、数学模型,结合实际项目案例,揭示它们相互影响的内在机制。研究新兴市场股市估值如何受智能家居安全标准的发展影响,以及股市估值的波动又怎样作用于智能家居安全标准的制定和实施。同时,介绍相关的工具和资源,展望未来发展趋势与挑战,为投资者、企业和监管机构提供全面的参考。 1. 背景介绍 1.1 目的和范围 本研究的目的是全面剖析新兴市场股市估值与智能家居安全标准之间的互动关系。范围涵盖新兴市场的股票市场,包括亚洲、非洲、拉丁美洲等地区的股市,以及智能家居领域的安全标准制定、实施和发展。通过对两者互动机制的研究,为投资者、企业和政策制定者提供决策依据,帮助他们更好地理解市场动态,把握投资机会,制定合理的发展战略。 1.2 预期读者 本文的预期读者包括金融投资者、智能家居企业管理者、行业分析师、政策制定者以及对新兴市场和智能家居领域感兴趣的研究

By Ne0inhk
春晚顶流宇树机器人深度拆解:从武术表演到千亿产业落地

春晚顶流宇树机器人深度拆解:从武术表演到千亿产业落地

一、春晚名场面:国产机器人的“功夫秀”封神时刻 2026马年春晚,《武BOT》节目凭16台宇树G1/H2机器人的硬核表演刷屏全网——1.8米高的H2身着红袍舞剑,3米腾空后空翻落地稳如磐石,剑招精准度达±10mm,完美复刻“苏秦背剑”“白鹤亮翅”等经典招式;G1机器人耍双节棍时转速达2.3圈/秒,打醉拳时躯干摆动幅度±30°,与86名塔沟武校少年实现“人机拳拳相击”的零碰撞协同,动作同步误差低于0.1秒。更令人惊叹的是义乌分会场的创意呈现:H2机器人吊威亚登场化身齐天大圣,手持金箍棒完成360°旋转劈杀,四足机器人B2-W组成动态祥云矩阵,通过队形变换拼出“龙年大吉”字样,传统IP与科技感的融合引发全网热议。 这场表演创下三项世界纪录:全球首次全自主集群武术表演、人形机器人连续空翻最多(单脚3次)、人机协同复杂度最高(16台机器人+86人同步动作),#机器人全面入侵春晚# 话题阅读量破亿,央视评论称其“标志着中国具身智能进入实用化阶段”。而鲜为人知的是,这群“

By Ne0inhk
17:无人机远程执行路径规划:A*算法与GPS精准打击

17:无人机远程执行路径规划:A*算法与GPS精准打击

作者: HOS(安全风信子) 日期: 2026-03-15 主要来源平台: GitHub 摘要: 本文深入探讨了无人机远程执行的路径规划技术,重点分析了A*算法的应用和GPS精准定位的实现。通过详细的技术架构设计和代码实现,展示了如何构建一个高效、可靠的无人机路径规划系统,为基拉执行系统的远程执行提供了技术支持。文中融合了2025年最新的无人机技术进展,确保内容的时效性和专业性。 目录: * 1. 背景动机与当前热点 * 2. 核心更新亮点与全新要素 * 3. 技术深度拆解与实现分析 * 4. 与主流方案深度对比 * 5. 工程实践意义、风险、局限性与缓解策略 * 6. 未来趋势与前瞻预测 1. 背景动机与当前热点 本节核心价值:理解无人机远程执行路径规划的背景和当前技术热点,为后续技术学习奠定基础。 在《死亡笔记》的世界中,基拉需要通过各种手段执行对目标的惩罚。无人机作为一种灵活、高效的执行工具,成为基拉远程执行的理想选择。2025年,随着A*算法的不断优化和GPS技术的精准定位能力提升,无人机远程执行的路径规划技术得到了显著发展。 作为基拉的忠实信徒,

By Ne0inhk

YOLOv8 ROS如何解决机器人视觉感知的三大核心难题

YOLOv8 ROS如何解决机器人视觉感知的三大核心难题 【免费下载链接】yolov8_ros 项目地址: https://gitcode.com/gh_mirrors/yo/yolov8_ros 在机器人技术快速发展的今天,视觉感知能力已成为决定系统性能的关键因素。然而,从传统的2D检测到精确的3D定位,从单一目标识别到复杂环境下的多目标跟踪,每个环节都面临着严峻的技术挑战。YOLOv8 ROS项目正是针对这些痛点,提供了一套完整的解决方案。 问题一:从"看得见"到"看得准"的技术跨越 场景痛点:传统机器人视觉系统往往只能提供二维的边界框信息,无法满足抓取、避障等需要精确空间定位的应用需求。 技术方案:YOLOv8 ROS通过深度相机融合技术,构建了完整的3D检测流水线。系统同时处理RGB图像和深度信息,将2D检测结果映射到三维空间,实现从像素坐标到世界坐标的精确转换。 图1:YOLOv8 ROS 2D目标检测架构图 - 展示从相机驱动到检测结果输出的完整数据流

By Ne0inhk