C++学习笔记(26)
七 、显示字符串中的字符
从界面上输入一个字符串(C 风格),把字符串中的每个字符显示出来,如果输入的是"abc",要求:
1)正序显示:a b c
2)逆序显示:c b a
求字符串的长度可以利用上一题的成果,也可以直接用 strlen()函数,关注性能的细节。
示例:
#include <iostream>
using namespace std;
// 采用 while 循环,用指针表示法和临时变量计数。
int length(char* str)
{
int len = 0;
char* ptr = str; // 指向字符串的开始。
while (*ptr++) len++;
return len;
}
int main()
{
// 从界面上输入一个字符串(C 风格),把字符串中的每个字符显示出来,正序和逆序。
char str[31];
memset(str, 0, sizeof(str)); // 初始化是个好习惯。
cout << "请输入一个字符串:"; cin >> str;
// 正序显示
//for (int ii = 0; ii < length(str); ii++) // 循环 10000 次。
// cout << str[ii] << " ";
//for (int ii = 0, len=length(str); ii < len; ii++) // 循环 200 次。
// cout << str[ii] << " ";
for (char *pos=str;*pos;pos++) // 循环 100 次。
cout << *pos << " ";
cout << endl;
// 逆序显示
for (int ii = length(str)-1; ii >= 0; ii--) // 循环 200 次。
cout << str[ii] << " ";
cout << endl;
}
八、字符串反转
从界面上输入一个 C 风格的字符串,如果输入的是"abc",反转后"cba"。
要求:
1)反转的结果存放在另一字符串中。
2)原地反转,不借助其它的字符串。
#include <iostream>
using namespace std;
int main()
{
char str[31];
memset(str, 0, sizeof(str)); // 初始化是个好习惯。
cout << "请输入一个字符串:"; cin >> str;
// 1)反转的结果存放在另一字符串中。
char str1[31]; // 反转后的字符串。
memset(str1, 0, sizeof(str1));
int jj = 0; // 反转后的字符串的下标。
for (int ii = strlen(str) - 1; ii >= 0; ii--)
str1[jj++] = str[ii];
cout << "反转后:" << str1 << endl;
// 2)原地反转,不借助其它的字符串。
//str a b c d e f
for (int ii = 0,len= strlen(str) ; ii < len / 2; ii++) // 如何确定循环的边界?用笨方法举例验
证,需要耐心。
{
// 交换数组中两个元素的值。str[ii]、str[len-1-ii]
char tmp = str[ii];
str[ii] = str[len - 1 - ii];
str[len - 1 - ii] = tmp;
}
cout << "反转后:" << str << endl;
// 测试用例 strlen(str) strlen(str)/2 ii
// a 1 1/2=0 不进
入循环
// ab 2 2/2=1 0 执
行一次循环
// abc 3 3/2=1 0 执
行一次循环
// abcd 4 4/2=2 0、1 执
行两次循环
// abcde 5 5/2=2 0、1 执
行两次循环
// abcdef 6 6/2=3 0、1、2
执行三次循环
}
九、二维数组的应用
有两个任务:
1)超女有 3 个小组,每组有 4 名选手,请提供一个界面,输入每个超女的体重,然后,计算出每组
的超女的平均体重和全部超女的平均体重。
2)从界面上输出三个超女的姓名,存放在 C 风格的字符串数组中,然后,分别向她们表白。
示例一:
#include <iostream>
using namespace std;
int main()
{
// 超女有 3 个小组,每组有 4 名选手,请提供一个界面,输入每个超女的体重
// 然后,计算出每组的超女的平均体重和全部超女的平均体重。
double weights[3][4]; // 存放每个超女的体重。
memset(weights, 0, sizeof(weights)); // 初始化数组。
for (int ii = 0; ii < 3; ii++)
{
for (int jj = 0; jj < 4; jj++)
{
cout << "请输入第" << ii + 1 << "组,第" << jj + 1 << "名超女的体重:"; cin >>
weights[ii][jj];
}
}
double total = 0; // 全部超女的体重之和。
for (int ii = 0; ii < 3; ii++)
{
double sum = 0; // 一组内四名超女的体重之和。
for (int jj = 0; jj < 4; jj++)
{
sum = sum + weights[ii][jj]; // 把组内超女的体重累加。
}
cout << "第" << ii + 1 << "组超女的平均体重是:" << sum / 4 << endl;
total = total + sum; // 把全部超女的体重累加。
}
cout << "全总超女的平均体重是:" << total / 12 << endl;
}
示例二:
#include <iostream>
using namespace std;
int main()
{
// 从界面上输出三个超女的姓名,存放在 C 风格的字符串数组中,然后,分别向她们表白。
char name[3][11]; // 存放三个超女的姓名。
memset(name, 0, sizeof(name));
for (int ii = 0; ii < 3; ii++)
{
cout << "请输入第" << ii + 1 << "超女的姓名:"; cin >> name[ii];
}
for (int ii = 0; ii < 3; ii++)
cout << "亲爱的 " << name[ii] << ",我是一只傻傻鸟。\n";
}
十、把整数转换成字符串
从界面上输入一个整数,把它转换为十进制和二进制的 C 风格的字符串。
4358
4358%10=8 把 8 转换成字符
4358/10=435
435
435%10=5 把 5 转换成字符
435/10=43
43
43%10=3 把 3 转换成字符
43/10=4
4
4%10=4 把 4 转换成字符
4/10=0
结束循环
示例:
#include <iostream>
using namespace std;
int main()
{
// 从界面上输入一个整数,把它转换为十进制和二进制的 C 风格的字符串。
int value = 0;
cout << "请输入整数:"; cin >> value;
int radix = 0;
cout << "请选择(2-二进制;10-十进制):"; cin >> radix;
char result[20];
memset(result, 0, sizeof(result)); // 一定要初始化,否则 bug
int ii = 0; // 用于 result 字符串的计数器。
// 把整数转换为字符串。4358
while (value > 0)
{
result[ii++] = value % radix + '0'; // 取余数,并转换成字符。
value = value / radix; // 商。
}
// 把字符串 result 反转。
for (int ii = 0, len = strlen(result); ii < len / 2; ii++) // 如何确定循环的边界?用笨方法举
例验证,需要耐心。
{
// 交换数组中两个元素的值。str[ii]、str[len-1-ii]
char tmp = result[ii];
result[ii] = result[len - 1 - ii];
result[len - 1 - ii] = tmp;
}
cout << "result=" << result << endl;
}
相关文章:

