作业介绍
一、字符型(char)
1. 核心定义
-
用于存储单个字符,字符常量需用单引号括起(如
'A'、'5'),区别于双引号括起的字符串。 -
错误示例:
"x"(双引号为字符串)、'xy'(单引号内只能有一个字符)、6.66(数值类型,非字符)。
2. 变量声明与定义
-
声明:
char 变量名;(如char name;) -
定义:
char 变量名 = 初始字符;(如char name = 'A';)
3. ASCII码规则
-
字符以ASCII码(0~127)存储,核心对应关系:
-
数字
0-9:ASCII码48-57 -
大写字母
A-Z:ASCII码65-90 -
小写字母
a-z:ASCII码97-122
-
-
常用转换公式:
-
大写字母转小写:
大写字母 + 32(如'A' + 32 = 'a') -
小写字母转大写:
小写字母 - 32(如'a' - 32 = 'A') -
数字转数字字符:
数字 + 48(如6 + 48 = '6') -
数字字符转数字:
数字字符 - 48(如'6' - 48 = 6)
-
4. 类型转换
-
隐式转换:char与int运算时自动提升为int(如
'A' + 32本质是65 + 32) -
强制转换:
(目标类型) 变量/表达式-
字符转ASCII码:
(int) 'a'(结果为97) -
ASCII码转字符:
(char) 97(结果为'a') -
数值类型转换:
(int) 1.2(结果为1)
-
二、字符数组
1. 声明与初始化
-
声明:
char 数组名[元素个数];(如char ch[5];) -
初始化:
char 数组名[长度] = {'字符1', '字符2', ...};(如char ch[5] = {'a', 'b', 'c', 'd', 'e'};),每个元素需带单引号。
2. 元素访问与遍历
-
下标规则:从0开始,最后一个元素下标为
数组长度-1,下标不能为负数或浮点数(避免越界)。 -
访问方式:
数组名[下标](如ch[0]获取第一个元素)。 -
遍历方式:通过循环逐个访问元素(如
for (int i = 0; i < 5; i++) cout << ch[i];)。
3. 输入与输出
-
输入:循环通过
cin >> 数组名[i]逐个录入元素。 -
输出:循环通过
cout << 数组名[i]逐个输出元素。
三、字符串(特殊字符数组)
1. 核心特性
-
字符串是以
'\0'(ASCII码0)结尾的字符数组,'\0'是字符串结束标志,不计入有效长度。 -
示例:
char ch[6] = "Hello";实际存储为'H','e','l','l','o','\0',需预留1个字节给'\0'。
2. 输入方式
| 输入场景 | 方法 | 注意事项 |
|---|---|---|
| 不带空格的字符串 | cin >> 字符数组名; |
自动忽略空格、回车,遇空格/回车停止输入 |
| 带空格的字符串 | cin.getline(数组名, 数组长度); |
需包含数组长度(最后一位留给'\0'),如cin.getline(ch,5)最多读4个字符 |
避免cin与getline连用 |
在cin后加getchar(); |
吸收cin残留的回车符,避免getline失效 |
3. 输出方式
- 直接输出数组名:
cout << 字符数组名;(自动识别'\0'并停止输出)。
4. 遍历与长度计算
-
遍历方式:
-
利用
'\0'终止:for (int i = 0; s[i] != '\0'; i++) -
先求长度再遍历:
int len = strlen(s); for (int i = 0; i < len; i++)
-
-
长度计算:
-
手动计数:循环统计
'\0'前的字符数。 -
函数调用:
strlen(字符串名)(需包含<cstring>头文件),返回有效字符数(不含'\0')。
-
四、字符串处理函数(需包含<cstring>头文件)
| 函数格式 | 功能描述 | 注意事项 |
|---|---|---|
strcat(串1, 串2) |
将串2连接到串1末尾,返回串1 | 串1需预留足够空间,无分隔符直接拼接 |
strcpy(串1, 串2) |
将串2复制到串1,覆盖串1原有内容,返回串1 | 串1空间需足够容纳串2,包含'\0' |
strcmp(串1, 串2) |
按字典序比较(逐位比ASCII码): - 串1>串2:返回正整数 - 串1=串2:返回0 - 串1<串2:返回负整数 |
长度长≠值大,逐位不同时立即返回结果 |
strlen(串) |
计算字符串有效长度(不含'\0') |
仅对以'\0'结尾的字符串有效 |
strlwr(串) |
将字符串中所有大写字母转为小写 | 仅修改字母,不改变其他字符 |
strupr(串) |
将字符串中所有小写字母转为大写 |
字典序比较规则
-
逐位比较字符ASCII码,首次不同即确定大小(如
"append" < "apple"); -
逐位相同则长度长的字符串更大(如
"app" < "apple"); -
所有字符相同则相等(如
"abc" == "abc")。
五、关键注意事项
-
字符串存储:数组长度需比有效字符数多1,预留
'\0'位置。 -
输入冲突:
cin与cin.getline()连用时,需用getchar()吸收回车符。 -
越界问题:字符数组/字符串的下标不能超出范围,避免内存污染。
-
函数依赖:字符串处理函数需包含
<cstring>头文件,且仅适用于字符数组(非C++string类)。
题目
- 状态
- 正在进行…
- 题目
- 9
- 开始时间
- 2026-7-1 0:00
- 截止时间
- 2036-7-9 23:59
- 可延期
- 24 小时