第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; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

第30练 第6章 字符串结束标志、字符数组的输入输出《C语言程序设计》(电子工业出版社)一课一练-第1页
1

由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。