第42练 第8章 指针的运算与引用(算术运算、关系运算)《C语言程序设计》(电子工业出版社)一课一练

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

内容正文:

编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(电子工业出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《C语言程序设计》(电子工业出版社)一课一练的第8章的第42练,内容涵盖第8章指针的8.2.3~8.2.5 指针的运算与引用(算术运算、关系运算)。 《C语言程序设计》(电子工业出版社)一课一练 第42练 第8章 指针 8.2.3~8.2.5 指针的运算与引用(算术运算、关系运算) 1、 单项选择题(本题共4小题) 1、已知int a=10, *p=&a;,下列语句中与a += 5;等价的是( ) A. p += 5; B. *p += 5; C. &a += 5; D. a = *p + 5; 2、若有float *pf;,且pf的初始地址为 0xFFBE,sizeof(float)=4,则pf+2的地址值为( ) A. 0xFFBF B. 0xFFC0 C. 0xFFC6 D. 0xFFC2 3、下列关于指针变量赋值的语句中,正确的是( ) A. int a=5; int *p=a; B. int a=5; int *p=&a; C. int a=5; int *p=*a; D. int a=5; int *p=&*a; 4、两个指针变量可以进行关系运算的前提是( ) A. 指向同一数组的元素 B. 指向任意类型的变量 C. 指向不同类型的数组 D. 都是全局指针变量 2、 判断题(本题共3题) 1、指向普通单个变量的指针变量,进行p++的算术运算具有实际意义。( ) 2、在 C 语言中,*符号有两种作用:一是声明指针变量的类型符号,二是访问指针指向内容的运算符。( ) 3、任意两个指针变量都可以进行p1 - p2的运算,结果为整数。( ) 3、 填空题(本题共2题) 1、若指针变量p的定义为datatype *p;,初始地址为DS,则p+n的地址计算公式为____。 2、取地址运算符&的作用是____,访问地址运算符*的作用是____。 4、 读程序写结果题(本题共1题) 1、阅读下面的 C 语言程序,写出程序运行后的输出结果。 【程序代码】 #include <stdio.h> int main() { int nums[] = {15, 25, 35, 45}; int *p = nums + 1; printf("%d, %d", *p, *(p + 1)); return 0; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(电子工业出版社)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《C语言程序设计》(电子工业出版社)一课一练的第8章的第42练,内容涵盖第8章指针的8.2.3~8.2.5 指针的运算与引用(算术运算、关系运算)。 《C语言程序设计》(电子工业出版社)一课一练 第42练 第8章 指针 8.2.3~8.2.5 指针的运算与引用(算术运算、关系运算) 1、 单项选择题(本题共4小题) 1、已知int a=10, *p=&a;,下列语句中与a += 5;等价的是( ) A. p += 5; B. *p += 5; C. &a += 5; D. a = *p + 5; 【答案】B 【解析】*p表示指针p指向的变量a的内容,因此*p +=5等同于直接对a进行加 5 操作;选项 A 是指针地址偏移,选项 C 中&a是常量地址不能运算,选项 D 是赋值操作仅执行一次,与a+=5的等价性不同,故 B 正确。 2、若有float *pf;,且pf的初始地址为 0xFFBE,sizeof(float)=4,则pf+2的地址值为( ) A. 0xFFBF B. 0xFFC0 C. 0xFFC6 D. 0xFFC2 【答案】C 【解析】指针加整数时,偏移量为n×sizeof(指针类型),因此pf+2 = 0xFFBE + 2×4 = 0xFFC6,选项 C 正确,其他选项未遵循指针算术运算的类型匹配规则。 3、下列关于指针变量赋值的语句中,正确的是( ) A. int a=5; int *p=a; B. int a=5; int *p=&a; C. int a=5; int *p=*a; D. int a=5; int *p=&*a; 【答案】B 【解析】指针变量需要存储变量的地址,&a是变量a的地址,赋值给指针p是正确的;选项 A 将变量值赋给指针,类型不匹配;选项 C 用*a取变量值,同样类型错误;选项 D&*a等价于a,依然是赋值变量值,故 B 正确。 4、两个指针变量可以进行关系运算的前提是( ) A. 指向同一数组的元素 B. 指向任意类型的变量 C. 指向不同类型的数组 D. 都是全局指针变量 【答案】A 【解析】只有指向同一数组的指针,关系运算(如p1>p2)才能表示数组元素的位置关系;指向不同数组或不同类型变量的指针,关系运算无实际意义,故 A 正确。 2、 判断题(本题共3题) 1、指向普通单个变量的指针变量,进行p++的算术运算具有实际意义。( ) 【答案】× 【解析】指针的算术运算仅对数组指针有意义,指向单个变量的指针自增后,会指向未知的内存区域,访问该区域可能导致程序错误,因此该运算无实际意义。 2、在 C 语言中,*符号有两种作用:一是声明指针变量的类型符号,二是访问指针指向内容的运算符。( ) 【答案】√ 【解析】定义指针时int *p;中的*是类型声明符号,引用时x=*p;中的*是访问运算符,两者含义不同,该表述符合指针的语法规则。 3、任意两个指针变量都可以进行p1 - p2的运算,结果为整数。( ) 【答案】× 【解析】只有指向同一数组的两个指针,p1-p2的结果才是两元素的下标差值(整数);指向不同数组或类型的指针,该运算无意义,无法得到有效结果。 3、 填空题(本题共2题) 1、若指针变量p的定义为datatype *p;,初始地址为DS,则p+n的地址计算公式为____。 【答案】DS + n × sizeof(datatype) 【解析】指针加减整数的偏移量由指向的变量类型决定,sizeof(datatype)是该类型变量占用的字节数,偏移n个元素时,地址需增加n倍的类型字节数。这个公式确保指针能正确指向数组的下一个元素,符合指针算术运算的核心规则。 2、取地址运算符&的作用是____,访问地址运算符*的作用是____。 【答案】获取变量的内存首地址;获取指针变量指向的内存单元中的内容 【解析】&用于将变量的地址赋值给指针变量,是指针与普通变量建立关联的关键运算符。*则是通过指针间接操作目标变量内容的核心运算符,实现了指针的 "间接访问" 功能。 4、 读程序写结果题(本题共1题) 1、阅读下面的 C 语言程序,写出程序运行后的输出结果。 【程序代码】 #include <stdio.h> int main() { int nums[] = {15, 25, 35, 45}; int *p = nums + 1; printf("%d, %d", *p, *(p + 1)); return 0; } 【答案】 程序运行结果: 25, 35 【解析】 nums是数组首地址,nums+1指向数组的第二个元素(值为 25),因此*p输出 25;p+1指向数组的第三个元素(值为 35),*(p+1)输出 35。指针的偏移量由int类型的字节数决定,确保每次移动都指向数组的下一个有效元素。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

第42练 第8章 指针的运算与引用(算术运算、关系运算)《C语言程序设计》(电子工业出版社)一课一练-第1页
1

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