第33练 单元8 指针变量《C语言程序设计》(高教版第2版)一课一练

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

内容正文:

编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(高教版第2版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《C语言程序设计》(高教版第2版)一课一练的单元8的第33练,内容涵盖单元8“考试系统”的优化的8.2.1 指针变量。 《C语言程序设计》(高教版第2版)一课一练 第33练 单元8 “考试系统”的优化 8.2.1 指针变量 1、 单项选择题(本题共5小题) 1、关于指针的核心概念,下列说法正确的是( ) A. 指针就是变量的数值 B. 指针就是变量的内存地址 C. 指针是专门存储整数的变量 D. 指针只能指向整型变量 【答案】B 【解析】指针本质是内存地址,用来指向特定类型的变量、数组或函数;选项 A 混淆了指针与变量值的概念,选项 C 错误,指针存储的是地址而非普通整数,选项 D 错误,指针可以指向任意数据类型的变量。 2、下列指针变量的定义语句正确的是( ) A. int p; B. int *p; C. int *p = 10; D. *int p; 【答案】B 【解析】定义指针变量需在变量名前加*作为指针声明符;选项 A 是普通整型变量,选项 C 不能直接给指针赋值整数(应赋值地址),选项 D 语法错误,类型名需放在*之前。 3、指针变量作为函数参数时,传递的内容是( ) A. 变量的数值副本 B. 变量的内存地址 C. 指针变量本身 D. 函数的入口地址 【答案】B 【解析】指针作为函数参数属于地址传递,将变量的内存地址传递给形参指针,使形参和实参指向同一片内存空间,形参修改会直接影响实参。 4、已知int a=10; int *p=&a;,下列语句能正确输出变量 a 的值的是( ) A. printf ("% d", p); B. printf ("% d", *p); C. printf ("% d", &p); D. printf ("% d", &a); 【答案】B 【解析】*p是取值运算符,表示获取指针 p 指向的内存单元内容,即变量 a 的值;选项 A 输出指针 p 存储的地址,选项 C 输出指针变量 p 自身的地址,选项 D 输出变量 a 的地址。 5、关于指针变量的赋值规则,下列说法错误的是( ) A. 指针变量的类型必须与指向的变量类型一致 B. 同类型的指针变量之间可以互相赋值 C. 可以直接将整数赋值给指针变量 D. 可以用&运算符获取变量地址赋值给指针变量 【答案】C 【解析】指针变量存储的是内存地址,直接赋值整数会导致指针指向非法内存,引发程序错误;其他选项均符合指针赋值的语法规则。 2、 判断题(本题共4题) 1、指针变量的作用是存储变量的数值。( ) 【答案】× 【解析】指针变量的核心作用是存储变量的内存地址,通过地址可以间接访问变量的内容,而非直接存储变量数值。 2、当指针作为函数参数时,修改形参指针指向的内容,会同步改变主调函数中实参指向的变量值。( ) 【答案】√ 【解析】指针作为函数参数是地址传递,形参和实参指向同一片内存空间,修改形参指向的内容等同于修改实参指向的变量值。 3、定义指针变量时,变量名前的*号表示取指针指向的内容。( ) 【答案】× 【解析】定义指针变量时的*是指针声明符,仅用于表明该变量是指针变量;在引用指针时的*才表示取指针指向的内容。 4、int *p; char a='A'; p=&a;这段代码是合法的。( ) 【答案】× 【解析】指针变量p是指向整型的指针,变量a是字符型,两者类型不匹配,不能将字符型变量的地址赋值给整型指针变量,会触发类型错误。 3、 程序填空题(本题共1题) 1、题目描述:以下程序通过指针作为函数参数实现两个整数的交换功能,请补充缺失代码; #include <stdio.h> // 定义交换函数,形参为指针变量 void swap( (1)____ ) { int temp; // 保存第一个指针指向的变量值 temp = (2)____; *p1 = *p2; *p2 = temp; } int main() { int a, b; // 定义两个整型指针变量 (3)____; printf("请输入两个整数:"); scanf("%d%d", &a, &b); // 让指针指向变量a和b p1 = (4)____; p2 = &b; printf("交换前:a=%d, b=%d ", a, b); // 调用交换函数,传递变量地址 (5)____; printf("交换后:a=%d, b=%d ", a, b); return 0; } 【答案】 (1) int *p1, int *p2 (2) *p1 (3) int *p1, *p2 (4) &a (5) swap (&a, &b) 或 swap (p1, p2) 【解析】 (1) 交换函数需要接收两个整型变量的地址,因此形参定义为两个指向整型的指针变量,保证与实参类型匹配; (2) 临时变量 temp 需先保存*p1的值,避免交换时数据被覆盖,*p1表示取指针 p1 指向的变量内容; (3) 定义两个整型指针变量 p1 和 p2,用于存储变量 a 和 b 的地址; (4) 使用&a获取变量 a 的地址,赋值给指针 p1,使 p1 指向 a; (5) 调用 swap 函数时,既可以直接传递变量的地址&a、&b,也可以传递已经指向 a、b 的指针变量 p1、p2,两种方式均为地址传递,能实现变量值的交换。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《C语言程序设计》(高教版第2版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。 本卷是《C语言程序设计》(高教版第2版)一课一练的单元8的第33练,内容涵盖单元8“考试系统”的优化的8.2.1 指针变量。 《C语言程序设计》(高教版第2版)一课一练 第33练 单元8 “考试系统”的优化 8.2.1 指针变量 1、 单项选择题(本题共5小题) 1、关于指针的核心概念,下列说法正确的是( ) A. 指针就是变量的数值 B. 指针就是变量的内存地址 C. 指针是专门存储整数的变量 D. 指针只能指向整型变量 2、下列指针变量的定义语句正确的是( ) A. int p; B. int *p; C. int *p = 10; D. *int p; 3、指针变量作为函数参数时,传递的内容是( ) A. 变量的数值副本 B. 变量的内存地址 C. 指针变量本身 D. 函数的入口地址 4、已知int a=10; int *p=&a;,下列语句能正确输出变量 a 的值的是( ) A. printf ("% d", p); B. printf ("% d", *p); C. printf ("% d", &p); D. printf ("% d", &a); 5、关于指针变量的赋值规则,下列说法错误的是( ) A. 指针变量的类型必须与指向的变量类型一致 B. 同类型的指针变量之间可以互相赋值 C. 可以直接将整数赋值给指针变量 D. 可以用&运算符获取变量地址赋值给指针变量 2、 判断题(本题共4题) 1、指针变量的作用是存储变量的数值。( ) 2、当指针作为函数参数时,修改形参指针指向的内容,会同步改变主调函数中实参指向的变量值。( ) 3、定义指针变量时,变量名前的*号表示取指针指向的内容。( ) 4、int *p; char a='A'; p=&a;这段代码是合法的。( ) 3、 程序填空题(本题共1题) 1、题目描述:以下程序通过指针作为函数参数实现两个整数的交换功能,请补充缺失代码; #include <stdio.h> // 定义交换函数,形参为指针变量 void swap( (1)____ ) { int temp; // 保存第一个指针指向的变量值 temp = (2)____; *p1 = *p2; *p2 = temp; } int main() { int a, b; // 定义两个整型指针变量 (3)____; printf("请输入两个整数:"); scanf("%d%d", &a, &b); // 让指针指向变量a和b p1 = (4)____; p2 = &b; printf("交换前:a=%d, b=%d ", a, b); // 调用交换函数,传递变量地址 (5)____; printf("交换后:a=%d, b=%d ", a, b); return 0; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

第33练 单元8 指针变量《C语言程序设计》(高教版第2版)一课一练-第1页
1

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