C++学习笔记(26)
七 、显示字符串中的字符 从界面上输入一个字符串(C 风格),把字符串中的每个字符显示出来,如果输入的是"abc",要求: 1)正序显示:a b c 2)逆序显示:…...

安卓14剖析SystemUI的ShadeLogger/LogBuffer日志动态控制输出dumpsy机制
背景: 看SystemUI的锁屏相关代码时候发现SystemUI有一个日志打印相关的方法调用,相比于常规的Log.i直接可以logcat查看方式还是比较新颖。 具体日志打印代码如下: 下面就来介绍一下这个ShadeLogger到底是如何打印的。 分析源码࿱…...

华为CNA VRM搭建(使用vmware worfstartion搭建)
创建虚拟机: 自定义→高级 选择硬件兼容性:默认安装版本,如果未来想要将此虚拟机安装到其他电脑,其他电脑版本过低,此时可以向下兼容,这里我们默认版本 稍后安装操作系统: CNA采用Euler OS系统…...

【WRF工具】WRF Domain Wizard第二期:使用教程
【WRF工具】WRF Domain Wizard第二期:使用教程 WRF Domain Wizard使用教程1)Wizard Option:新建区域/打开已有区域2)New Domain:新建区域3)Horizontal Editor:水平编辑器4)Namelist.…...

智能摄像头MP4格式化恢复方法
如果说生孩子扎堆,那很显然最近智能摄像头多碎片的恢复也扎堆了,这次恢复的是一个不知名的小品牌。其采用了mp4视频文件方案,不过这个案例的特殊之处在于其感染了病毒且不只一次,我们来看看这个小品牌的智能恢复头格式化的恢复方法…...

