第36练 单元8 指指针数组与指向函数的指针《C语言程序设计》(高教版第2版)一课一练

| 2份
| 8页
| 19人阅读
| 0人下载

内容正文:

编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(高教版第2版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《C语言程序设计》(高教版第2版)一课一练的单元8的第36练,内容涵盖单元8“考试系统”的优化的8.2.4~8.2.6 指针数组与指向函数的指针。 《C语言程序设计》(高教版第2版)一课一练 第36练 单元8 “考试系统”的优化 8.2.4~8.2.6 指针数组与指向函数的指针 1、 单项选择题(本题共5小题) 1、以下关于数组名与指针常量的说法,正确的是( ) A. 数组名可重新赋值,属于指针变量 B. 一维数组名是地址常量,不能进行自增自减运算 C. 数组名可直接赋值给普通浮点型变量 D. 二维数组名等同于普通一级整型指针 2、若有定义double b[8], *pt = b + 2;,以下表达式不能表示数组元素b[5]的是( ) A. *(pt + 3) B. pt [3] C. *(b + 5) D. pt + 5 3、设有二维数组int arr[5][6]; 下列表达式中,不属于元素地址的是( ) A. arr [3] + 1 B. *(arr + 3) + 1 C. *(*arr + 3) D. &arr [3][1] 4、依次对应数组指针、指针数组、函数指针的定义顺序是( ) ①int (*f)(); ②int *q[6]; ③int (*p)[6]; A. ③②① B. ②③① C. ①③② D. ③①② 5、数组名作为自定义函数实参传递时,形参实际接收的是( ) A. 数组所有元素的完整拷贝 B. 数组首元素的内存地址 C. 数组占用的总字节数量 D. 数组包含的元素个数 二、判断题(本题共 4 题) 1、字符型指针变量执行p++操作后,地址向后偏移 1 个字节。( ) 2、int *a[4];属于数组指针,可指向含有 4 个整型元素的一维数组。( ) 3、指向不同数组的两个同类型指针,相减可以得到有效元素个数差。( ) 4、函数形参char s[]和char *s作用等效,编译器均按指针变量处理。( ) 三、程序填空题(本题共 1 题) 1、题目描述:以下程序利用指针操作遍历数组,统计数组中所有奇数的累加和,补全缺失代码使程序正常运行。 #include <stdio.h> #define SIZE 9 // 指针遍历数组,计算所有奇数的和 int getOddSum(int *p) { int i, sum = 0; for(i = 0; i < SIZE; i++) { // 通过指针取元素,判断是否为奇数 if( ____(1)____ ) { sum = sum + *(p + i); } } return sum; } // 指针方式遍历输出全部数组元素 void showArr(int *pa) { int k; for(k = 0; k < SIZE; k++) { printf("%d ", ____(2)____ ); } printf(" "); } int main() { int data[SIZE] = {11,22,33,44,55,66,77,88,99}; printf("数组原始数据: "); showArr(data); // 调用函数求奇数和,接收返回值 int res = ____(3)____ ; printf("数组中所有奇数累加和:%d ", res); return 0; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(高教版第2版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《C语言程序设计》(高教版第2版)一课一练的单元8的第36练,内容涵盖单元8“考试系统”的优化的8.2.4~8.2.6 指针数组与指向函数的指针。 《C语言程序设计》(高教版第2版)一课一练 第36练 单元8 “考试系统”的优化 8.2.4~8.2.6 指针数组与指向函数的指针 1、 单项选择题(本题共5小题) 1、以下关于数组名与指针常量的说法,正确的是( ) A. 数组名可重新赋值,属于指针变量 B. 一维数组名是地址常量,不能进行自增自减运算 C. 数组名可直接赋值给普通浮点型变量 D. 二维数组名等同于普通一级整型指针 【答案】B 【解析】数组名属于地址常量,不允许重新赋值,也不能做自增、自减运算;数组名是地址类型,无法直接赋值给普通基本类型变量;二维数组名是行指针,不等同于普通一级整型指针,只有选项 B 表述正确。 2、若有定义double b[8], *pt = b + 2;,以下表达式不能表示数组元素b[5]的是( ) A. *(pt + 3) B. pt [3] C. *(b + 5) D. pt + 5 【答案】D 【解析】pt+5 仅表示内存地址,无法取出对应元素的值,不能代表b[5];A、B 利用指针偏移取值,C 通过数组名偏移取值,都能正确表示目标元素。 3、设有二维数组int arr[5][6]; 下列表达式中,不属于元素地址的是( ) A. arr [3] + 1 B. *(arr + 3) + 1 C. *(*arr + 3) D. &arr [3][1] 【答案】C 【解析】*(*arr + 3)是对地址进行二次取值操作,得到的是数组元素的数值,并非内存地址;其余三个选项均为合法的元素地址表示形式。 4、依次对应数组指针、指针数组、函数指针的定义顺序是( ) ①int (*f)(); ②int *q[6]; ③int (*p)[6]; A. ③②① B. ②③① C. ①③② D. ③①② 【答案】A 【解析】int (*p)[6]是指向一维数组的数组指针;int *q[6]是存放指针的指针数组;int (*f)()是无参函数指针,因此对应顺序为:数组指针 → 指针数组 → 函数指针,对应选项 A。 5、数组名作为自定义函数实参传递时,形参实际接收的是( ) A. 数组所有元素的完整拷贝 B. 数组首元素的内存地址 C. 数组占用的总字节数量 D. 数组包含的元素个数 【答案】B 【解析】C 语言中数组名作为函数实参,不会拷贝数组元素,仅传递数组首元素的内存地址,形参以指针形式接收后,可直接操作原数组空间。 二、判断题(本题共 4 题) 1、字符型指针变量执行p++操作后,地址向后偏移 1 个字节。( ) 【答案】√ 【解析】字符型数据在内存中占用 1 个字节,字符指针做自增运算时,会按照自身类型步长,向后偏移 1 个字节地址。 2、int *a[4];属于数组指针,可指向含有 4 个整型元素的一维数组。( ) 【答案】× 【解析】int *a[4];是指针数组,本质是存放 4 个整型指针的数组;数组指针的标准写法为int (*a)[4];,二者语法含义不能混淆。 3、指向不同数组的两个同类型指针,相减可以得到有效元素个数差。( ) 【答案】× 【解析】只有指向同一片连续内存数组的同类型指针相减,结果才有意义;指向不同数组的指针相减运算结果无效,无实际含义。 4、函数形参char s[]和char *s作用等效,编译器均按指针变量处理。( ) 【答案】√ 【解析】数组形式的函数形参只是语法写法,编译器底层会统一转换为指针变量,都用于接收字符串或数组的首地址。 三、程序填空题(本题共 1 题) 1、题目描述:以下程序利用指针操作遍历数组,统计数组中所有奇数的累加和,补全缺失代码使程序正常运行。 #include <stdio.h> #define SIZE 9 // 指针遍历数组,计算所有奇数的和 int getOddSum(int *p) { int i, sum = 0; for(i = 0; i < SIZE; i++) { // 通过指针取元素,判断是否为奇数 if( ____(1)____ ) { sum = sum + *(p + i); } } return sum; } // 指针方式遍历输出全部数组元素 void showArr(int *pa) { int k; for(k = 0; k < SIZE; k++) { printf("%d ", ____(2)____ ); } printf(" "); } int main() { int data[SIZE] = {11,22,33,44,55,66,77,88,99}; printf("数组原始数据: "); showArr(data); // 调用函数求奇数和,接收返回值 int res = ____(3)____ ; printf("数组中所有奇数累加和:%d ", res); return 0; } 【答案】 (1) *(p+i) % 2 != 0 (2) *(pa + k) (3) getOddSum(data) 【解析】 (1) 通过指针偏移*(p+i)取出数组元素,对 2 取余结果不等于 0,判定为奇数。 (2) 使用指针偏移*(pa + k)取出数组元素,实现遍历输出。 (3) 将数组名作为实参传递首元素地址,调用函数得到奇数和。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

第36练 单元8 指指针数组与指向函数的指针《C语言程序设计》(高教版第2版)一课一练-第1页
1

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