第25练 单元6 字符数组《C语言程序设计》(高教版第2版)一课一练
|
2份
|
5页
|
25人阅读
|
0人下载
内容正文:
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(高教版第2版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《C语言程序设计》(高教版第2版)一课一练的单元6的第25练,内容涵盖单元6“考试系统”的数据存储的6.2.3 字符数组。
《C语言程序设计》(高教版第2版)一课一练 第25练
单元6 “考试系统”的数据存储
6.2.3 字符数组
1、 单项选择题(本题共5小题)
1、关于字符数组的两种初始化方式,下列说法正确的是( )
A. char s1[]={'s','t','r','i','n','g'};和char s2[]="string";定义的数组长度均为 6
B. s1数组的长度为 6,s2数组的长度为 7,因为系统会给s2自动添加字符串结束符 '\0'
C. s1数组的长度为 7,s2数组的长度为 6
D. 两种初始化方式都会自动添加 '\0',数组长度均为 7
【答案】B
【解析】以字符常量列表初始化字符数组时,系统不会自动添加 '\0',数组长度等于列表中元素个数(6);以字符串常量初始化时,系统会自动在末尾添加 '\0',数组长度为字符串有效字符数加 1(6+1=7)。
2、以下关于字符串比较的写法,正确的是( )
A. if("abc" == "def") printf("相等");
B. char str1[]="abc", str2[]="def"; if(str1 == str2) printf("相等");
C. char str1[]="abc", str2[]="def"; if(strcmp(str1, str2) == 0) printf("相等");
D. if(strcmp("abc", "def") > 0) printf("abc大于def");
【答案】C
【解析】C 语言中不能直接用==比较字符串内容,因为==比较的是数组首地址而非字符串内容。strcmp函数返回 0 表示两个字符串相等,返回正数表示第一个字符串大于第二个,返回负数则相反,选项 C 写法正确。
3、执行语句char str[]="hello
\0world";后,strlen(str)的返回值是( )
A. 5
B. 6
C. 11
D. 12
【答案】B
【解析】strlen函数统计字符串长度时,遇到第一个 '\0' 就停止计数。"hello
" 包含 5 个有效字符加换行符 '
',共 6 个字符,后面的 "\0world" 不会被统计,因此返回值为 6。
4、下列关于gets()函数的描述,正确的是( )
A. gets()函数只能输入不含空格的字符串
B. gets()函数可以输入包含空格的字符串,直到遇到回车符为止
C. gets()函数输入字符串时需要指定长度,避免溢出
D. gets()函数的参数必须是字符串常量
【答案】B
【解析】gets()函数的核心特点是支持输入包含空格的字符串,输入终止条件是回车符;选项 A 是scanf("%s")的限制,选项 Cgets()不支持指定长度(存在溢出风险),选项 D 参数应为字符数组名或字符指针。
5、使用strcat(str1, str2)函数连接两个字符串时,必须满足的条件是( )
A. str1和str2的长度必须相等
B. str1所在的字符数组必须有足够的空间容纳连接后的字符串
C. str1和str2必须都是字符串常量
D. str1的长度必须大于str2的长度
【答案】B
【解析】strcat函数会将str2的内容连接到str1末尾,覆盖str1原有的 '\0',因此str1的数组空间必须足够大,否则会出现内存溢出,这是使用该函数的关键前提。
2、 判断题(本题共4题)
1、字符数组存储字符串时,字符串结束符 '\0' 不需要占用内存空间,仅作为逻辑标记。( )
【答案】×
【解析】'\0' 是 ASCII 码值为 0 的字符,需要占用 1 个字节的内存空间,系统自动添加在字符串末尾,用于标记字符串结束。
2、strcmp(str1, str2)函数返回正数时,表示str1字符串的内容大于str2字符串的内容。( )
【答案】√
【解析】strcmp函数的返回规则为:返回正数表示str1大于str2,返回负数表示str1小于str2,返回 0 表示两者相等,比较依据是字符的 ASCII 码值。
3、可以直接使用==运算符比较两个字符数组中存储的字符串内容是否相等。( )
【答案】×
【解析】==运算符比较的是字符数组的首地址,而非字符串内容。要比较字符串内容,必须使用strcmp函数。
3、 填空题(本题共2题)
1、C 语言中规定字符串的结束标志是____,其对应的 ASCII 码值为____。
【答案】'\0';0
【解析】'\0' 是不可显示的空操作符,用于标记字符串的结束位置,方便字符串处理函数(如strlen、puts)识别字符串边界。它的 ASCII 码值为 0,不会影响字符串的有效内容展示。
2、在 C 语言中,使用strcpy()、strcat()、strcmp()等字符串处理函数时,必须在程序开头包含的头文件是____。
【答案】<string.h>
【解析】<string.h > 头文件中包含了所有字符串处理函数的声明和相关宏定义,只有包含该头文件,编译器才能识别并正确编译这些函数的调用。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(高教版第2版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《C语言程序设计》(高教版第2版)一课一练的单元6的第25练,内容涵盖单元6“考试系统”的数据存储的6.2.3 字符数组。
《C语言程序设计》(高教版第2版)一课一练 第25练
单元6 “考试系统”的数据存储
6.2.3 字符数组
1、 单项选择题(本题共5小题)
1、关于字符数组的两种初始化方式,下列说法正确的是( )
A. char s1[]={'s','t','r','i','n','g'};和char s2[]="string";定义的数组长度均为 6
B. s1数组的长度为 6,s2数组的长度为 7,因为系统会给s2自动添加字符串结束符 '\0'
C. s1数组的长度为 7,s2数组的长度为 6
D. 两种初始化方式都会自动添加 '\0',数组长度均为 7
2、以下关于字符串比较的写法,正确的是( )
A. if("abc" == "def") printf("相等");
B. char str1[]="abc", str2[]="def"; if(str1 == str2) printf("相等");
C. char str1[]="abc", str2[]="def"; if(strcmp(str1, str2) == 0) printf("相等");
D. if(strcmp("abc", "def") > 0) printf("abc大于def");
3、执行语句char str[]="hello
\0world";后,strlen(str)的返回值是( )
A. 5
B. 6
C. 11
D. 12
4、下列关于gets()函数的描述,正确的是( )
A. gets()函数只能输入不含空格的字符串
B. gets()函数可以输入包含空格的字符串,直到遇到回车符为止
C. gets()函数输入字符串时需要指定长度,避免溢出
D. gets()函数的参数必须是字符串常量
5、使用strcat(str1, str2)函数连接两个字符串时,必须满足的条件是( )
A. str1和str2的长度必须相等
B. str1所在的字符数组必须有足够的空间容纳连接后的字符串
C. str1和str2必须都是字符串常量
D. str1的长度必须大于str2的长度
2、 判断题(本题共4题)
1、字符数组存储字符串时,字符串结束符 '\0' 不需要占用内存空间,仅作为逻辑标记。( )
2、strcmp(str1, str2)函数返回正数时,表示str1字符串的内容大于str2字符串的内容。( )
3、可以直接使用==运算符比较两个字符数组中存储的字符串内容是否相等。( )
3、 填空题(本题共2题)
1、C 语言中规定字符串的结束标志是____,其对应的 ASCII 码值为____。
2、在 C 语言中,使用strcpy()、strcat()、strcmp()等字符串处理函数时,必须在程序开头包含的头文件是____。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$