第45练 第8章 字符串与指针(字符串的表示形式、字符数组与字符串指针变量比较)《C语言程序设计》(电子工业出版社)一课一练

| 2份
| 6页
| 37人阅读
| 0人下载

内容正文:

编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(电子工业出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《C语言程序设计》(电子工业出版社)一课一练的第8章的第45练,内容涵盖第8章指针的8.4 字符串与指针(字符串的表示形式、字符数组与字符串指针变量比较)。 《C语言程序设计》(电子工业出版社)一课一练 第45练 第8章 指针 8.4 字符串与指针(字符串的表示形式、字符数组与字符串指针变量比较) 1、 单项选择题(本题共4小题) 1、下列关于字符串指针变量的赋值操作,正确的是( ) A. char a [10]; a = "hello"; B. char *p; *p = "hello"; C. char *p; p = "hello"; D. char a [10]; a [0] = "hello"; 2、字符数组和字符串指针变量的核心区别是( ) A. 字符数组存单个字符的集合,指针变量存字符串的首地址 B. 字符数组存字符串的首地址,指针变量存字符 C. 两者都能直接整体赋值字符串 D. 两者都可以随意修改指向的地址 3、已知有定义char a[] = "I love C"; char *p = a;,下列操作合法的是( ) A. a++; B. p++; C. a = p; D. a [0] = p; 4、已知char *p = "program";,下列选项中能正确引用字符 'r' 的是( ) A. p+2 B. *(p+2) C. p [2] D. 以上 B 和 C 都正确 2、 判断题(本题共3题) 1、字符串指针变量中存储的是整个字符串的所有字符内容。( ) 2、字符数组的数组名是一个常量,不能对其进行自增(a++)或赋值操作。( ) 3、字符串指针变量可以像字符数组一样,使用下标形式引用字符串中的单个字符。( ) 3、 填空题(本题共2题) 1、字符串指针变量的核心存储内容是____,它本身并不存储字符串的字符内容。 2、已知char *p;,给 p 赋值字符串 "student" 的正确 C 语言语句是____,而字符数组不能直接使用该方式赋值字符串。 4、 读程序写结果题(本题共1题) 1、阅读下面的 C 语言程序,写出程序运行后的输出结果。 【程序代码】 #include <stdio.h> int main() { char *str = "Welcome to C!"; str += 8; printf("%s", str); return 0; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(电子工业出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《C语言程序设计》(电子工业出版社)一课一练的第8章的第45练,内容涵盖第8章指针的8.4 字符串与指针(字符串的表示形式、字符数组与字符串指针变量比较)。 《C语言程序设计》(电子工业出版社)一课一练 第45练 第8章 指针 8.4 字符串与指针(字符串的表示形式、字符数组与字符串指针变量比较) 1、 单项选择题(本题共4小题) 1、下列关于字符串指针变量的赋值操作,正确的是( ) A. char a [10]; a = "hello"; B. char *p; *p = "hello"; C. char *p; p = "hello"; D. char a [10]; a [0] = "hello"; 【答案】C 【解析】字符数组不能直接整体赋值字符串(A 错误),字符串指针变量可以直接赋值字符串的首地址(C 正确);*p表示指针指向的字符,不能赋值字符串(B 错误);a[0]是单个字符,不能赋值字符串(D 错误)。 2、字符数组和字符串指针变量的核心区别是( ) A. 字符数组存单个字符的集合,指针变量存字符串的首地址 B. 字符数组存字符串的首地址,指针变量存字符 C. 两者都能直接整体赋值字符串 D. 两者都可以随意修改指向的地址 【答案】A 【解析】字符数组的存储空间用于存放字符串的每个字符(含 '\0');字符串指针变量本身只存储字符串在内存中的首地址,不存储字符;字符数组不能直接整体赋值字符串,数组名是常量不能修改地址,只有 A 描述正确。 3、已知有定义char a[] = "I love C"; char *p = a;,下列操作合法的是( ) A. a++; B. p++; C. a = p; D. a [0] = p; 【答案】B 【解析】数组名 a 是常量,不能进行自增、赋值等修改操作(A、C 错误);a[0]是单个字符,不能赋值指针变量 p 的地址值(D 错误);指针变量 p 是变量,可以自增移动指向的地址(B 正确)。 4、已知 char *p = "program";,下列选项中能正确引用字符 'r' 的是( ) A. p+2 B. *(p+1) C. p[2] D. 以上 B 和 C 都正确 【答案】B 【解析】本题考查字符指针与字符串的索引规则,字符串 "program" 的字符下标从 0 开始计数,p[0]='p'、p[1]='r'、p[2]='o'。其中p+2表示下标为 2 的字符的地址,并非字符本身;*(p+1)通过指针偏移访问内存单元,等价于p[1],可正确引用字符'r';p[2]访问的是下标为 2 的字符'o',不符合题目要求,因此选项 B 正确。 2、 判断题(本题共3题) 1、字符串指针变量中存储的是整个字符串的所有字符内容。( ) 【答案】× 【解析】字符串指针变量的存储空间仅用于存储字符串在内存中的首地址,字符串的字符内容实际存放在内存的连续单元中,指针只是指向这个起始位置。 2、字符数组的数组名是一个常量,不能对其进行自增(a++)或赋值操作。( ) 【答案】√ 【解析】字符数组名代表数组的首地址,是固定不变的常量,因此不能通过自增修改其值,也不能直接赋值其他地址或内容。 3、字符串指针变量可以像字符数组一样,使用下标形式引用字符串中的单个字符。( ) 【答案】√ 【解析】C 语言允许字符串指针变量使用下标(如 p [i])引用字符,本质等价于 *(p+i),通过指针偏移访问对应位置的字符。 3、 填空题(本题共2题) 1、字符串指针变量的核心存储内容是____,它本身并不存储字符串的字符内容。 【答案】字符串在内存中的首地址 【解析】字符串指针变量的作用是指向字符串的起始位置,通过存储的首地址可以间接访问内存中的字符串字符。这一特性使得指针可以灵活切换指向不同的字符串,节省存储空间。 2、已知char *p;,给 p 赋值字符串 "student" 的正确 C 语言语句是____,而字符数组不能直接使用该方式赋值字符串。 【答案】p = "student"; 【解析】字符串指针变量可以直接接收字符串常量的首地址,完成指向操作。字符数组只能在初始化时整体赋值字符串,后续无法通过数组名整体赋值,只能逐个元素修改。 4、 读程序写结果题(本题共1题) 1、阅读下面的 C 语言程序,写出程序运行后的输出结果。 【程序代码】 #include <stdio.h> int main() { char *str = "Welcome to C!"; str += 8; printf("%s", str); return 0; } 【答案】 程序运行结果: to C! 【解析】 指针变量 str 初始指向字符串 "Welcome to C!" 的首地址,执行str += 8后,指针向后偏移 8 个字符的位置,指向字符 't' 的地址。printf("%s", str)会从当前指针指向的地址开始输出字符串,直到遇到结束符 '\0',因此输出 "to C!"。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

第45练 第8章 字符串与指针(字符串的表示形式、字符数组与字符串指针变量比较)《C语言程序设计》(电子工业出版社)一课一练-第1页
1

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