- C++
C++字符运算与条件表达式学习笔记
- 2025-8-21 13:40:43 @
C++字符运算与条件表达式学习笔记
一、ASCII码表基础
在计算机中,字符是以ASCII码的形式存储的,掌握ASCII码的规律是进行字符运算的基础。
重要字符的ASCII码值
- 小写字母
'a'
的ASCII码为97 - 大写字母
'A'
的ASCII码为65 - 数字字符
'0'
的ASCII码为48 - 空格符
' '
的ASCII码为32 - 换行符
'\n'
的ASCII码为10
ASCII码的规律
- 顺序编码特性:小写字符、大写字符以及数字字符都是顺序编码的
- 例如:
'B' = 'A' + 1 = 66
,'1' = '0' + 1 = 49
,'5' = '0' + 5 = 53
- 例如:
- 大小写转换规律:大写字符与小写字符之间的ASCII码差值固定为32
二、字符与整数运算
字符在参与运算时,会自动转换为其对应的ASCII码值(整数)进行计算,计算结果可以再转换回字符。
字符后移一位示例
题目:输入一个大写字符,输出它的后一个字符(保证输入不是'Z')
实现思路:利用字符顺序编码的特性,将字符加1即可得到后一个字符
#include <iostream>
using namespace std;
int main(){
char a,b;
cin>>a;
b = a + 1; // 赋值时会自动转换为字符类型
cout<<b;
return 0;
}
注意:直接输出
a+1
会得到ASCII码值(整数),需要通过赋值或强制类型转换得到字符结果
三、大小写转换
利用大小写字符ASCII码差值为32的规律,可以实现大小写转换。
1. 大写转小写
题目:输入一个大写字符,转换为小写字符输出
#include <iostream>
using namespace std;
int main(){
char a;
cin>>a;
cout<<char(a + 32); // 强制类型转换,将计算结果转为字符
return 0;
}
2. 小写转大写
题目:输入一个小写字符,转换为大写字符输出
#include <iostream>
using namespace std;
int main(){
char a;
cin>>a;
cout<<char(a - 32); // 减去32得到大写字符的ASCII码
return 0;
}
四、字符加密解密示例(SOS案例)
题目:输入三个大写字母,将每个字母往前数三个(ASCII码减3)进行解密
实现思路:对每个字符的ASCII码值减3,得到解密后的字符
#include <iostream>
using namespace std;
int main(){
char a,b,c;
cin>>a>>b>>c;
a = a - 3; // 每个字符ASCII码减3
b = b - 3;
c = c - 3;
cout<<a<<b<<c;
return 0;
}
示例:输入"VRV",输出"SOS"
- 'V' - 3 = 'S'(86 - 3 = 83)
- 'R' - 3 = 'O'(82 - 3 = 79)
- 'V' - 3 = 'S'(86 - 3 = 83)
五、条件表达式
条件表达式用于判断条件,返回值为1(真,true)或0(假,false)。
关系运算符
C++提供了六种关系运算符:
- 大于(
>
)、小于(<
) - 大于等于(
>=
)、小于等于(<=
) - 等于(
==
)、不等于(!=
)
示例:
a > 0
:判断a是否大于0a + 10 <= b
:判断a+10是否小于等于ba == b
:判断a和b是否相等(注意是两个等号)
六、实战案例:电子表格式化输出
题目:给出一个时间(单位:秒),按电子表格式xx:xx:xx
输出(不超过24小时)
解题步骤
- 计算小时数:总秒数 ÷ 3600(60秒×60分钟)
- 计算分钟数:(总秒数 ÷ 60) % 60
- 计算秒数:总秒数 % 60
- 格式化输出:确保每个部分都是两位数字,不足两位用0填充
代码实现
#include<iostream>
#include<iomanip> // 包含格式控制函数
using namespace std;
int main() {
int n; // 存储输入的总秒数
cin >> n;
int h = n / 60 / 60; // 计算小时
int m = n / 60 % 60; // 计算分钟
int s = n % 60; // 计算秒
// setw(2)设置宽度为2,setfill('0')设置填充字符为0
cout << setw(2) << setfill('0') << h
<< ":" << setw(2) << setfill('0') << m
<< ":" << setw(2) << setfill('0') << s;
return 0;
}
示例:输入3701秒
- 小时:3701 ÷ 3600 = 1
- 分钟:(3701 ÷ 60) % 60 = 61 % 60 = 1
- 秒:3701 % 60 = 41
- 输出:01:01:41
七、知识要点总结
- 字符变量的本质:字符变量本质上存储的是该字符对应的ASCII码值(整数)
- 隐式转换与强制转换:
- 隐式转换:字符参与运算时自动转换为整数
- 强制转换:使用
char()
将整数转换为对应的字符
- 大小写转换方法:
- 大写转小写:字符 + 32
- 小写转大写:字符 - 32
- 格式控制:使用
<iomanip>
头文件中的setw()
和setfill()
可以控制输出格式 - 条件表达式:使用关系运算符构建判断条件,返回布尔值(真或假)
0 条评论
目前还没有评论...