第8章 第45练 指向字符串的指针变量《编程语言基础-C语言》(高教版第5版)一课一练

2026-05-08
| 2份
| 5页
| 39人阅读
| 0人下载

内容正文:

编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《编程语言基础-C语言》(高教版第5版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《编程语言基础-C语言》(高教版第5版)一课一练的第8章的第45练,内容涵盖第8章 指针的8.4指向字符串的指针变量。 《编程语言基础-C语言》(高教版第5版)第45练 第8章 指针 8.4 指向字符串的指针变量(原卷版) 一、单项选择题(本题共5小题) 1、以下关于字符串指针的说法,正确的是( ) A. char *p = "Hello"; 定义了一个字符指针变量 p,并将字符串常量的首地址赋值给 p B. char *p = "Hello"; 等价于 char p[] = "Hello"; C. 可以通过 p[0] = 'h'; 修改字符串常量的内容 D. char *p; 定义后可以直接使用 gets(p); 输入字符串 2、若有定义 char str[10] = "C语言"; char *p = str;,则以下引用字符串的方式错误的是( ) A. printf("%s", str); B. printf("%s", p); C. printf("%c", *p); D. printf("%s", &str[0]); 3、以下程序段的输出结果是( ) #include <stdio.h> main() { char *p = "abcdef"; p += 2; printf("%s", p); } A. abcdef B. cdef C. ab D. bcdef 4、以下关于字符数组和字符指针变量的叙述,正确的是( ) A. 字符数组名和字符指针变量都是常量,不能自增 B. 字符数组名是常量,而字符指针变量是变量,可以改变指向 C. 字符数组和字符指针变量在内存中都是分配在栈区 D. 两者完全等价,可以互换使用 5、下列选项中,能正确将字符串 "world" 连接到字符串 "hello " 后面的代码段是( ) A. char s1[20] = "hello "; char *s2 = "world"; strcat(s1, s2); B. char *s1 = "hello "; char *s2 = "world"; strcat(s1, s2); C. char s1[20] = "hello "; char s2[] = "world"; s1 = s1 + s2; D. char s1[20] = "hello "; char *s2 = "world"; s1 += s2; 二、判断题(本题共5小题) 1、可以使用 char *p = "hello"; 定义指针变量并指向字符串常量,但不能通过 p 修改字符串内容。( ) 2、定义 char str[10] = "abc"; 与 char *p = "abc"; 后,sizeof(str) 与 sizeof(p) 的值相同。( ) 3、若有 char *p = "China";,则 *(p+2) 是字符 'i'。( ) 4、以下程序段可以正确输出字符串的长度( ) char *p = "hello"; int len = 0; while (*(p++)) len++; printf("%d", len); 5、定义 char *p = "hello"; 后,可以使用 p[0] = 'H'; 将字符串首字母改为大写。( ) 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《编程语言基础-C语言》(高教版第5版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《编程语言基础-C语言》(高教版第5版)一课一练的第8章的第45练,内容涵盖第8章 指针的8.4指向字符串的指针变量。 《编程语言基础-C语言》(高教版第5版)第45练 第8章 指针 8.4 指向字符串的指针变量(解析版) 一、单项选择题(本题共5小题) 1、以下关于字符串指针的说法,正确的是( ) A. char *p = "Hello"; 定义了一个字符指针变量 p,并将字符串常量的首地址赋值给 p B. char *p = "Hello"; 等价于 char p[] = "Hello"; C. 可以通过 p[0] = 'h'; 修改字符串常量的内容 D. char *p; 定义后可以直接使用 gets(p); 输入字符串 【答案】A 【解析】选项A正确,char *p = "Hello"; 使 p 指向字符串常量 "Hello" 的首地址。选项B错误,字符数组 char p[] = "Hello"; 会在栈中分配空间并复制字符串,而指针指向常量区,两者内存不同。选项C错误,字符串常量通常存储在只读存储区,修改会导致未定义行为。D错误,p 未初始化,不能直接用于输入。 2、若有定义 char str[10] = "C语言"; char *p = str;,则以下引用字符串的方式错误的是( ) A. printf("%s", str); B. printf("%s", p); C. printf("%c", *p); D. printf("%s", &str[0]); 【答案】D 【解析】*p 是 p 所指向的第一个字符 'C',是一个字符,不是字符串地址。 3、以下程序段的输出结果是( ) #include <stdio.h> main() { char *p = "abcdef"; p += 2; printf("%s", p); } A. abcdef B. cdef C. ab D. bcdef 【答案】B 【解析】p 初始指向字符串 "abcdef" 的首地址(字符 'a')。p += 2; 使指针向后移动2个字符,指向 'c'。printf("%s", p) 从 'c' 开始输出直到结束符,得到 "cdef"。 4、以下关于字符数组和字符指针变量的叙述,正确的是( ) A. 字符数组名和字符指针变量都是常量,不能自增 B. 字符数组名是常量,而字符指针变量是变量,可以改变指向 C. 字符数组和字符指针变量在内存中都是分配在栈区 D. 两者完全等价,可以互换使用 【答案】B 【解析】字符数组名代表数组首地址,是一个地址常量,不能进行自增或赋值运算;而字符指针变量是变量,可以改变指向。 5、下列选项中,能正确将字符串 "world" 连接到字符串 "hello " 后面的代码段是( ) A. char s1[20] = "hello "; char *s2 = "world"; strcat(s1, s2); B. char *s1 = "hello "; char *s2 = "world"; strcat(s1, s2); C. char s1[20] = "hello "; char s2[] = "world"; s1 = s1 + s2; D. char s1[20] = "hello "; char *s2 = "world"; s1 += s2; 【答案】A 【解析】选项A正确,s1 是字符数组且有足够空间,s2 是指向字符串常量的指针,strcat 可以连接。选项B错误,s1 是指向常量的指针,常量区不可修改,且空间可能不足。选项C和D语法错误,不能直接对数组名或指针使用加法连接字符串。 二、判断题(本题共5小题) 1、可以使用 char *p = "hello"; 定义指针变量并指向字符串常量,但不能通过 p 修改字符串内容。( ) 【答案】√ 【解析】字符串常量通常存放在只读存储区,通过指针访问时只能读取,不能修改。若尝试修改(如 p[0]='H';),行为未定义,可能导致程序崩溃。 2、定义 char str[10] = "abc"; 与 char *p = "abc"; 后,sizeof(str) 与 sizeof(p) 的值相同。( ) 【答案】× 【解析】sizeof(str) 计算整个数组的字节数,为10;sizeof(p) 计算指针变量本身的字节数,在32位系统下为4,64位下为8。两者值不同。 3、若有 char *p = "China";,则 *(p+2) 是字符 'i'。( ) 【答案】√ 【解析】p 指向 'C',p+2 指向 'i'(因为 p[0]='C',p[1]='h',p[2]='i'),*(p+2) 即 'i'。正确。 4、以下程序段可以正确输出字符串的长度( ) char *p = "hello"; int len = 0; while (*(p++)) len++; printf("%d", len); 【答案】√ 【解析】while (*(p++)) 先取 *p 判断是否为 '\0',然后 p 自增。当遇到结束符时循环停止,len 统计了非空字符个数,即字符串长度5。注意循环结束后 p 指向结束符之后,但 len 正确。 5、定义 char *p = "hello"; 后,可以使用 p[0] = 'H'; 将字符串首字母改为大写。( ) 【答案】× 【解析】p 指向字符串常量,字符串常量是不可修改的。尝试修改会导致运行时错误(段错误)或未定义行为。如需修改,应使用字符数组 char p[] = "hello";。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

第8章 第45练 指向字符串的指针变量《编程语言基础-C语言》(高教版第5版)一课一练
1
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。