内容正文:
编写说明:2026版《软件与应用技术考纲百套卷》依据2026版山东省《软件与应用技术类专业知识考试标准》编写,本套试卷共100份,分为三个部分,第一部分是知识点训练卷,每个知识点2份试卷共76份,第二部分是常考题训练卷,每个知识模块2份训练卷共12份,第三个部分是专业综合训练卷,参考历年软件与应用技术类专业真题试卷,编写了12份。
本试卷是2026版《软件与应用技术考纲百套卷》的第11卷,按知识模块1 C语言程序设计知识6.指针的两点范围要求编写。其两点要求是:
(1)了解指针变量的定义及引用。
(2)理解指向数组的指针变量。
2026版山东省《软件与应用技术考纲百套卷》 第11卷
知识模块1 C语言程序设计知识
6.指针 知识点训练卷
一、单项选择题(本大题共20小题,每题3分,共60分)
1. 在C语言中,指针变量存储的是( )
A. 变量的值
B. 变量的地址
C. 变量的类型
D. 变量的长度
【答案】B
2. 若有说明:int a=2,*p=&a,*q=p;,则一下非法的赋值语句是( )
A.p=q;
B.*p=*q;
C.a=*q;
D.q=a;
【答案】D
3. 已有定义int a=2,*p1=&a,*p2=&a;下面不能正确执行的赋值语句是( )
A.a=*p1+*p2;
B.p1=a;
C.p1=p2;
D.a=*p1*(*p2);
【答案】B
4. 变量的指针,其含义是指该变量的( )
A. 值
B. 地址
C. 名
D. 一个标志
【答案】B
5. 在C语言中,空指针的值是( )
A. 0
B. 1
C. -1
D. NULL
【答案】D
6. 已知在程序中定义了如下的语句:
int *p1,*p2;
in tk;
p1=&k;p2=&k;
则下列语句中不能正确执行的是( )
A.k=*p1+*p2;
B.p2=k;
C.p1=p2;
D.k=*p1*(*p2);
【答案】B
7. 假设有以下声明:`int arr[10], *p;`,下列哪个表达式是正确的?( )
A. p = arr;
B. p = &arr[0];
C. p = &arr;
D. p = arr[0];
【答案】A
8.若有以下定义和语句,则对 `a` 数组元素地址的正确引用为( )。
int a[2][3], (*p)[3];
p = a;
A. `*(p+2)`
B. `p[2]`
C. `p[1]+1`
D. `(p+1)+2`
【答案】C
9.若有说明语句:int a,b,c,&d=&c;,则能正确从键盘读入三个整数分别赋给变量a,b,c的语句是( )
A.scnaf("%d%d%d",&a,&b,d);
B.scanf("%d%d%d",a,b,d);
C.scanf("%d%d%d",&a,&b,&d);
D.scanf("%d%d%d",a,b,*d);
【答案】A
10.若有语句int *p,a=10;p=&a;下面均代表地址的一组选项是( )
A.a,p,*&a;
B.&*a,&a,*p;
C.*&p,*q,&a;
D.&a,&*p,p;
【答案】D
11.对于类型相同的指针变量,不能进行哪种运算?( )
A.+ B.- C.= D.==
【答案】A
12.指针变量p1,p2类型相同,要使p1,p2指向同一变量,哪个语句是正确的( ).
A.p2=*&p1; B.p2=**p1; C.p2=&p1; D.p2=*p1
【答案】A
13.假设整型变量a的值为2,a的地址为2000,若欲使p为指向a的指针变量,则以下赋值正确的是( )
A.&a=3;
B.*p=2;
C.*p=2000;
D.p=&a;
【答案】D
14.假定a是一个二维数组,则a[i][j]的指针访问方式为( ).
A.*(a+i+j)
B.*(*(a+i)+j)
C.*(a+i)+j
D.*a+i+j
【答案】B
15.设有如下定义:
char *aa[2]={“abcd”,”PQMN”};
则下列说法中正确的是( ).
A.aa数组元素的值分别是”abcd”、”PQMN”
B.aa是指针变量,它指向含有两个数组元素的字符型一维数组
C.aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
D.aa数组的两个元素分别存放了字符’a’和’P’的地址
【答案】D
16.若有定义int n=2,*p=&n,*q=p;,则一下非法的赋值语句是( )
A.p=q;
B.*p=*q;
C.n=*q;
D.p=n;
【答案】D
17.若a是整型变量,则下列表达式能得到a的值的合法形式是( ).
A.&(a+5) B.*a C.&*a D.*&a
【答案】D
18.设p1和p2均为指向一个int型数组的指针变量,x为int型变量,则以下不能正确执行的赋值语句是( )
A.x=*p1+*p2;
B.p2=x;
C.p1=p2;
D.x=*p1*(*p2);
【答案】B
19.若有int *p1, *p2,k; 不正确的语句是( ).
A. p1=&k B. p2=p1
C. *p1=k+12 D. k=p1+p2
【答案】D
20.若有定义int *p,m=6,n;以下正确的程序段是( )
A.p=&n;scanf(“%d”,&p);
B.p=&n;scanf(“%d”,*p);
C.p=&n;*p=m;
D.scanf(“%d”,&n);*p=n;
【答案】C
二、简答题(本大题共5小题,每题6分,共30分)
1. 简述指针的概念及其在C语言中的作用。
【答案】指针是一个变量,用于存储内存地址。在C语言中,指针用于间接访问内存中的数据,实现对数据的动态分配和操作。通过指针,可以实现对变量的间接访问和修改,以及对数组和字符串的高效操作。
2. 指针变量的声明方式。
【答案】指针变量的声明方式是在数据类型后面加上星号(*),例如:`int *p;` 这里声明了一个指向整型的指针变量 `p`。
3. 简述取地址操作符(&)和间接访问操作符(*)的作用。
【答案】取地址操作符(&)用于获取变量的内存地址,例如:`&a` 获取变量 `a` 的地址。间接访问操作符(*)用于通过指针访问其指向的变量,例如:`*p` 访问指针 `p` 所指向的变量。
4. 指针与数组的关联。
【答案】在C语言中,数组名表示数组首元素的地址。指针可以用来访问和操作数组元素,通过指针的算术运算,可以遍历数组元素。此外,指针还可以用于动态分配数组。
5. 指针数组和数组指针的区别。
【答案】指针数组是一个数组,其元素为指针类型,例如:`int *p[10];` 声明了一个包含10个整型指针的数组。数组指针是一个指向数组的指针,例如:`int (*p)[10];` 声明了一个指向包含10个整数的数组的指针。
三、编程题(本大题共1小题,共10分)
1. 编写程序,输入两个数,然后交换并输出。
【答案】
#include<stdio.h>
main(){
int a,b,c,*p1=&a,*p2=&b;
scanf("%d%d",p1,p2);
c=*p1;
*p1=*p2;
*p2=c;
printf("a=%d,b=%d",*p1,*p2);
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$
编写说明:2026版《软件与应用技术考纲百套卷》依据2026版山东省《软件与应用技术类专业知识考试标准》编写,本套试卷共100份,分为三个部分,第一部分是知识点训练卷,每个知识点2份试卷共76份,第二部分是常考题训练卷,每个知识模块2份训练卷共12份,第三个部分是专业综合训练卷,参考历年软件与应用技术类专业真题试卷,编写了12份。
本试卷是2026版《软件与应用技术考纲百套卷》的第11卷,按知识模块1 C语言程序设计知识6.指针的两点范围要求编写。其两点要求是:
(1)了解指针变量的定义及引用。
(2)理解指向数组的指针变量。
2026版山东省《软件与应用技术考纲百套卷》 第11卷
知识模块1 C语言程序设计知识
6.指针 知识点训练卷
一、单项选择题(本大题共20小题,每题3分,共60分)
1. 在C语言中,指针变量存储的是( )
A. 变量的值
B. 变量的地址
C. 变量的类型
D. 变量的长度
2. 若有说明:int a=2,*p=&a,*q=p;,则一下非法的赋值语句是( )
A.p=q;
B.*p=*q;
C.a=*q;
D.q=a;
3. 已有定义int a=2,*p1=&a,*p2=&a;下面不能正确执行的赋值语句是( )
A.a=*p1+*p2;
B.p1=a;
C.p1=p2;
D.a=*p1*(*p2);
4. 变量的指针,其含义是指该变量的( )
A. 值
B. 地址
C. 名
D. 一个标志
5. 在C语言中,空指针的值是( )
A. 0
B. 1
C. -1
D. NULL
6. 已知在程序中定义了如下的语句:
int *p1,*p2;
in tk;
p1=&k;p2=&k;
则下列语句中不能正确执行的是( )
A.k=*p1+*p2;
B.p2=k;
C.p1=p2;
D.k=*p1*(*p2);
7. 假设有以下声明:`int arr[10], *p;`,下列哪个表达式是正确的?( )
A. p = arr;
B. p = &arr[0];
C. p = &arr;
D. p = arr[0];
8.若有以下定义和语句,则对 `a` 数组元素地址的正确引用为( )。
int a[2][3], (*p)[3];
p = a;
A. `*(p+2)`
B. `p[2]`
C. `p[1]+1`
D. `(p+1)+2`
9.若有说明语句:int a,b,c,&d=&c;,则能正确从键盘读入三个整数分别赋给变量a,b,c的语句是( )
A.scnaf("%d%d%d",&a,&b,d);
B.scanf("%d%d%d",a,b,d);
C.scanf("%d%d%d",&a,&b,&d);
D.scanf("%d%d%d",a,b,*d);
10.若有语句int *p,a=10;p=&a;下面均代表地址的一组选项是( )
A.a,p,*&a;
B.&*a,&a,*p;
C.*&p,*q,&a;
D.&a,&*p,p;
11.对于类型相同的指针变量,不能进行哪种运算?( )
A.+ B.- C.= D.==
12.指针变量p1,p2类型相同,要使p1,p2指向同一变量,哪个语句是正确的( ).
A.p2=*&p1; B.p2=**p1; C.p2=&p1; D.p2=*p1
13.假设整型变量a的值为2,a的地址为2000,若欲使p为指向a的指针变量,则以下赋值正确的是( )
A.&a=3;
B.*p=2;
C.*p=2000;
D.p=&a;
14.假定a是一个二维数组,则a[i][j]的指针访问方式为( ).
A.*(a+i+j)
B.*(*(a+i)+j)
C.*(a+i)+j
D.*a+i+j
15.设有如下定义:
char *aa[2]={“abcd”,”PQMN”};
则下列说法中正确的是( ).
A.aa数组元素的值分别是”abcd”、”PQMN”
B.aa是指针变量,它指向含有两个数组元素的字符型一维数组
C.aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
D.aa数组的两个元素分别存放了字符’a’和’P’的地址
16.若有定义int n=2,*p=&n,*q=p;,则一下非法的赋值语句是( )
A.p=q;
B.*p=*q;
C.n=*q;
D.p=n;
17.若a是整型变量,则下列表达式能得到a的值的合法形式是( ).
A.&(a+5) B.*a C.&*a D.*&a
18.设p1和p2均为指向一个int型数组的指针变量,x为int型变量,则以下不能正确执行的赋值语句是( )
A.x=*p1+*p2;
B.p2=x;
C.p1=p2;
D.x=*p1*(*p2);
19.若有int *p1, *p2,k; 不正确的语句是( ).
A. p1=&k B. p2=p1
C. *p1=k+12 D. k=p1+p2
20.若有定义int *p,m=6,n;以下正确的程序段是( )
A.p=&n;scanf(“%d”,&p);
B.p=&n;scanf(“%d”,*p);
C.p=&n;*p=m;
D.scanf(“%d”,&n);*p=n;
二、简答题(本大题共5小题,每题6分,共30分)
1. 简述指针的概念及其在C语言中的作用。
2. 指针变量的声明方式。
3. 简述取地址操作符(&)和间接访问操作符(*)的作用。
4. 指针与数组的关联。
5. 指针数组和数组指针的区别。
三、编程题(本大题共1小题,共10分)
1. 编写程序,输入两个数,然后交换并输出。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$