内容正文:
9.字符数组(讲义)-《C语言程序设计》专题复习讲练测
[考纲要求]
字符串与字符数组的区别,字符数组的定义、初始化、引用、输入输出以及字符串常用处理函数。
[课时安排]
4课时
[知识梳理]
1. 字符数组的定义:
字符数组是由一系列字符组成的数组,以 null 字符('\0')作为结束标志。
例如,char name[10]; 定义了一个能存储 9 个字符和一个 null 字符的字符数组。
2. 字符数组的元素引用:
字符数组的元素可以通过使用索引访问。
索引从 0 开始,例如 name[0] 表示字符数组中的第一个元素。
3. 字符数组的初始化:
字符数组的初始化与一维数组相同,字符数组的初始化也可以全部赋值或者部分赋值。
例如,char name[6] = "WeTab"; 实现了字符数组 name 的初始化,用字符串 "WeTab" 初始化了数组中的元素。
4. 字符数组的输入输出:
使用 %s 格式控制符来输入输出字符数组。
例如,printf("Name: %s
", name); 可以输出字符数组 name 中存储的字符串。
使用 scanf 函数读取用户输入并存储到字符数组中。
例如,scanf("%s", name); 可以将用户输入的字符串存储到字符数组 name 中。
5. 字符串处理函数:
C 语言提供了多个字符串处理函数,例如 strlen、strcpy、strcat、strcmp 等。
strlen 函数用于计算字符串的长度(不包括 null 字符)。
strcpy 函数用于将一个字符串复制到另一个字符串中。
strcat 函数用于将一个字符串连接到另一个字符串的末尾。
strcmp 函数用于比较两个字符串是否相等。
这些函数都定义在 string.h 头文件中,使用前需包含该头文件。
[真题练讲]
一、概念理解
1.(青岛市中等职业学校高三复课适应性卷)下面程序的运行结果是
#include <stdio.h>
int main() {
char c[6] = {'a', 'b', '\0', 'c', 'c', '\0'};
printf("%s", c);
return 0;
}
A. ab
B. ‘a’b
C. ab c
D. Abcc
答案:
A.ab
解析:
该程序定义了一个字符数组 c,长度为6,并初始化为 {'a', 'b', '\0', 'c', 'c', '\0'}。其中 \0 表示字符串的结束符。
printf 函数中的 %s 格式化字符串,则会按照字符串格式解析输出字符数组 c,直到遇到字符串结束符 \0。因此,输出结果为 “ab”。
2.(湖南省2021年普通高等学校对口招生考试)若“char a[8]=”1234”;int x=strlen(a),y=sizeof(a);”,则 x 和 y 的值分别是( )
A.4,4
B.5,4
C.4,5
D.4,8
答案:
D
解析:
根据给定的代码,char a[8] = "1234"; 定义了一个长度为 8 的字符数组 a,并初始化为 "1234"。
strlen(a) 返回字符串的长度,即不包括结尾的空字符 '\0',所以 strlen(a) 的结果为 4。
sizeof(a) 返回数组 a 的大小,即所占的字节数。由于 a 是一个字符数组,每个字符占用一个字节,所以 sizeof(a) 的结果为 8。
因此,答案是 D.4,8,即 x 的值为 4,y 的值为 8。
3.(2017 年重庆市普通高校招生高职对口类统一考试)在 C 语言中,若定义数组 char x[] = "Chongqing";,则数组 x 所占的存储空间是:
A. 8 字节
B. 9 字节
C. 10 字节
D. 11 字节
答案:
C
解析:
题目中定义了一个字符数组 char x[] = "Chongqing";,并要求确定数组 x 所占的存储空间。
根据定义的数组大小,数组 x 包含 10 个字符,即 "Chongqing" 这个字符串加上结尾的空字符 '\0'。
在 C 语言中,字符占用一个字节。因此,数组 x 所占的存储空间为 10 字节。
所以,答案是 C. 10 字节。
4.(2016 年重庆市普通高校招生高职对山类统一考试)在 C 语言中下列初始化方式中正确的是:
A. char c[3] = {“x”, “y”, “z”};
B. char k[3] = {'n', 'e', 'w'};
C. int b[5] =(1, 2, 3, 4, 5);
D. int n[3] = {1, 2, ,4};
答案:
B
解析:
选项 A 中的 char c[3] = {“x”, “y”, “z”}; 是错误的,因为在