内容正文:
编写说明:2026版吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》,依据吉林省高职分类(对口招生)考试各类专业综合卷考试科目及纲要(2021版),种信息工程类(电子与信息类)专业综合卷考试科目及纲要编写。本专辑共150份试卷两部分组成,第一部分是按考纲的考点要求编写的120份知识点训练卷,第二部分是针对6门课程的掌握要求,编写的30份常考题训练卷。
本试卷是吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》的第20卷,是知识点训练卷。按“C语言程序设计”考试纲要(七)指针的六点知识点要求编写,其六点要求是:
1. 了解指针的概念。2.了解指向简单变量。
2026版吉林省《信息工程类(电子与信息类)考纲百套卷》第20卷
《C语言程序设计》
(七)指针-知识点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、选择题(本大题共10小题,每小题2分,共20分)
1.以下关于指针的说法正确的是( )
A. 指针变量存储的是变量的值
B. 指针变量存储的是变量的地址
C. 指针变量可以直接存储字符串
D. 指针变量不能进行算术运算
答案:B
2.以下代码的输出结果是( )
int a = 10;
int *p = &a;
printf("%d", *p);
A. 10
B. a的地址
C. p的地址
D. 编译错误
答案:A
3.若有说明:int n=2,*p=&n,*q=p,则以下非法的赋值语句是( )
A. p=q
B. *p=*q
C. n=*q
D. p=n
答案:D
4.有语句:int a[10],;则对指针变量p的正确定义和初始化的语句是( )
A. int p=*a;
B. int *p=a;
C. int p=&a;
D. int *p=&a;
答案:B
5.以下代码的输出结果是( )
int a[] = {1, 2, 3, 4, 5};
int *p = a;
printf("%d", *(p + 2));
A. 1
B. 2
C. 3
D. 4
答案:C
6.以下代码的输出结果是( )
char *str = "Hello";
printf("%c", *(str + 1));
A. H
B. e
C. l
D. o
答案:B
7.以下代码的输出结果是( )
int a = 10;
int *p = &a;
printf("%p", p);
A. 10
B. a的地址
C. p的地址
D. 编译错误
答案:B
8.执行以下程序的输出结果是( )
void prtv(int *x)
{printf("%d
",++*x);}
void main()
{int a=25;
prtv(&a);
getch();}
A. 23
B. 24
C. 25
D. 26
答案:D
9.以下程序的输出结果是( )
void sub(int x,int y,int *z)
{*z=y-x;}
void main()
{int a,b,c;
sub(10,5,&a); sub(7,a,&b); sub(a,b,&c);
printf("%d,%d,%d
",a,b,c);
getch();}
A. 5,2,3
B. -5,-12,-7
C. -5,-12,-17
D. 5,-2,-7
答案:B
10.以下程序的输出结果是( )
void main()
{int k=2,m=4,n=6;
int *pk=&k,*pm=&m,*p;
*(p=&n)=*pk*(*pm);
printf("%d
",n);
getch();}
A. 4
B. 6
C. 8
D. 10
答案:C
二、判断题(本大题共10小题,每小题2分,共20分)
1.指针变量可以直接参与算术运算,如int *p; p++;,其移动的字节数由指针指向的数据类型决定。( )
答案:正确
2.指针变量的大小在同一操作系统下是固定的,与指向的数据类型无关。( )
答案:正确
3.若int x = 3, y = 4, *p = &x, *q = &y;,执行p = q;后,x的值会变为4。( )
答案:错误
4.int *p = NULL; 表示指针p指向空地址。( )
答案:正确
5.在C语言中,如果指针变量 p 指向一个整型变量 a ,那么 *p 和 a 的值是相同的。( )
答案:正确
6.若int m = 8; int *p = &m;,则printf("%d", *&p);输出的是m的内存地址。( )
答案:错误
7.int *p = &a; 和 int *p; p = &a; 是等价的。( )
答案:正确
8.可以通过指针修改变量的值,如int a = 2; int *p = &a; *p = 3;,执行后a的值为3。( )
答案:正确
9.int *p; p = &a; 和 int *p = &a; 是等价的。( )
答案:正确
10.int x = 5, y = 6; int *p = &x; *p = y;执行后,x的值为6,y的值仍为6。( )
答案:正确
三、填空题(本大题共5小题,每题2分,共10分)
1. 若int m = 3, n = 5; int *p = &m;,执行p = &n; *p += m;后,n的值为 ____。
答案:8
2. 若int x = 20; int *p = &x;,执行*p += 5;后,x的值为 ____。
答案:25
3. 声明一个指向float类型变量的指针变量f_ptr,语句为 ____。
答案:float *f_ptr;
4. 定义 double num = 3.14; double *r = #,若要通过指针 r 修改 num 的值为 6.28,应使用语句 ____。
答案:*r = 6.28;
5.若有 int x = 20; int *y; y = &x;,此时 &(*y) 等价于 ____。
答案:&x
四、读程序写结果题(本大题共5小题,每题5分,共25分)
1.以下程序的运行结果是______。
#include <stdio.h>
#include <conio.h>
int change(int *data)
{return (*data)++;}
main()
{int data=123;
change(&data);
printf("%d,",data);
data=change(&data);
printf("%d,",data);
printf("
");
getch();}
答案: 124,124,
2.以下程序的运行结果是______。
#include <stdio.h>
int main() {
int a = 5, b = 10;
int *p = &a;
int *q = &b;
*p = *q + 2;
printf("%d
", a);
return 0;
}
答案: 12
3.以下程序的运行结果是______。
#include <stdio.h>
int main() {
int a[] = {1, 2, 3, 4, 5};
int *p = a;
printf("%d
", *(p + 2));
return 0;
}
答案: 3
4.以下程序的运行结果是______。
#include <stdio.h>
#include <conio.h>
int fun(char *s)
{char *t=s;
while(*t++);
return t-s;}
main()
{char t[8]="123456";
printf("%d
",fun(t));
getch();}
答案: 7
5.以下程序的运行结果是______。
#include <stdio.h>
int main() {
int a = 5, b = 10;
int *p = &a;
int *q = &b;
p = q;
*p = 15;
printf("%d
", b);
return 0;
}
答案: 15
五、编程题(本大题共5小题,每题5分,共25分)
1. 编写一个程序,使用指针交换两个整数的值。
答案:
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int x = 10, y = 20;
swap(&x, &y);
printf("x = %d, y = %d
", x, y);
return 0;
}
2.编写一个程序,输入3个整数,按照由小到大的顺序输出,要求使用指针实现该程序功能。
答案:
#include <stdio.h>
#include <conio.h>
int main()
{void swap(int * p1,int * p2);
int n1,n2,n3;
int * p1, * p2,*p3;
printf("input three integer n1,n2,n3:");
scanf("%d,%d,%d",&n1,&n2,&n3);
p1=&n1;
p2=&n2;
p3=&n3;
if(n1>n2) swap(p1,p2);
if(n1>n3) swap(p1,p3);
if(n2>n3) swap(p2,p3);
printf("Now, the order is:%d,%d,%d
",n1,n2,n3);
getch();
}
void swap(int * p1,int * p2)
{int p;
p= * p1; * p1= * p2; * p2=p;
}
3.编写一个程序,使用指针反转字符串。
答案:
#include <stdio.h>
#include <string.h>
void reverse(char *str) {
int len = strlen(str);
char *start = str;
char *end = str + len - 1;
while (start < end) {
char temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}
}
int main() {
char str[] = "Hello";
reverse(str);
printf("%s
", str);
return 0;
}
4.n个人围成一圈,顺序排号,从第一个人开始报数(从1到3报数),凡是报到3的人退出圈子,使用指针编写程序,求出最后留下的人是原来的第几号。
答案:
#include <stdio.h>
#include <conio.h>
int main( )
{int i,k,m,n,num[50],*p;
printf("
input number of person:n=");
scanf("%d",&n);
p=num;
for (i=0;i<n;i++)
*(p+i)=i+1; //以1至n为序给每个人编号
i=0; //i为每次循环时计数变量
k=0; //k为按1,2,3报数时的计数变量
m=0; //m为退出人数
while (m<n-1) //当退出人数比n-1少时(即未退出人数大于1时)执行循环体
{if( * (p+i)!=0) k++;
if(k==3)
{*(p+i)=0; //对退出的人的编号置为0
k=0;
m++;
}
i++;
if (i==n)i=0; //报数到尾后,i恢复为0
}
while(*p==0)p++;
printf("The last one is NO.%d
",*p);
getch();
}
5.编写一个程序,使用指针实现字符串的拼接。
答案:
#include <stdio.h>
void concat(char *dest, const char *src) {
while (*dest) dest++;
while (*src) {
*dest = *src;
dest++;
src++;
}
*dest = '\0';
}
int main() {
char str1[50] = "Hello, ";
char str2[] = "World!";
concat(str1, str2);
printf("%s
", str1);
return 0;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
编写说明:2026版吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》,依据吉林省高职分类(对口招生)考试各类专业综合卷考试科目及纲要(2021版),种信息工程类(电子与信息类)专业综合卷考试科目及纲要编写。本专辑共150份试卷两部分组成,第一部分是按考纲的考点要求编写的120份知识点训练卷,第二部分是针对6门课程的掌握要求,编写的30份常考题训练卷。
本试卷是吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》的第20卷,是知识点训练卷。按“C语言程序设计”考试纲要(七)指针的六点知识点要求编写,其六点要求是:
1. 了解指针的概念。2.了解指向简单变量。
2026版吉林省《信息工程类(电子与信息类)考纲百套卷》第20卷
《C语言程序设计》
(七)指针-知识点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、选择题(本大题共10小题,每小题2分,共20分)
1.以下关于指针的说法正确的是( )
A. 指针变量存储的是变量的值
B. 指针变量存储的是变量的地址
C. 指针变量可以直接存储字符串
D. 指针变量不能进行算术运算
2.以下代码的输出结果是( )
int a = 10;
int *p = &a;
printf("%d", *p);
A. 10
B. a的地址
C. p的地址
D. 编译错误
3.若有说明:int n=2,*p=&n,*q=p,则以下非法的赋值语句是( )
A. p=q
B. *p=*q
C. n=*q
D. p=n
4.有语句:int a[10],;则对指针变量p的正确定义和初始化的语句是( )
A. int p=*a;
B. int *p=a;
C. int p=&a;
D. int *p=&a;
5.以下代码的输出结果是( )
int a[] = {1, 2, 3, 4, 5};
int *p = a;
printf("%d", *(p + 2));
A. 1
B. 2
C. 3
D. 4
6.以下代码的输出结果是( )
char *str = "Hello";
printf("%c", *(str + 1));
A. H
B. e
C. l
D. o
7.以下代码的输出结果是( )
int a = 10;
int *p = &a;
printf("%p", p);
A. 10
B. a的地址
C. p的地址
D. 编译错误
8.执行以下程序的输出结果是( )
void prtv(int *x)
{printf("%d
",++*x);}
void main()
{int a=25;
prtv(&a);
getch();}
A. 23
B. 24
C. 25
D. 26
9.以下程序的输出结果是( )
void sub(int x,int y,int *z)
{*z=y-x;}
void main()
{int a,b,c;
sub(10,5,&a); sub(7,a,&b); sub(a,b,&c);
printf("%d,%d,%d
",a,b,c);
getch();}
A. 5,2,3
B. -5,-12,-7
C. -5,-12,-17
D. 5,-2,-7
10.以下程序的输出结果是( )
void main()
{int k=2,m=4,n=6;
int *pk=&k,*pm=&m,*p;
*(p=&n)=*pk*(*pm);
printf("%d
",n);
getch();}
A. 4
B. 6
C. 8
D. 10
二、判断题(本大题共10小题,每小题2分,共20分)
1.指针变量可以直接参与算术运算,如int *p; p++;,其移动的字节数由指针指向的数据类型决定。( )
2.指针变量的大小在同一操作系统下是固定的,与指向的数据类型无关。( )
3.若int x = 3, y = 4, *p = &x, *q = &y;,执行p = q;后,x的值会变为4。( )
4.int *p = NULL; 表示指针p指向空地址。( )
5.在C语言中,如果指针变量 p 指向一个整型变量 a ,那么 *p 和 a 的值是相同的。( )
6.若int m = 8; int *p = &m;,则printf("%d", *&p);输出的是m的内存地址。( )
7.int *p = &a; 和 int *p; p = &a; 是等价的。( )
8.可以通过指针修改变量的值,如int a = 2; int *p = &a; *p = 3;,执行后a的值为3。( )
9.int *p; p = &a; 和 int *p = &a; 是等价的。( )
10.int x = 5, y = 6; int *p = &x; *p = y;执行后,x的值为6,y的值仍为6。( )
三、填空题(本大题共5小题,每题2分,共10分)
1. 若int m = 3, n = 5; int *p = &m;,执行p = &n; *p += m;后,n的值为 ____。
2. 若int x = 20; int *p = &x;,执行*p += 5;后,x的值为 ____。
3. 声明一个指向float类型变量的指针变量f_ptr,语句为 ____。
4. 定义 double num = 3.14; double *r = #,若要通过指针 r 修改 num 的值为 6.28,应使用语句 ____。
5.若有 int x = 20; int *y; y = &x;,此时 &(*y) 等价于 ____。
四、读程序写结果题(本大题共5小题,每题5分,共25分)
1.以下程序的运行结果是______。
#include <stdio.h>
#include <conio.h>
int change(int *data)
{return (*data)++;}
main()
{int data=123;
change(&data);
printf("%d,",data);
data=change(&data);
printf("%d,",data);
printf("
");
getch();}
2.以下程序的运行结果是______。
#include <stdio.h>
int main() {
int a = 5, b = 10;
int *p = &a;
int *q = &b;
*p = *q + 2;
printf("%d
", a);
return 0;
}
3.以下程序的运行结果是______。
#include <stdio.h>
int main() {
int a[] = {1, 2, 3, 4, 5};
int *p = a;
printf("%d
", *(p + 2));
return 0;
}
4.以下程序的运行结果是______。
#include <stdio.h>
#include <conio.h>
int fun(char *s)
{char *t=s;
while(*t++);
return t-s;}
main()
{char t[8]="123456";
printf("%d
",fun(t));
getch();}
5.以下程序的运行结果是______。
#include <stdio.h>
int main() {
int a = 5, b = 10;
int *p = &a;
int *q = &b;
p = q;
*p = 15;
printf("%d
", b);
return 0;
}
五、编程题(本大题共5小题,每题5分,共25分)
1. 编写一个程序,使用指针交换两个整数的值。
2.编写一个程序,输入3个整数,按照由小到大的顺序输出,要求使用指针实现该程序功能。
3.编写一个程序,使用指针反转字符串。
4.n个人围成一圈,顺序排号,从第一个人开始报数(从1到3报数),凡是报到3的人退出圈子,使用指针编写程序,求出最后留下的人是原来的第几号。
5.编写一个程序,使用指针实现字符串的拼接。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$