第43练 第8章 指针与一维数组《C语言程序设计》(电子工业出版社)一课一练

| 2份
| 7页
| 27人阅读
| 0人下载

内容正文:

编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(电子工业出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《C语言程序设计》(电子工业出版社)一课一练的第8章的第43练,内容涵盖第8章指针的8.3.1 指针与一维数组。 《C语言程序设计》(电子工业出版社)一课一练 第43练 第8章 指针 8.3.1 指针与一维数组 1、 单项选择题(本题共4小题) 1、关于 C 语言中数组名的性质,下列描述正确的是( ) A. 数组名是变量,可以进行自增(a++)操作 B. 数组名是数组的首地址,是一个常量,不能被修改 C. 数组名可以直接赋值给普通整型变量 D. 数组名代表整个数组的所有元素值 2、已知有定义int a[5] = {1,2,3,4,5}, *p = a;,下列选项中不能正确引用数组元素 a [2] 的是( ) A. a [2] B. *(p+2) C. *(a+2) D. p+2 3、若有定义int a[10]; int *p = a;,且数组 a 的首地址是 2000(int 类型占 4 字节),则执行p++后,p 的值为( ) A. 2004 B. 2001 C. 2002 D. 2010 4、下列关于指针变量和数组名的区别,说法错误的是( ) A. 指针变量是变量,可以被重新赋值指向其他同类型变量 B. 数组名是常量,不能被重新赋值 C. 指针变量可以进行自增、自减操作,数组名不行 D. 指针变量和数组名完全等价,可以任意替换使用 2、 判断题(本题共3题) 1、C 语言中,数组名可以像指针变量一样执行自增操作,比如int a[5]; a++;是合法的。( ) 2、指针变量指向一维数组后,通过*(p+i)的方式可以引用数组的第 i+1 个元素(i 从 0 开始),和下标法a[i]完全等价。( ) 3、可以将一维数组的任意元素的地址赋值给同类型的指针变量,让指针指向该元素。( ) 3、 填空题(本题共2题) 1、C 语言中,一维数组的数组名本质是____,其值固定不能被修改。 2、已知int a[5], *p = a;,则引用数组元素 a [3] 的指针法写法为____,该写法和下标法a[3]完全等价。 4、 读程序写结果题(本题共1题) 1、阅读下面的 C 语言程序,写出程序运行后的输出结果。 【程序代码】 #include <stdio.h> int main() { int arr[4] = {1,3,5,7}; int *p = arr; while(p < arr + 4) { printf("%d ", *p++); } return 0; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(电子工业出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《C语言程序设计》(电子工业出版社)一课一练的第8章的第43练,内容涵盖第8章指针的8.3.1 指针与一维数组。 《C语言程序设计》(电子工业出版社)一课一练 第43练 第8章 指针 8.3.1 指针与一维数组 1、 单项选择题(本题共4小题) 1、关于 C 语言中数组名的性质,下列描述正确的是( ) A. 数组名是变量,可以进行自增(a++)操作 B. 数组名是数组的首地址,是一个常量,不能被修改 C. 数组名可以直接赋值给普通整型变量 D. 数组名代表整个数组的所有元素值 【答案】B 【解析】数组名本质是数组的首地址常量,其值固定不能修改,因此不能进行自增、赋值等操作;数组名仅代表首地址,不是整个数组的元素值,也不能直接赋值给普通整型变量。 2、已知有定义int a[5] = {1,2,3,4,5}, *p = a;,下列选项中不能正确引用数组元素 a [2] 的是( ) A. a [2] B. *(p+2) C. *(a+2) D. p+2 【答案】D 【解析】p+2表示的是数组元素 a [2] 的内存地址,不是元素的值;而*(p+2)、*(a+2)和a[2]都等价于引用 a [2] 的值,因此 D 不能正确引用元素值。 3、若有定义int a[10]; int *p = a;,且数组 a 的首地址是 2000(int 类型占 4 字节),则执行p++后,p 的值为( ) A. 2004 B. 2001 C. 2002 D. 2010 【答案】A 【解析】指针变量的加减运算会根据指向的类型自动调整步长,int 类型占 4 字节,因此 p++ 会让指针的值增加 4,指向数组的下一个元素,2000+4=2004。 4、下列关于指针变量和数组名的区别,说法错误的是( ) A. 指针变量是变量,可以被重新赋值指向其他同类型变量 B. 数组名是常量,不能被重新赋值 C. 指针变量可以进行自增、自减操作,数组名不行 D. 指针变量和数组名完全等价,可以任意替换使用 【答案】D 【解析】指针变量是变量,支持赋值、自增等操作;数组名是常量,不支持这些操作,二者不完全等价,比如不能对数组名执行 a++ 操作,因此 D 的描述错误。 2、 判断题(本题共3题) 1、C 语言中,数组名可以像指针变量一样执行自增操作,比如int a[5]; a++;是合法的。( ) 【答案】× 【解析】数组名是数组的首地址常量,其值固定不能被修改,自增操作会改变其值,因此该语句是非法的,编译会报错。 2、指针变量指向一维数组后,通过*(p+i)的方式可以引用数组的第 i+1 个元素(i 从 0 开始),和下标法a[i]完全等价。( ) 【答案】√ 【解析】C 语言编译时,下标法a[i]会自动转换为*(a+i)的指针形式,二者在执行逻辑和结果上完全一致,都是通过基地址加偏移量访问元素。 3、可以将一维数组的任意元素的地址赋值给同类型的指针变量,让指针指向该元素。( ) 【答案】√ 【解析】指针变量只要指向的类型与数组类型一致,就可以通过&a[i]获取任意元素的地址并赋值给指针,实现对指定数组元素的间接访问。 3、 填空题(本题共2题) 1、C 语言中,一维数组的数组名本质是____,其值固定不能被修改。 【答案】数组的首地址 【解析】数组名代表数组在内存中的起始位置,是一个常量指针,不能进行赋值、自增等修改操作。这一性质保证了数组在内存中的存储位置不会被意外改变,避免程序出现内存访问错误。 2、已知int a[5], *p = a;,则引用数组元素 a [3] 的指针法写法为____,该写法和下标法a[3]完全等价。 【答案】*(p+3) 或 *(a+3) 【解析】指针变量 p 指向数组首地址后,p+3 表示数组第 4 个元素(下标 3)的地址,加上运算符即可访问该元素的值。C 语言编译系统会将下标法自动转换为对应的指针法,二者的执行逻辑完全相同。 4、 读程序写结果题(本题共1题) 1、阅读下面的 C 语言程序,写出程序运行后的输出结果。 【程序代码】 #include <stdio.h> int main() { int arr[4] = {1,3,5,7}; int *p = arr; while(p < arr + 4) { printf("%d ", *p++); } return 0; } 【答案】 程序运行结果: 1 3 5 7 【解析】 指针变量 p 初始指向数组 arr 的首地址,循环条件p < arr + 4保证指针遍历数组的 4 个元素。每次循环先输出*p(当前指针指向的元素值),再执行p++让指针移动到下一个数组元素的地址,最终依次输出数组的所有元素。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

第43练 第8章 指针与一维数组《C语言程序设计》(电子工业出版社)一课一练-第1页
1

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