【C++】unordered系列
前言: 在C11及以后的标准中,unordered容器是标准模板库(STL)的一部分,提供了高效的数据结构选项,适用于需要快速查找和插入操作的场景。 unordered通常与关联容器一起使用,特别是unordered_map和…...

Cobbler 搭建方法
统信服务器操作系统行业版V20-1000c【Cobbler 搭建】手册 统信服务器操作系统行业版 V20版本上Cobbler 搭建方法 文章目录 功能概述一、使用范围二、cobbler工作流程1. Server 端2. Client 端三、 环境准备1. 测试环境告知,以提供配置时参考:2. 关闭防火墙、selinux:3. 注意…...

从边缘到云端,合宙DTURTU打造无缝物联网解决方案
随着物联网(IoT)技术的飞速发展,万物互联的时代已经到来, 如何高效、稳定地连接边缘设备与云端平台,实现数据的实时采集、传输与处理,成为了推动物联网应用落地的关键。 DTU(数据传输单元&…...

【Android Studio】API 29(即Android 10)或更高版本,在程序启动时检查相机权限,并在未获取该权限时请求它
文章目录 1. 在AndroidManifest.xml文件中,声明相机权限:2. 在你的Activity中(例如MainActivity)测试 1. 在AndroidManifest.xml文件中,声明相机权限: <uses-feature android:name"android.hardwar…...

【裸机装机系列】3.kali(ubuntu)-更新sources.list并重启
当装机并重启计算机后,暂时还不能使用,需要更新源并下载软件 1、更新软件源 1> 切换root使用命令 sudo su root 进入界面后,是你自己的账户,不是root账户,这里的操作是需要进入root账户进行操作的,否…...

text2sql(NL2Sql)综述《The Dawn of Natural Language to SQL: Are We Fully Ready?》
《The Dawn of Natural Language to SQL: Are We Fully Ready?》(github)出自2024年6月的NL2SQL(Natural language to SQL )综述论文。这篇论文尝试回答如下三个问题: 问题1:NL2SQL的现状是什么?(Q1:Where Are we Now?) 论文图1总结了近20年NL2SQL方法…...

【滑动窗口】一题讲透滑动窗口!
🚀个人主页:一颗小谷粒 🚀所属专栏:力扣刷题 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 1.1 题目要求 1.2 算法图解分析 1.3 代码实现 1.4 时间复杂度分析 1.5 算法思想总结 1.1 题目要…...

嵌入式通信原理—SPI总线通信原理与应用
文章目录 SPI 简介基本原理工作模式特点 SPI寻址方式1. 片选(Chip Select, CS)2. 多从设备通信3. 菊花链(Daisy-Chain)模式4. 地址寄存器(应用层) SPI通信过程时钟信号生成(SCLK)数据…...

基于web的 BBS论坛管理系统设计与实现
博主介绍:专注于Java .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用 感兴趣的可以…...

【Scala入门学习】Scala的方法和函数
1. 方法 在scala中的操作符都被当成方法存在,比如说、-、*、/ 12就是1.(2)的调用, 2.0 是doule类型,强调用Int类型的写法为1.(2:Int) 1.1 方法的声明和使用 定义方法的语法: def 方法名([变量:变量类型ÿ…...

【JVM】概述
前言 Java的技术体系主要由支撑Java程序运行的虚拟机、提供各开发领域接口支持的Java类库、Java编程语言及许许多多的第三方Java框架(如Spring、MyBatis等)构成。在国内,有关Java类库API、Java语言语法及第三方框架的技术资料和书籍非常丰富&…...

鸿蒙开发笔记_电商严选02_登录页面跳转到我的页面、并传值
鸿蒙开发笔记整理,方便以后查阅! 由于上班较忙,只能抽空闲暇时间,快速整理更新中。。。 登录页面跳转到我的页面、并传值 效果图 我的设置页面 /*** 我的设置页面*/ import CommonConstants from ./CommonConstants import ItemData from ./ItemData import DataModel fr…...

clip论文阅读(Learning Transferable Visual Models From Natural Language Supervision)
目录 摘要训练pre-train model的过程将pre-train model应用于下游任务应用(待更新) 论文/项目地址:https://github.com/OpenAI/CLIP 提供了clip的pre-trained model的权重,也可安装使用pre-trained model 摘要 使用标签标注的图…...

用于图像分割的协 SMA Transformer:同多注意力转换器 !
在医学图像分割中,基于注意力机制和卷积神经网络的Transformer在提高性能方面起到了重要作用。然而,早期的模型往往在分割小而形状不规则的肿瘤时表现不佳。 为此,作者提出了一种基于SMA架构(Synergistic Multi-Attention…...

lodash中_.difference如何过滤数组
_.difference(array, [values]) 作用: 创建一个具有唯一array值的数组,每个值不包含在其他给定的数组中。(注:即创建一个新数组,这个数组中的值,为第一个数字(array 参数)排除了给…...

关于C# 数据库访问 转为 C++ CLI 数据库访问
Db_.cs 与 csharp_db.h功能是一样的。 Db_.cs /**************************************************************************************** 创建时间 :2006年12月19日文件名 :Db_.cs功能 :数据库…...

百度移动刷下拉词工具:快速出下拉词的技术分析
都2024年了,你还在做SEO百度下拉?答案当然是肯定的,虽然百度的搜索流量不如从前,但移动端的流量依然是巨大的!除了百度SEO快排以外,下拉也是一大流量入口,尤其是在移动端搜索的流量越来越大时&a…...

学习笔记-Golang中的Context
文章目录 1、什么是Context2、Context的作用3、Context的解析3.1、Context的源码解析3.2、 context包中实现context接口的四种结构体类型3.2.1、emptyCtx3.2.2、cancelCtx3.2.3、timerCtx3.2.4、valueCtx 4、总结 1、什么是Context Context是 Go 语言中的一个标准库࿰…...

ArrayList 源码解析
ArrayList是Java集合框架中的一个动态数组实现,提供了可变大小的数组功能。它继承自AbstractList并实现了List接口,是顺序容器,即元素存放的数据与放进去的顺序相同,允许放入null元素,底层通过数组实现。除该类未实现同…...

libgit2编译
1. 源码下载 libgit2源码下载 2. 编译要求 CMake下载 CMake教程 3. 编译步骤 Prerequisites Make sure CMake on your %PATH% Build Create a build directory beneath the libgit2 source directory, and change into it: mkdir build && cd buildCreate the …...

mac新手入门(快捷键)
系统常用快捷键 基本操作 Command-Z 撤销Command-X 剪切 Command-C 拷贝(Copy) Option Shift Command V 纯文本拷贝 Command-V 粘贴 Command-A 全选(All)Command-S 保存(Save) Command-F 查找࿰…...

curl 的使用详解
curl 是一个非常强大的命令行工具,用于通过各种协议(如 HTTP、HTTPS、FTP 等)传输数据。它广泛应用于测试 API、下载文件、调试网络请求等。 下面是 curl 常用功能的详解及示例: 基本语法 curl [options] [URL]1. 基本请求 发起…...

从基础到进阶:利用EasyCVR安防视频汇聚平台实现高效视频监控系统的五步走
随着科技的飞速发展,视频监控技术在社会安全、企业管理、智慧城市构建等领域扮演着越来越重要的角色。一个高效智能的视频监控管理系统不仅能够提升监控效率,还能在预防犯罪、事故预警、数据分析等方面发挥巨大作用。 一、需求分析 在设计视频监控管理…...

CORS漏洞及其防御措施:保护Web应用免受攻击
1. 背景- 什么是CORS? 在当今互联网时代,Web 应用程序的架构日益复杂。一个后端服务可能对应一个前端,也可能与多个前端进行交互。跨站资源共享(CORS)机制在这种复杂的架构中起着关键作用,但如果配置不当&…...

C语言自定义类型结构体(24)
文章目录 前言一、结构体类型的声明结构体回顾结构体的特殊声明结构体的自引用 二、结构体的内存对齐对齐规则为什么存在内存对齐?修改默认对齐数 三、结构体传参四、结构体实现位段什么是位段位段的内存分配位段的跨平台问题位段的应用位段使用的注意事项 总结 前言…...