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

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;
}
 


http://www.mrgr.cn/news/27996.html

相关文章:

  • 安全见闻1-5
  • LM2 : A Simple Society of Language Models Solves Complex Reasoning
  • ubuntu20.04 colmap 安装2024.11最新
  • C语言指针初步(1)
  • 【ARM Coresight OpenOCD 系列 5 -- arp_examine 使用介绍】
  • Vite初始化Vue3+Typescrpt项目
  • 电子电气架构---智能汽车应该是怎么样的架构?
  • [C++]类和对象(上)
  • Java接口的艺术:探索接口特性与面向接口编程
  • Linux 基本使用和 web 程序部署 ( 8000 字 Linux 入门 )
  • JVM JMM 专题篇 ( 12000 字详解 )
  • 基于SSM的在线家教管理系统(含源码+sql+视频导入教程+文档+PPT)
  • WPF颜色(SolidColorBrush)和Win32颜色(COLOREF)互转的方法
  • 详解QT元对象系统用法
  • 「漏洞复现」用友U8 Cloud AddTaskDataRightAction SQL注入漏洞
  • 衡石分析平台使用手册--替换衡石 metadb
  • Oracle(128)如何使用闪回版本查询(Flashback Versions Query)?
  • python selenium网页操作
  • SOMEIP_ETS_110: SD_Do_not_specify_IPv4_Adress
  • 寄存器的位数据调测方法(摩尔信使MThings)
  • Mysql练习3——基本的SELECT语句
  • 贪吃蛇项目
  • 一文了解什么是TTP — 技术、战术与程序
  • 二分算法——优选算法
  • linux进程优先级
  • 多态(下)【C++】