C++学习笔记(26)

news/2024/12/22 14:23:47/

七 、显示字符串中的字符
从界面上输入一个字符串(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;
}
 


http://www.ppmy.cn/news/1527146.html

相关文章

十五,Spring Boot 整合连接数据库(详细配置)

十五&#xff0c;Spring Boot 整合连接数据库(详细配置) 文章目录 十五&#xff0c;Spring Boot 整合连接数据库(详细配置)最后&#xff1a; JDBC HikariDataSource(Spring Boot内置的数据库) HikariDataSource: 目前市面上非常优秀的数据源&#xff0c;是 Spring Boot2默认数…

Go语言设计与实现 学习笔记 第七章 内存管理(1)

7.1 内存分配器 程序中的数据和变量都会被分配到程序所在的虚拟内存中&#xff0c;内存空间包含两个重要区域——栈区&#xff08;Stack&#xff09;和堆区&#xff08;Heap&#xff09;。函数调用的参数、返回值、局部变量大都会被分配到栈上&#xff0c;这部分内存会由编译器…

esp32-C2 对接火山引擎实现智能语音(一)

目录 一、火山引擎大模型简介 1)火山引擎网址: 2)首先需要先注册火山引擎账号 3)语音识别——即语音转为文本 一句话识别 流式语音识别 录音文件识别标准版 录音文件识别极速版 4)语音合成——文本转音频 一、火山引擎大模型简介 火山引擎的智能语音技术,基于业界先…

海康威视相机在QTcreate上的环境配置教程(qt+opencv+海康SDK)

环境配置教程 前言&#xff1a;环境配置&#xff1a;1.海康SDK2.opencv 参考导入文件 前言&#xff1a; 配置环境是编程的第一步&#xff0c;所以写这篇文章来指导环境的配置。如果已经配置好了&#xff0c;想在qt上使用海康的摄像头&#xff0c;可以参考这篇文章&#xff1a;…

Java集合接口List

ArrrayList集合 底层数据结构是数组 构造方法 ArrayList()无参构造&#xff0c;构造一个初始容量为10的空列表 ArrayList(int initialCapacity) 构建具有指定初始容量的空列表 ArrayList并不是一new就会创建初始容量为10的空列表&#xff0c;而是调用add方法后创建 A…

基于Spark 的零售交易数据挖掘分析与可视化

基于Spark 的零售交易数据挖掘分析与可视化 本文将带你通过 PySpark 进行电商数据的分析处理&#xff0c;并将结果保存为 JSON 文件&#xff0c;供前端展示。我们将从数据的读取、处理、分析到结果保存和网页展示&#xff0c;覆盖完整的数据流。项目结构如下&#xff1a; 1、…

Python | Leetcode Python题解之第414题第三大的数

题目&#xff1a; 题解&#xff1a; class Solution:def thirdMax(self, nums: List[int]) -> int:a, b, c None, None, Nonefor num in nums:if a is None or num > a:a, b, c num, a, belif a > num and (b is None or num > b):b, c num, belif b is not No…

java--JDBC-连接池----JDBC小总结

一.连接池 1.连接池概述 目的&#xff1a;为了解决建立数据库连接耗费资源和时间很多的问题&#xff0c;提高性能。 Connection对象在JDBC使用的时候就会去创建一个对象,使用结束以后就会将这个对象给销毁了(close).每次创建和销毁对象都是耗时操作.需要使用连接池对其进行优…