第11卷 指针变量与数组指针 《C语言程序设计知识》山东省(春季高考)《软件与应用技术类考纲百套卷》

2026-08-13
| 2份
| 12页
| 5人阅读
| 0人下载

资源信息

学段 中职
学科 职教专业课
课程 C语言程序设计
教材版本 -
年级 -
章节 -
类型 题集-专项训练
知识点 数组,指针
使用场景 中职复习
学年 2027-2028
地区(省份) 山东省
地区(市) -
地区(区县) -
文件格式 ZIP
文件大小 173 KB
发布时间 2026-08-13
更新时间 2026-08-13
作者 xy06893
品牌系列 学易金卷·考纲百套卷
审核时间 2026-08-13
下载链接 https://m.zxxk.com/soft/59181726.html
价格 3.00储值(1储值=1元)
来源 学科网

内容正文:

编写说明:2027版山东省春季高考统一考试软件与应用技术类《考纲百套卷》,依据《软件与应用技术类专业知识考试标准》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共85份试卷,其中知识训练卷48份、专题训练卷25份、课程综合卷12份。 本试卷是第11卷,为知识训练卷,按《C语言程序设计知识》中“指针变量与数组指针”范围和要求编写。具体内容为:(1)理解指针变量的定义及引用。(2)掌握指向数组的指针变量。 山东省春季高考统一考试 软件与应用技术类《考纲百套卷》 第11卷 C语言程序设计知识——指针变量与数组指针 (考试时间:45分钟 满分:100分) 一、选择题(共20题,每题3分,共60分) 1.若变量x为int类型,指针p指向x的正确赋值是(  ) A.*p = &x B.p = x C.&p = x D.p = &x 2.若p为有效的int指针,表达式*p的含义是(  ) A.p所指向整数的值 B.p的地址 C.p所占字节数 D.p保存的地址 3.下列语句中,正确的指针变量定义是(  ) A.int p*; B.int *p; C.*int p; D.pointer int p; 4.执行下列程序后,输出结果是( ) int x = 5; int *p = &x; printf("%d", *p); A.地址值 B.0 C.5 D.x 5.执行下列程序后,x的值是( ) int x = 3; int *p = &x; *p = 8; A.3 B.8 C.地址值 D.5 6.表达式&x表示(  ) A.指针p的值 B.变量x的类型 C.变量x的值 D.变量x的地址 7.若int x = 6; int *p = &x;,则表达式&p表示(  ) A.x的地址 B.p所指向的值 C.指针变量p自身的地址 D.x的值 8.若定义int a[4] = {10, 20, 30, 40}; int *p = a;,则*p的值是(  ) A.10 B.20 C.数组长度4 D.30 9.若定义int a[4] = {10, 20, 30, 40}; int *p = a;,则*(p + 2)的值是(  ) A.20 B.30 C.10 D.40 10.若定义int a[3] = {1, 2, 3}; int *p = a;,执行p++后,p指向(  ) A.a[3] B.a[2] C.a[1] D.a[0] 11.若定义int a[3] = {1, 2, 3}; int *p = &a[1];,则*p的值是(  ) A.2 B.1 C.3 D.a[1]的地址 12.执行下列程序后,输出结果是( ) int a[3] = {2, 4, 6}; int *p = a; printf("%d", *(p + 1)); A.6 B.1 C.2 D.4 13.下列语句中,能把指针p指向数组a的第3个元素的是(  ) A.p = &a[2]; B.*p = a[2]; C.&p = a[2]; D.p = a[2]; 14.若定义int a[4] = {1, 2, 3, 4}; int *p = &a[3];,则p指向的元素值是(  ) A.2 B.3 C.4 D.1 15.若定义int x = 7; int *p = &x;,下列操作会把x改为9的是(  ) A.&p = 9; B.x = &p; C.p = 9; D.*p = 9; 16.若定义int a[3] = {3, 6, 9}; int *p = a;,则p[1]的值是(  ) A.9 B.6 C.3 D.1 17.下列关于数组名和指针的说法正确的是(  ) A.数组名在表达式中通常表示首元素地址 B.指针不能指向数组元素 C.数组名可以直接被赋值 D.数组名总是普通变量 18.执行下列程序后,输出结果是( ) int a[3] = {5, 8, 11}; int *p = &a[0]; p = p + 2; printf("%d", *p); A.2 B.5 C.8 D.11 19.若定义int a[2][2] = {{1, 2}, {3, 4}}; int (*p)[2] = a;,则p[1][0]的值是(  ) A.2 B.4 C.3 D.1 20.执行下列程序后,输出结果是( ) int x = 4; int *p = &x; printf("%d", *p + 2); A.4 B.6 C.2 D.地址值 二、简答题(共2题,每题10分,共20分) 1.阅读程序,写出程序的输出结果。 #include <stdio.h> int main( ) { int a[4] = {2, 4, 6, 8}; int *p = a; printf("%d %d ", *p, *(p + 2)); return 0; } 2.阅读程序,写出程序的输出结果。 #include <stdio.h> int main( ) { int x = 5; int *p = &x; *p = *p + 3; printf("%d %d ", x, *p); return 0; } 三、案例分析题(共1题,共10分) 1.下面程序用于输出数组a的第2个元素,但程序中有一处错误,请指出并改正。 #include <stdio.h> int main( ) { int a[3] = {10, 20, 30}; int *p = a; printf("%d ", *(p + 2)); return 0; } 四、综合应用题(共1题,共10分) 1.编写程序:输入5个整数存入数组,使用指针变量遍历数组并求出所有元素的和,最后输出结果。     原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 编写说明:2027版山东省春季高考统一考试软件与应用技术类《考纲百套卷》,依据《软件与应用技术类专业知识考试标准》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共85份试卷,其中知识训练卷48份、专题训练卷25份、课程综合卷12份。 本试卷是第11卷,为知识训练卷,按《C语言程序设计知识》中“指针变量与数组指针”范围和要求编写。具体内容为:(1)理解指针变量的定义及引用。(2)掌握指向数组的指针变量。 山东省春季高考统一考试 软件与应用技术类《考纲百套卷》 第11卷 C语言程序设计知识——指针变量与数组指针 (考试时间:45分钟 满分:100分) 一、选择题(共20题,每题3分,共60分) 1.若变量x为int类型,指针p指向x的正确赋值是(  ) A.*p = &x B.p = x C.&p = x D.p = &x 【答案】D 【解析】p保存地址,x的地址用&x表示,因此p=&x正确;*p表示所指对象,不能用来接收地址。 2.若p为有效的int指针,表达式*p的含义是(  ) A.p所指向整数的值 B.p的地址 C.p所占字节数 D.p保存的地址 【答案】A 【解析】一元*对指针进行解引用,得到p所指向对象的值。 3.下列语句中,正确的指针变量定义是(  ) A.int p*; B.int *p; C.*int p; D.pointer int p; 【答案】B 【解析】C语言中int *p表示p是指向int类型数据的指针变量。 4.执行下列程序后,输出结果是( ) int x = 5; int *p = &x; printf("%d", *p); A.地址值 B.0 C.5 D.x 【答案】C 【解析】p指向x,*p取得x的值5,%d输出整数5。 5.执行下列程序后,x的值是( ) int x = 3; int *p = &x; *p = 8; A.3 B.8 C.地址值 D.5 【答案】B 【解析】*p是x的别名,通过*p赋值8就是把x修改为8。 6.表达式&x表示(  ) A.指针p的值 B.变量x的类型 C.变量x的值 D.变量x的地址 【答案】D 【解析】取地址运算符&作用于变量时,得到该变量在内存中的地址。 7.若int x = 6; int *p = &x;,则表达式&p表示(  ) A.x的地址 B.p所指向的值 C.指针变量p自身的地址 D.x的值 【答案】C 【解析】p是一个指针变量,&p表示指针变量p自身的地址;*p才表示x的值。 8.若定义int a[4] = {10, 20, 30, 40}; int *p = a;,则*p的值是(  ) A.10 B.20 C.数组长度4 D.30 【答案】A 【解析】数组名a在表达式中表示首元素a[0]的地址,p指向a[0],所以*p为10。 9.若定义int a[4] = {10, 20, 30, 40}; int *p = a;,则*(p + 2)的值是(  ) A.20 B.30 C.10 D.40 【答案】B 【解析】p指向a[0],p+2指向a[2],因此*(p+2)取得30。 10.若定义int a[3] = {1, 2, 3}; int *p = a;,执行p++后,p指向(  ) A.a[3] B.a[2] C.a[1] D.a[0] 【答案】C 【解析】p原来指向a[0],自增后按int类型的一个元素移动,指向a[1]。 11.若定义int a[3] = {1, 2, 3}; int *p = &a[1];,则*p的值是(  ) A.2 B.1 C.3 D.a[1]的地址 【答案】A 【解析】p保存a[1]的地址,*p取得a[1]的值2。 12.执行下列程序后,输出结果是( ) int a[3] = {2, 4, 6}; int *p = a; printf("%d", *(p + 1)); A.6 B.1 C.2 D.4 【答案】D 【解析】p+1指向数组第二个元素a[1],解引用后得到4。 13.下列语句中,能把指针p指向数组a的第3个元素的是(  ) A.p = &a[2]; B.*p = a[2]; C.&p = a[2]; D.p = a[2]; 【答案】A 【解析】指针需要保存地址,数组第3个元素a[2]的地址为&a[2]。 14.若定义int a[4] = {1, 2, 3, 4}; int *p = &a[3];,则p指向的元素值是(  ) A.2 B.3 C.4 D.1 【答案】C 【解析】p保存a[3]的地址,*p取得数组第四个元素的值4。 15.若定义int x = 7; int *p = &x;,下列操作会把x改为9的是(  ) A.&p = 9; B.x = &p; C.p = 9; D.*p = 9; 【答案】D 【解析】*p表示p所指向的x,通过*p=9可以修改x的值。 16.若定义int a[3] = {3, 6, 9}; int *p = a;,则p[1]的值是(  ) A.9 B.6 C.3 D.1 【答案】B 【解析】指针也可以使用下标形式访问,p[1]等价于*(p+1),取得a[1]的值6。 17.下列关于数组名和指针的说法正确的是(  ) A.数组名在表达式中通常表示首元素地址 B.指针不能指向数组元素 C.数组名可以直接被赋值 D.数组名总是普通变量 【答案】A 【解析】在多数表达式中,数组名会转换为指向首元素的地址;指针可以指向数组元素,但数组名本身不能作为普通变量被重新赋值。 18.执行下列程序后,输出结果是( ) int a[3] = {5, 8, 11}; int *p = &a[0]; p = p + 2; printf("%d", *p); A.2 B.5 C.8 D.11 【答案】D 【解析】p从a[0]移动两个元素后指向a[2],*p的值为11。 19.若定义int a[2][2] = {{1, 2}, {3, 4}}; int (*p)[2] = a;,则p[1][0]的值是(  ) A.2 B.4 C.3 D.1 【答案】C 【解析】p是指向含2个int元素的一行的指针,p[1][0]等价于a[1][0],值为3。 20.执行下列程序后,输出结果是( ) int x = 4; int *p = &x; printf("%d", *p + 2); A.4 B.6 C.2 D.地址值 【答案】B 【解析】*p取得x的值4,*p+2的结果为6,因此输出6。 二、简答题(共2题,每题10分,共20分) 1.阅读程序,写出程序的输出结果。 #include <stdio.h> int main( ) { int a[4] = {2, 4, 6, 8}; int *p = a; printf("%d %d ", *p, *(p + 2)); return 0; } 【答案】输出:2 6 【解析】p指向a[0],所以*p为2;p+2指向a[2],*(p+2)为6。 2.阅读程序,写出程序的输出结果。 #include <stdio.h> int main( ) { int x = 5; int *p = &x; *p = *p + 3; printf("%d %d ", x, *p); return 0; } 【答案】输出:8 8 【解析】p指向x,*p与x表示同一个整数对象;执行*p=*p+3后x和*p都为8。 三、案例分析题(共1题,共10分) 1.下面程序用于输出数组a的第2个元素,但程序中有一处错误,请指出并改正。 #include <stdio.h> int main( ) { int a[3] = {10, 20, 30}; int *p = a; printf("%d ", *(p + 2)); return 0; } 【答案】将printf("%d ", *(p + 2));改为printf("%d ", *(p + 1));。 【解析】p指向数组首元素a[0],p+1指向a[1],即数组第2个元素;原程序使用p+2,输出的是第3个元素30。 四、综合应用题(共1题,共10分) 1.编写程序:输入5个整数存入数组,使用指针变量遍历数组并求出所有元素的和,最后输出结果。 【答案】 #include <stdio.h> int main( ) { int a[5]; int i; int sum = 0; int *p = a; for (i = 0; i < 5; i++) { scanf("%d", p + i); } for (i = 0; i < 5; i++) { sum += *(p + i); } printf("%d ", sum); return 0; } 【解析】p指向数组首元素,p+i指向第i个元素的地址,*(p+i)取得对应元素的值;程序先读入5个整数,再通过指针表达式累加并输出总和。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

第11卷 指针变量与数组指针 《C语言程序设计知识》山东省(春季高考)《软件与应用技术类考纲百套卷》
1
第11卷 指针变量与数组指针 《C语言程序设计知识》山东省(春季高考)《软件与应用技术类考纲百套卷》
2
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。