《C语言程序设计》(七)指针-知识点训练卷 2026版吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》第20卷

2025-09-09
| 2份
| 18页
| 85人阅读
| 0人下载

内容正文:

编写说明: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 = &num;,若要通过指针 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 = &num;,若要通过指针 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.编写一个程序,使用指针实现字符串的拼接。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

《C语言程序设计》(七)指针-知识点训练卷 2026版吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》第20卷
1
《C语言程序设计》(七)指针-知识点训练卷 2026版吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》第20卷
2
《C语言程序设计》(七)指针-知识点训练卷 2026版吉林省高职分类考试《信息工程类(电子与信息类)考纲百套卷》第20卷
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。