第8章 第47练 指针应用实例《编程语言基础-C语言》(高教版第5版)一课一练

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

内容正文:

编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《编程语言基础-C语言》(高教版第5版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《编程语言基础-C语言》(高教版第5版)一课一练的第8章的第47练,内容涵盖第8章 指针的8.7指针的应用实例。 《编程语言基础-C语言》(高教版第5版)第47练 第8章 指针 8.7 指针的应用实例(原卷版) 一、单项选择题(本题共5小题) 1、以下程序通过指针遍历数组并求元素之和,横线处应填写( ) int a[5] = {2,4,6,8,10}; int *p = a, sum = 0; while (p < a + 5) { ______; p++; } printf("sum=%d", sum); A. sum = *p++ B. sum += *p C. sum = sum + p D. sum += a[p] 2、以下自定义函数的功能是通过指针统计字符串的长度,横线处应填写( ) int my_strlen(char *s) { int len = 0; while (______) { len++; s++; } return len; } A. s != '\0' B. *s C. *s != ' ' D. s++ 3、若有函数定义 void swap(int *p1, int *p2),则以下调用语句正确的是( ) A. swap(a, b); B. swap(&a, &b); C. swap(*a, *b); D. swap(a[0], b[0]); 4、有以下程序段,输出结果是( ) #include <stdio.h> int main() { char s[] = "world"; char *p = s; p += 2; printf("%s", p); return 0; } A. wo B. world C. rld D. ld 5、关于指针的应用实例,以下说法正确的是( ) A. 数组名作为函数参数时,函数内无法修改原数组的值 B. 指针运算中,p+n 表示地址值增加 n 个字节 C. 指向字符串的指针可以直接通过下标引用字符,但不能修改字符串常量内容 D. 两个不同类型的指针可以直接互相赋值 二、判断题(本题共5小题) 1、在指针与数组的应用中,*(p+i) 与 p[i] 是完全等价的,但编译器处理方式不同。( ) 2、用指针变量作为函数参数时,实参传递给形参的是地址值,这种传递方式仍属于“值传递”。( ) 3、若有 char *p = "C语言";,则可以通过 p[0] = 'c'; 将字符串首字母改为小写。( ) 4、以下程序段通过指针遍历实现了数组元素的累加,代码正确。( ) int a[5] = {1,2,3,4,5}, sum = 0, *p = a; for (int i = 0; i < 5; i++) { sum += *(p + i); } printf("sum=%d", sum); 5、函数名本身就是一个指针,指向函数的入口地址,可以通过函数指针来调用函数。( ) 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《编程语言基础-C语言》(高教版第5版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《编程语言基础-C语言》(高教版第5版)一课一练的第8章的第47练,内容涵盖第8章 指针的8.7指针的应用实例。 《编程语言基础-C语言》(高教版第5版)第47练 第8章 指针 8.7 指针的应用实例(解析版) 一、单项选择题(本题共5小题) 1、以下程序通过指针遍历数组并求元素之和,横线处应填写( ) int a[5] = {2,4,6,8,10}; int *p = a, sum = 0; while (p < a + 5) { ______; p++; } printf("sum=%d", sum); A. sum = *p++ B. sum += *p C. sum = sum + p D. sum += a[p] 【答案】B 【解析】程序通过指针变量 p 遍历数组,每次循环先累加当前指针指向的元素值(*p),再让指针后移。选项B sum += *p 正确累加当前元素;A中 *p++ 虽然能得到值但 p++ 的副作用会导致本次累加和下轮移动混乱;C中加的是地址而非值;D中 p 作数组下标会先转换为整数,不正确。 2、以下自定义函数的功能是通过指针统计字符串的长度,横线处应填写( ) int my_strlen(char *s) { int len = 0; while (______) { len++; s++; } return len; } A. s != '\0' B. *s C. *s != ' ' D. s++ 【答案】B 【解析】指针指向字符串,通过 *s 可以获取当前字符。当 *s 不为 '\0' 时循环继续,等同于 (*s) != '\0'。选项A比较的是地址而非字符,错误;C判断换行符不是字符串结束标志;D是移动指针,不是循环条件。 3、若有函数定义 void swap(int *p1, int *p2),则以下调用语句正确的是( ) A. swap(a, b); B. swap(&a, &b); C. swap(*a, *b); D. swap(a[0], b[0]); 【答案】B 【解析】指针作为函数参数可实现“双向”数据传递,即主调函数通过指针将被调函数修改后的值带回来,这是指针应用的经典场景。swap 函数要求传递两个整型变量的地址,选项 swap(&a, &b) 符合要求,将变量 a、b 的地址作为实参传递给形参 p1、p2。 4、有以下程序段,输出结果是( ) #include <stdio.h> int main() { char s[] = "world"; char *p = s; p += 2; printf("%s", p); return 0; } A. wo B. world C. rld D. ld 【答案】C 【解析】初始 p 指向字符串首字符 'w',p += 2 使指针向后移动2个字符,指向 'r'。printf("%s", p) 从当前位置输出直到结束符 \0,输出 "rld"。 5、关于指针的应用实例,以下说法正确的是( ) A. 数组名作为函数参数时,函数内无法修改原数组的值 B. 指针运算中,p+n 表示地址值增加 n 个字节 C. 指向字符串的指针可以直接通过下标引用字符,但不能修改字符串常量内容 D. 两个不同类型的指针可以直接互相赋值 【答案】C 【解析】char *p = "hello"; 中 p 指向字符串常量的首地址,字符串常量在只读存储区,可通过 p[i] 访问但不能修改。选项A错误,数组名作参数时传地址,可修改原数组;B错误,指针加n移动 n * sizeof(指向类型) 字节;D错误,不同类型的指针不能直接赋值,需强制类型转换。 二、判断题(本题共5小题) 1、在指针与数组的应用中,*(p+i) 与 p[i] 是完全等价的,但编译器处理方式不同。( ) 【答案】× 【解析】C语言规定下标运算 p[i] 在编译时被转换为 *(p+i),两者在编译后的目标代码完全相同,这是指针与数组密切关系的体现。 2、用指针变量作为函数参数时,实参传递给形参的是地址值,这种传递方式仍属于“值传递”。( ) 【答案】√ 【解析】虽然指针参数可以实现“传址”的效果,但C语言中所有参数传递本质都是值传递——实参把地址值复制给形参,形参得到地址的副本,但通过该地址可以访问原变量。 3、若有 char *p = "C语言";,则可以通过 p[0] = 'c'; 将字符串首字母改为小写。( ) 【答案】× 【解析】p 指向字符串常量,字符串常量通常存储在只读存储区,不能通过指针修改其内容。若要修改,应使用字符数组。 4、以下程序段通过指针遍历实现了数组元素的累加,代码正确。( ) int a[5] = {1,2,3,4,5}, sum = 0, *p = a; for (int i = 0; i < 5; i++) { sum += *(p + i); } printf("sum=%d", sum); 【答案】√ 【解析】程序通过指针加法运算 *(p + i) 依次访问数组元素,等价于 a[i],代码逻辑正确,输出结果为 sum=15。 5、函数名本身就是一个指针,指向函数的入口地址,可以通过函数指针来调用函数。( ) 【答案】√ 【解析】函数名在表达式中代表函数的入口地址,可以赋值给函数指针变量,通过函数指针来间接调用函数。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

第8章 第47练 指针应用实例《编程语言基础-C语言》(高教版第5版)一课一练-第1页
1

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