第30练 第6章 字符串结束标志、字符数组的输入输出《C语言程序设计》(电子工业出版社)一课一练
|
2份
|
7页
|
62人阅读
|
0人下载
内容正文:
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(电子工业出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《C语言程序设计》(电子工业出版社)一课一练的第6章的第30练,内容涵盖第6章数组的6.3.4~6.3.5 字符串结束标志、字符数组的输入输出。
《C语言程序设计》(电子工业出版社)一课一练 第30练
第6章 数组
6.3.4~6.3.5 字符串结束标志、字符数组的输入输出
1、 单项选择题(本题共4小题)
1、关于 C 语言字符串结束标志 '\0',下列说法正确的是( )
A. '\0' 的 ASCII 码值是 10
B. '\0' 计入字符串的长度
C. 系统会自动给用字符串初始化的字符数组添加 '\0'
D. 字符数组必须手动添加 '\0' 才能作为字符串使用
【答案】C
【解析】'\0' 的 ASCII 码值为 0,且不计入字符串长度;用单个字符初始化字符数组时可手动添加 '\0',但用字符串形式初始化时,系统会自动在末尾添加 '\0',因此选项 C 正确。
2、下列字符数组初始化的写法中,正确且会自动添加 '\0' 的是( )
A. char str [] = {'h','e','l','l','o'};
B. char str [5] = "hello";
C. char str [] = "hello";
D. char str [6] = {'h','e','l','l','o'};
【答案】C
【解析】选项 A 是单个字符初始化,不会自动添加 '\0';选项 B 中 "hello" 含 5 个字符,加 '\0' 需要 6 个内存单元,数组长度 5 会导致溢出;选项 C 系统会自动计算数组长度并添加 '\0';选项 D 未手动添加 '\0',系统仅将剩余元素初始化为 0,不属于自动添加字符串结束标志的场景。
3、使用scanf("%s", str)输入字符串时,下列说法错误的是( )
A. 输入项是字符数组名,不需要加地址符 "&"
B. 无法输入包含空格或制表符的字符串
C. 系统会自动在输入的字符串末尾添加 '\0'
D. 可以输入任意长度的字符串,不受数组长度限制
【答案】D
【解析】如果输入的字符串长度超过字符数组的定义长度,会导致缓冲区溢出,引发程序错误,因此不能输入任意长度的字符串,选项 D 错误。
4、已知char str[] = "abc\0def";,使用printf("%s", str)输出的结果是( )
A. abcdef
B. abc
C. def
D. abc\0def
【答案】B
【解析】用%s格式输出字符串时,遇到第一个 '\0' 就会停止输出,因此仅会输出 '\0' 之前的 "abc"。
2、 判断题(本题共3题)
1、C 语言中字符串结束标志 '\0' 会被计入字符串的长度。( )
【答案】×
【解析】'\0' 占一个字节的内存空间,但它是字符串的结束标志,不计入字符串的实际长度,例如 "abc" 的长度为 3,而非 4。
2、使用printf("%s", str)输出字符数组时,输出项必须是字符数组的元素名,比如str[0]。( )
【答案】×
【解析】用%s格式输出字符串时,输出项应为字符数组名,数组名代表数组的起始地址,程序会从该地址开始输出,直到遇到 '\0' 为止。
3、用字符串形式初始化字符数组时,系统会自动在字符串末尾添加 '\0' 作为结束标志。( )
【答案】√
【解析】这是 C 语言的语法规则,例如char str[] = "hello";,系统会自动在 "hello" 后添加 '\0',方便字符串处理函数识别结束位置。
3、 填空题(本题共2题)
1、C 语言中字符串的结束标志是____,它的 ASCII 码值为____。
【答案】'\0';0
【解析】'\0' 用于标识字符串的末尾,系统会自动给用字符串初始化的字符数组添加该标志;它的 ASCII 码值为 0,占一个内存字节但不计入字符串长度。
2、使用 scanf 函数的 % s 格式输入字符串时,无法输入包含____的字符串,若要输入此类字符串,可使用____函数。
【答案】空格(或制表符);gets
【解析】scanf 的 % s 格式遇到空格或制表符会停止输入,因此无法读取带空格的字符串;gets 函数可以读取整行输入,包括空格,直到遇到换行符为止。
4、 读程序写结果题(本题共1题)
1、阅读下面的 C 语言程序,写出程序运行后的输出结果。
【程序代码】
#include <stdio.h>
int main() {
char str1[] = "I love C";
char str2[10] = {'I',' ','l','o','v','e'};
printf("%s
", str1);
printf("%s", str2);
return 0;
}
【答案】
程序运行结果:
I love C
I love
【解析】
str1 由字符串常量初始化,系统自动添加结束符 \0,可正常输出;str2 仅赋值 6 个字符,未手动添加结束标志,输出时会继续读取后续内存数据,出现乱码。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(电子工业出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《C语言程序设计》(电子工业出版社)一课一练的第6章的第30练,内容涵盖第6章数组的6.3.4~6.3.5 字符串结束标志、字符数组的输入输出。
《C语言程序设计》(电子工业出版社)一课一练 第30练
第6章 数组
6.3.4~6.3.5 字符串结束标志、字符数组的输入输出
1、 单项选择题(本题共4小题)
1、关于 C 语言字符串结束标志 '\0',下列说法正确的是( )
A. '\0' 的 ASCII 码值是 10
B. '\0' 计入字符串的长度
C. 系统会自动给用字符串初始化的字符数组添加 '\0'
D. 字符数组必须手动添加 '\0' 才能作为字符串使用
2、下列字符数组初始化的写法中,正确且会自动添加 '\0' 的是( )
A. char str [] = {'h','e','l','l','o'};
B. char str [5] = "hello";
C. char str [] = "hello";
D. char str [6] = {'h','e','l','l','o'};
3、使用scanf("%s", str)输入字符串时,下列说法错误的是( )
A. 输入项是字符数组名,不需要加地址符 "&"
B. 无法输入包含空格或制表符的字符串
C. 系统会自动在输入的字符串末尾添加 '\0'
D. 可以输入任意长度的字符串,不受数组长度限制
4、已知char str[] = "abc\0def";,使用printf("%s", str)输出的结果是( )
A. abcdef
B. abc
C. def
D. abc\0def
2、 判断题(本题共3题)
1、C 语言中字符串结束标志 '\0' 会被计入字符串的长度。( )
2、使用printf("%s", str)输出字符数组时,输出项必须是字符数组的元素名,比如str[0]。( )
3、用字符串形式初始化字符数组时,系统会自动在字符串末尾添加 '\0' 作为结束标志。( )
3、 填空题(本题共2题)
1、C 语言中字符串的结束标志是____,它的 ASCII 码值为____。
2、使用 scanf 函数的 % s 格式输入字符串时,无法输入包含____的字符串,若要输入此类字符串,可使用____函数。
4、 读程序写结果题(本题共1题)
1、阅读下面的 C 语言程序,写出程序运行后的输出结果。
【程序代码】
#include <stdio.h>
int main() {
char str1[] = "I love C";
char str2[10] = {'I',' ','l','o','v','e'};
printf("%s
", str1);
printf("%s", str2);
return 0;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$