第八章 指针《编程语言基础-C语言》(高教版第五版)章节过关卷

2025-09-21
| 2份
| 12页
| 69人阅读
| 0人下载

资源信息

学段 中职
学科 职教专业课
课程 C语言程序设计
教材版本 C语言程序设计高教版(第五版)全一册
年级 高一
章节 第8章 指针
类型 作业-单元卷
知识点 指针
使用场景 同步教学-单元练习
学年 2025-2026
地区(省份) 全国
地区(市) -
地区(区县) -
文件格式 ZIP
文件大小 248 KB
发布时间 2025-09-21
更新时间 2025-09-21
作者 xkw_069767526
品牌系列 学易金卷·阶段检测模拟卷
审核时间 2025-09-21
下载链接 https://m.zxxk.com/soft/54019947.html
价格 3.00储值(1储值=1元)
来源 学科网

内容正文:

《编程语言基础——C语言》高等教育出版社(第五版) 第八章 指针 章节过关卷 考试时间:90分钟 满分:100分 姓名 班级 学号 1、 单项选择题(本题共25小题,每题2分,共50分) 1.以下程序段执行后,a的值为( ) int *p,a=10,b=1;p=&a;a=*p+b; A.12 B.11 C.10 D.13 答案:B 2.执行如下一段程序后,ab的值( ) int *var,ab;ab=100;var=&ab;ab=*var+10; A.120 B.110 C.100 D.90 答案:B 3.以下定义语句中正确的是( ) A.char a='A' b='B'; B.float a=b=10.0; C.int a=10,*b=&a; D.float *a,b=&a; 答案:C 4.有以下程序段,b中的值是( ) int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;b=p[5]; A.5 B.6 C.8 D.9 答案:D 5.以下程序段的输出结果是( ) 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 6.以下程序段的输出结果是( ) 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 7.程序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 8.若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是( ) A.p+1 B.a+1 C.a++ D.++p 答案:C 9.设有说明int s[2]={0,1},*p=s;则下列错误的C语句是( ) A. s+=1; B.p+=1; C.*p++; D.(*p)++; 答案:A 10.char s[10],*p=s;则以下不正确的表达式是( ) A.p=s+1; B.p=s++; C.*(s+1)=*p; D.*p++=s[2]; 答案:B 11.设有以下语句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 12.若有如下定义: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 13.以下程序段的输出结果是( ) 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 14.以下执行程序段后,m的值为( ) int a[2][3]={{1,2,3},{4,5,6}};int m,*p; p=&a[0][0]; m=(*p)*(*(p+2))*(*(p+4)); A.15 B.14 C.13 D.12 答案:A 15.以下程序片段的输出成果是( ) char str[]="ABCD",*p=str;printf("%d ",*(p+4)); A.68 B.0 C.不确定的值 D.字符‘D’的地址 答案:B 16.若有说明语句:int a,b,c,*d=&c;怎能正确从键盘输入三个整数分别赋给变量a、b、c的语句是( ) A.scanf("%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 17.设有定义:int a,*pa=&a;以下scanf语句中能正确为变量读入数据的是( ) A.scanf(“%d”,pa); B.scanf(“%d”,a); C.scanf(“%d”,&pa); D.scanf(“%d”,*pa); 答案:A 18.若有说明:int a=2,*p=&a,*q=p;,则以下非法的赋值语句的是( ) A.p=q; B.*p=*q; C.a=*q; D.q=a; 答案: D 19.变量的指针,其含义是指该变量的( ) A.值 B.地址 C.名 D.一个标志 答案:B 20.若有语句int *p,a=10;p=&a;下面均代表地址的一组选项的是( ) A.a,p,*&a B.&*a,&a,*p C.*&p,*p,&a D.&a,&*p,p 答案:D 21. 若有定义int *p1,*p2,m=4,n;,以下均为正确赋值语句的选项是( ) A.p1=&m;p2=&p1; B.p1=&m;p2=&n;*p1=*p2; C.p1=&m;*p1=*p2; D.p1=&m;*p2=*p1; 答案:B 22.假设整型变量a的值为2,a的地址为2000,若欲使p为指向a的指针变量,则以下赋值正确的是( ) A.&a=3; B.*p=2; C.*p=2000; D.p=&a; 答案: D 23.有定义语句int *p[4],以下选项中与此语句等价的是( ) A.int p[4]; B.int **p; C.int *(p[4]) D.int (*p)[4]; 答案:C 24.下面程序的输出结果是( ) int a[]={2,4,6,8}; main(){ int i; int *p=a; for(i=0;i<4;i++) a[i]=*p++; printf("%d ",a[2]); } A.6 B.8 C.4 D.2 答案:A 25.下面程序的输出结果是( ) main(){ 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 二、简答题(本题共5小题,每题6分,共30分) 26. 以下程序的输出结果是【 】。 int a=3,b,*p; p=&a; b=*p+2; printf("%d,%d ",a,b); 答案:3,5 27. 以下程序的运行结果是【 】。 int a=3,b=5,c; int *p,*q; p=&a;q=&b; c=(*p)*(*q); printf("%d ",c); 答案:15 28. 以下程序的运行结果是【 】。 #include <stdio.h> main() { char a[] = "ABCDEFGH"; char b[] = "aBCdefGh"; char *p1, *p2; int k; p1 = a; p2 = b; for (k = 0; k <= 7; k++) if (*(p1 + k) == *(p2 + k)) printf("%c", *(p1 + k)); printf(" "); } 答案:BCG 29. 以下程序的运行结果是【 】。 #include <stdio.h> main() { char a[] = "programming", b[] = "language"; char *p1, *p2; int i; p1 = a; p2 = b; for (i = 0; i < 7; i++) if (*(p1 + i) == *(p2 + i)) printf("%c", *(p1 + i));} 答案:ga 30. 以下程序的运行结果是【 】。 int a=7,b=8,*p,*q,*r; p=&a; q=&b; r=p;p=q;q=r; printf("%d,%d,%d ",*p,*q,a,b); 答案:8,7,7,8 三、案例分析题(本题共2小题,共20分) 31.给定程序的功能是判断字符ch是否与串str中的某个字符相同:若相同,什么也不做;若不同,则插在串的最后。 【参考程序】#include <stdio.h> #include <string.h> void fun(char str[], char ch) { int len = strlen(str); int i; for (i = 0; i < len; i++) { if (str[i] == ch) { return; } } str[len] = ch; str[len + 1] = '\0'; } main() { char str[100] = "hello"; char ch = 'x'; fun(str, ch); printf("%s ", str); } 32.输入一行由英语单词和若干空格组成的字符串,输出单词的个数(约定第一个单词之前和最后一个单词之后没有空格)。 【参考程序】#include<stdio.h> main(){ char a[100],*p=a,n=0; getsA; while(*p){ if(*p!=''&&*(p+1)=='') n++; p++; } printf("%d个单词",n+1); } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 《编程语言基础——C语言》高等教育出版社(第五版) 第八章 指针 章节过关卷 考试时间:90分钟 满分:100分 姓名 班级 学号 1、 单项选择题(本题共25小题,每题2分,共50分) 1.以下程序段执行后,a的值为( ) int *p,a=10,b=1;p=&a;a=*p+b; A.12 B.11 C.10 D.13 2.执行如下一段程序后,ab的值( ) int *var,ab;ab=100;var=&ab;ab=*var+10; A.120 B.110 C.100 D.90 3.以下定义语句中正确的是( ) A.char a='A' b='B'; B.float a=b=10.0; C.int a=10,*b=&a; D.float *a,b=&a; 4.有以下程序段,b中的值是( ) int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;b=p[5]; A.5 B.6 C.8 D.9 5.以下程序段的输出结果是( ) 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 6.以下程序段的输出结果是( ) 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 7.程序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 8.若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是( ) A.p+1 B.a+1 C.a++ D.++p 9.设有说明int s[2]={0,1},*p=s;则下列错误的C语句是( ) A. s+=1; B.p+=1; C.*p++; D.(*p)++; 10.char s[10],*p=s;则以下不正确的表达式是( ) A.p=s+1; B.p=s++; C.*(s+1)=*p; D.*p++=s[2]; 11.设有以下语句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)) 12.若有如下定义: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] 13.以下程序段的输出结果是( ) 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 14.以下执行程序段后,m的值为( ) int a[2][3]={{1,2,3},{4,5,6}};int m,*p; p=&a[0][0]; m=(*p)*(*(p+2))*(*(p+4)); A.15 B.14 C.13 D.12 15.以下程序片段的输出成果是( ) char str[]="ABCD",*p=str;printf("%d ",*(p+4)); A.68 B.0 C.不确定的值 D.字符‘D’的地址 16.若有说明语句:int a,b,c,*d=&c;怎能正确从键盘输入三个整数分别赋给变量a、b、c的语句是( ) A.scanf("%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); 17.设有定义:int a,*pa=&a;以下scanf语句中能正确为变量读入数据的是( ) A.scanf(“%d”,pa); B.scanf(“%d”,a); C.scanf(“%d”,&pa); D.scanf(“%d”,*pa); 18.若有说明:int a=2,*p=&a,*q=p;,则以下非法的赋值语句的是( ) A.p=q; B.*p=*q; C.a=*q; D.q=a; 19.变量的指针,其含义是指该变量的( ) A.值 B.地址 C.名 D.一个标志 20.若有语句int *p,a=10;p=&a;下面均代表地址的一组选项的是( ) A.a,p,*&a B.&*a,&a,*p C.*&p,*p,&a D.&a,&*p,p 21. 若有定义int *p1,*p2,m=4,n;,以下均为正确赋值语句的选项是( ) A.p1=&m;p2=&p1; B.p1=&m;p2=&n;*p1=*p2; C.p1=&m;*p1=*p2; D.p1=&m;*p2=*p1; 22.假设整型变量a的值为2,a的地址为2000,若欲使p为指向a的指针变量,则以下赋值正确的是( ) A.&a=3; B.*p=2; C.*p=2000; D.p=&a; 23.有定义语句int *p[4],以下选项中与此语句等价的是( ) A.int p[4]; B.int **p; C.int *(p[4]) D.int (*p)[4]; 24.下面程序的输出结果是( ) int a[]={2,4,6,8}; main(){ int i; int *p=a; for(i=0;i<4;i++) a[i]=*p++; printf("%d ",a[2]); } A.6 B.8 C.4 D.2 25.下面程序的输出结果是( ) main(){ 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 二、简答题(本题共5小题,每题6分,共30分) 26. 以下程序的输出结果是【 】。 int a=3,b,*p; p=&a; b=*p+2; printf("%d,%d ",a,b); 27. 以下程序的运行结果是【 】。 int a=3,b=5,c; int *p,*q; p=&a;q=&b; c=(*p)*(*q); printf("%d ",c); 28. 以下程序的运行结果是【 】。 #include <stdio.h> main() { char a[] = "ABCDEFGH"; char b[] = "aBCdefGh"; char *p1, *p2; int k; p1 = a; p2 = b; for (k = 0; k <= 7; k++) if (*(p1 + k) == *(p2 + k)) printf("%c", *(p1 + k)); printf(" "); } 29. 以下程序的运行结果是【 】。 #include <stdio.h> main() { char a[] = "programming", b[] = "language"; char *p1, *p2; int i; p1 = a; p2 = b; for (i = 0; i < 7; i++) if (*(p1 + i) == *(p2 + i)) printf("%c", *(p1 + i));} 30. 以下程序的运行结果是【 】。 int a=7,b=8,*p,*q,*r; p=&a; q=&b; r=p;p=q;q=r; printf("%d,%d,%d ",*p,*q,a,b); 三、案例分析题(本题共2小题,共20分) 31.给定程序的功能是判断字符ch是否与串str中的某个字符相同:若相同,什么也不做;若不同,则插在串的最后。 32.输入一行由英语单词和若干空格组成的字符串,输出单词的个数(约定第一个单词之前和最后一个单词之后没有空格)。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

第八章  指针《编程语言基础-C语言》(高教版第五版)章节过关卷
1
第八章  指针《编程语言基础-C语言》(高教版第五版)章节过关卷
2
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。