内容正文:
编写说明:2026版《软件与应用技术考纲百套卷》依据2026版山东省《软件与应用技术类专业知识考试标准》编写,本套试卷共100份,分为三个部分,第一部分是知识点训练卷,每个知识点2份试卷共76份,第二部分是常考题训练卷,每个知识模块2份训练卷共12份,第三个部分是专业综合训练卷,参考历年软件与应用技术类专业真题试卷,编写了12份。
本试卷是2026版《软件与应用技术考纲百套卷》的第12卷,按知识模块1 C语言程序设计知识6.指针的两点范围要求编写。其两点要求是:
(1)了解指针变量的定义及引用。
(2)理解指向数组的指针变量。
2026版山东省《软件与应用技术考纲百套卷》 第12卷
知识模块1 C语言程序设计知识
6.指针 知识点训练卷
一、单项选择题(本大题共20小题,每题3分,共60分)
1. C语言中,下列哪个关键字用于声明变量指向函数?( )
A. function
B. func
C. pointer
D. void
2.设 `pl` 和 `p2` 均为指向一个 `int` 型数组的指针变量,`x` 为 `int` 型变量,则以下不能正确执行的赋值语句是( )。
A. `x=*pl+*p2;`
B. `p2=x;`
C. `pl=p2;`
D. `x=*pl*(*p2);`
3.以下程序段的输出结果是( )
int a[]={1,2,3,4,5,6,7,8,9,0},*p;p=a;
printf("%d
",*p+9);
A.0 B.1 C.10 D.9
4.以下程序段的输出结果是( )
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
printf("%d
",*(p+2));
A.3
B.4
C.1
D.2
5.程序int a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;printf("%d",*--p);的输出结果是( )
A.非法
B.a[4]的地址
C.5
D.3
6.若有定义 `int*p,m=6,n;` 以下正确的程序段是( )。
A. `p=&n;scanf("%d",&p);`
B. `p=&n;scanf("%d",p);`
C. `scanf("%d",&n);*p=n;`
D. `p=&n;*p=m;`
7.若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是( )
A.p+1
B.a+1
C.a++
D.++p
8. 设有以下语句int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则_____不是对a数组元素的正确引用,其中(0<=i<10)
A.a[p-a]
B.*(&a[i])
C.p[i]
D.*(*(a+i))
9. 假设有以下声明:`int a, *p = &a;`,下列哪个表达式是正确的?( )
A. *p = &a;
B. p = *a;
C. *p = a;
D. &p = a;
10. 若有如下定义:int a[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0<=i<=9,则为数组元素a[i]不正确的引用是( )
A.*(p+i)
B.*(a+i)
C.p[i]
D.*a[i]
11. 以下程序段的输出结果是( )
int i,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];
for(i=0;i<4;i+=2)
printf("%d",p[i]);
A.5 2
B.5 1
C.5 3
D.9 7
12. 下列哪个操作符用于访问结构体成员?( )
A. .
B. ->
C. *
D. &
13. 假设有以下声明:`int arr[10], *p = arr;`,下列哪个表达式是正确的?( )
A. *(p + 2) = 5;
B. *(2 + p) = 5;
C. *p(2) = 5;
D. p(2) = 5;
14. 下列哪个函数用于释放动态分配的内存?( )
A. free()
B. delete
C. dealloc()
D. release()
15. 在C语言中,下列哪个关键字用于声明一个指向字符的指针?( )
A. char
B. int
C. float
D. void
16. 设int a[3][2]={2,4,6,8,10};则*(a[2]+1)的值是( )
A. 0
B.1
C. 2
D. 3
17. 下列哪个操作符用于对指针进行加法操作?( )
A. ++
B. --
C. +=
D. -=
18. 在C语言中,下列哪个关键字用于声明一个指向数组的指针?( )
A. array
B. arr
C. pointer
D. void
19. 假设有以下声明:`int arr[10], *p = &arr[0];`,下列哪个表达式是正确的?( )
A. p = arr + 1;
B. p = &arr + 1;
C. p = arr[1];
D. p = &arr[1];
20. 下列哪个操作符用于对指针进行减法操作?( )
A. ++
B. --
C. +=
D. -=
二、简答题(本大题共5小题,每题6分,共30分)
1. 函数指针的概念。
2. 简述动态内存分配的概念及其在C语言中的应用。
3. 指针在结构体中的应用。
4. 指针与字符串的关系。
5. 指针在文件操作中的作用。
三、编程题(本大题共1小题,共10分)
1. 编写一个C语言程序,输入十个数,使用选择法按从小到大的顺序排序并输出。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$
编写说明:2026版《软件与应用技术考纲百套卷》依据2026版山东省《软件与应用技术类专业知识考试标准》编写,本套试卷共100份,分为三个部分,第一部分是知识点训练卷,每个知识点2份试卷共76份,第二部分是常考题训练卷,每个知识模块2份训练卷共12份,第三个部分是专业综合训练卷,参考历年软件与应用技术类专业真题试卷,编写了12份。
本试卷是2026版《软件与应用技术考纲百套卷》的第12卷,按知识模块1 C语言程序设计知识6.指针的两点范围要求编写。其两点要求是:
(1)了解指针变量的定义及引用。
(2)理解指向数组的指针变量。
2026版山东省《软件与应用技术考纲百套卷》 第12卷
知识模块1 C语言程序设计知识
6.指针 知识点训练卷
一、单项选择题(本大题共20小题,每题3分,共60分)
1. C语言中,下列哪个关键字用于声明变量指向函数?( )
A. function
B. func
C. pointer
D. void
【答案】D
2.设 `pl` 和 `p2` 均为指向一个 `int` 型数组的指针变量,`x` 为 `int` 型变量,则以下不能正确执行的赋值语句是( )。
A. `x=*pl+*p2;`
B. `p2=x;`
C. `pl=p2;`
D. `x=*pl*(*p2);`
【答案】B
3.以下程序段的输出结果是( )
int a[]={1,2,3,4,5,6,7,8,9,0},*p;p=a;
printf("%d
",*p+9);
A.0 B.1 C.10 D.9
【答案】C
4.以下程序段的输出结果是( )
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
printf("%d
",*(p+2));
A.3
B.4
C.1
D.2
【答案】A
5.程序int a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;printf("%d",*--p);的输出结果是( )
A.非法
B.a[4]的地址
C.5
D.3
【答案】C
6.若有定义 `int*p,m=6,n;` 以下正确的程序段是( )。
A. `p=&n;scanf("%d",&p);`
B. `p=&n;scanf("%d",p);`
C. `scanf("%d",&n);*p=n;`
D. `p=&n;*p=m;`
【答案】D
7.若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是( )
A.p+1
B.a+1
C.a++
D.++p
【答案】C
8. 设有以下语句int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则_____不是对a数组元素的正确引用,其中(0<=i<10)
A.a[p-a]
B.*(&a[i])
C.p[i]
D.*(*(a+i))
【答案】D
9. 假设有以下声明:`int a, *p = &a;`,下列哪个表达式是正确的?( )
A. *p = &a;
B. p = *a;
C. *p = a;
D. &p = a;
【答案】C
10. 若有如下定义:int a[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0<=i<=9,则为数组元素a[i]不正确的引用是( )
A.*(p+i)
B.*(a+i)
C.p[i]
D.*a[i]
【答案】D
11. 以下程序段的输出结果是( )
int i,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];
for(i=0;i<4;i+=2)
printf("%d",p[i]);
A.5 2
B.5 1
C.5 3
D.9 7
【答案】C
12. 下列哪个操作符用于访问结构体成员?( )
A. .
B. ->
C. *
D. &
【答案】B
13. 假设有以下声明:`int arr[10], *p = arr;`,下列哪个表达式是正确的?( )
A. *(p + 2) = 5;
B. *(2 + p) = 5;
C. *p(2) = 5;
D. p(2) = 5;
【答案】A
14. 下列哪个函数用于释放动态分配的内存?( )
A. free()
B. delete
C. dealloc()
D. release()
【答案】A
15. 在C语言中,下列哪个关键字用于声明一个指向字符的指针?( )
A. char
B. int
C. float
D. void
【答案】A
16. 设int a[3][2]={2,4,6,8,10};则*(a[2]+1)的值是( )
A. 0
B.1
C. 2
D. 3
【答案】A
17. 下列哪个操作符用于对指针进行加法操作?( )
A. ++
B. --
C. +=
D. -=
【答案】C
18. 在C语言中,下列哪个关键字用于声明一个指向数组的指针?( )
A. array
B. arr
C. pointer
D. void
【答案】C
19. 假设有以下声明:`int arr[10], *p = &arr[0];`,下列哪个表达式是正确的?( )
A. p = arr + 1;
B. p = &arr + 1;
C. p = arr[1];
D. p = &arr[1];
【答案】D
20. 下列哪个操作符用于对指针进行减法操作?( )
A. ++
B. --
C. +=
D. -=
【答案】D
二、简答题(本大题共5小题,每题6分,共30分)
1. 函数指针的概念。
【答案】指针也就是内存地址。指针变量是用来存放这些内存地址的变量。不同类型指针变量所占用的存储单元长度是相同的。C语言是通过变量来使用存储空间的。内存中的每个存储单元都有编号,称为地址。每当定义一个变量时,编译器就根据该变量的数据类型分配相应长度的存储空间,这个存储空间的首地址就是变量的地址,也就是指针。
2. 简述动态内存分配的概念及其在C语言中的应用。
【答案】动态内存分配是在程序运行过程中,根据需要动态地分配和释放内存空间。在C语言中,动态内存分配常用的函数有malloc()、calloc()、realloc()和free()。动态内存分配可以用于数组的动态创建和释放,以及数据结构如链表、树等的实现。
3. 指针在结构体中的应用。
【答案】在C语言中,指针可以用于访问和操作结构体成员。通过结构体指针,可以实现对结构体变量的间接访问和修改。结构体指针常用于实现链表、树等数据结构,以及函数间传递大型数据。
4. 指针与字符串的关系。
【答案】在C语言中,字符串以字符数组的形式存储,字符串名表示字符数组首元素的地址。指针可以用来访问和操作字符串,通过指针的算术运算,可以遍历字符串中的字符。此外,指针还可以用于字符串的动态分配和操作。
5. 指针在文件操作中的作用。
【答案】在C语言中,文件操作如读取和写入文件,需要使用文件指针。文件指针用于指向文件缓冲区,实现对文件的读写操作。通过文件指针,可以读取文件内容、写入数据到文件,以及获取文件的状态信息。常见的文件操作函数有fopen()、fclose()、fread()、fwrite()等。
三、编程题(本大题共1小题,共10分)
1. 编写一个C语言程序,输入十个数,使用选择法按从小到大的顺序排序并输出。
【答案】
#include <stdio.h>
main() {
int a[10], *p = a, i, j, t;
for (i = 0; i <= 9; i++)
scanf("%d", p + i);
for (i = 0; i < 9; i++)
for (j = i + 1; j < 10; j++) {
if (*(p + i) > *(p + j)) {
t = *(p + i);
*(p + i) = *(p + j);
*(p + j) = t;
}
for (i = 0; i <= 9; i++)
printf("%d", *(p + i));
}
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$