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

2025-03-04
| 2份
| 22页
| 248人阅读
| 4人下载

资源信息

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

内容正文:

《编程语言基础——C语言》高等教育出版社(第五版) 第八章 指针 章节过关卷 考试时间:90分钟 满分:100分 姓名 班级 学号 1、 单项选择题(本题共20小题,每题2分,共40分) 1. 设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是( ) A.p=q; B.*p=&n1; C.p=*q; D.*p=*q; 2. 以下程序中调用 scanf 函数给变量 a输入数值的方法是错误的,其错误原因是( ) #incldue<stdio.h> int main( ) { int *p,*q,a,b;p=&a; printf("input a:"); scanf("%d", * p); …… } A. *p表示的是指针变量p的地址 B. *p表示的是变量a的值,而不是变量a的地址 C. *p表示的是指针变量p的值 D. *p只能用来说明p是一个指针变量 3. 下列程序的运行结果是( ) #include<stdio.h> #include<conio.h> void print_value(int * x) { printf("%d ",- -*x);} int main( ) { int a=34;print_value(&a);getch();} A.33 B.34 C.35 D.36 4. 设char *s=“\ta\017bc”;则指针变量s指向的字符串所占的字节数是( ) A.6 B.10 C.4 D.5 5. 以下程序的输出结果是( ) #include<stdio.h> #include<conio.h> int main( ) { int c=0; char * s="\ta\018bc"; for ( ;* s!='\0';s++) c++;printf ("%d",c);getch();} A.6 B.5 C.7 D.8 6. 下面能正确进行字符串赋值操作的是( ) A. char a[5]={"ABCDE"}; B. char a[5]={ 'A','B',‘D',E'}; C. char * s;s="ABCDE"; D. char * s;scanf("%s",s); 7. 以下程序的运行结果是( ) #include<stdio.h> #include<conio.h> int main( ) { char * s="abcde"; s+=2; printf("%s",s);getch();} A.abcde B.abc C.bcde D. cde 8. 以下程序的运行结果是( ) #include<stdio.h> #include<conio.h> int main( ) { char * format="%s,a=%d,b=%d "; int a=1,b=10; a+=b; printf(format,"a+=b",a,b);getch();} A. a+=b,a=11,b=10 B.for,”a+b”,ab C.format,”a+=b” D.format,"a+=b",a,b 9. 下列程序的输出结果是( ) #include<stdio.h> #include<conio.h> int main( ) { char str[ ]="abcdefg", * p=str; printf( "%d ", * (p+2) );getch();} A.97 B.99 C.c D.a 10. 下面程序的输出结果是( ) #include<stdio.h> #include<conio.h> #include<string.h> int main( ) { char pl[ ]="abcdefgh", *p=pl; p+=5;printf("%d ",strlen(strcpy(p,"AB"))); getch();} A.8 B.5 C.2 D.10 11. 下列程序的输出结果是( ) #include<stdio.h> #include<conio.h> #include<string.h> int main( ) { char a[ ]="LANGUAGE",* p; p=a; while ( *p!='U') { printf("%c", *p+32);p++;} getch();} A. langUAGE B. language C. LANGUAGE D. lang 12. 若有语句:char sl[100 ]="string",s2[8]="", * s3, * s4="string2";则对库函数strcpy 的错误调用是( ) A. strcpy(sl,"string2"); B. strcpy(s4J'stringl"); C. strcpy(s3,"stringl"); D. strcpy(sl,s2); 13. 若有说明语句,则以下不正确的叙述是( ) char a[ ]="lt is mine"; char * p="lt is mine"; A. a+1表示的是字符t所在存储单元的地址 B. p指向另外的字符串时,字符串的长度不受限制 C. p变量中存放的地址值可以改变 D. a中只能存放10个字符 14. 下列程序的输出结果是( ) int main( ) { char s[6];s="abcd", printf("\"%s\" ",s); getch();} A. "abed" B. "abed " C. \"abcd \" D. 编译出错 15. 变量的指针,其含义是指该变量的( ) A.值 B.地址 C.名 D.一个标志 16. 若有定义:int a=1,*p;p=&a;,则下面均表示地址的一项是( ) A.&a &*p p B.a p *&a C.&*a &a *p D. &a &*p *p 17. 若已有定义:float a=2025;,则以下定义指针变量p且赋初值的语句中,正确的一项是( ) A.float *p=2025; B.float *p=&a; C.int *p=(float)a; D.float p=&a; 18. 已有定义:int *p,x;,则语句:p=&x;中的&是( ) A.按位与 B.取地址 C.逻辑与 D.非法,有语法错误 19. 若有定义:int abc[10];,则下面不能表示abc[1]的地址的是( ) A.&abc[0]+1 B.&abc[1] C.&abc[0]++ D.abc+1 20. 假设每个int型数据占2字节,若有定义:int aa[10]={1,2,3,4};,则aa数组占内存字节数是( ) A.20 B.4 C.8 D.40 二、程序运行结果题(本题共7小题,每题3分,共21分) 21. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> void su( int x,int y,int * z) { *z=y-x;} int main( ) { int a,b,c; su(20,15,&a); su(2,a,&b); su(a,b,&c); printf("%4d,%4d,%4d ",a,b,c);getch();} 22. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> int main( ) { int a,b,k=3,m=5,* pl=&k,* p2=&m; a=pl==&m; b=(-* pl)*( * p2)+9; printf("a= %d,",a); printf("b= %d ",b);getch();} 23. 当运行以下程序时,从键盘输入“Happy new year!2025<回车>”,则程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> int stre(char str[ ]) {int num=0; while( * (str+num)!='\0') num++; return (num);} int main( ) { char str[10], * p=str; gets(p); printf("%d ",stre(p) ) ; getch();} 24. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> #include<string.h> int main( ) { static char a[ ]="Language", b[ ]="programe"; char * pl, * p2;int k; pl=a;p2=b; for(k=0;k<=5;k++) if( * (pl+k)== *(p2+k)) printf("%c", * (pl+k)); getch(); } 25. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> #include<string.h> int main( ) { int a=34,b; char s[10],* p;p=s; do { b=a%16; if(b<10) *p=b+48; else *p=b+55; p++; a=a/5; } while(a>0); * p='\0';puts(s); getch(); } 26. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> #include<string.h> void delch(char * s) {int i,j; char * a;a=s; for(i=0,j=0;a[i]!='\0';i++) if(a[i]>='0'&&a[i]<='9') { s[j]=a[i]; j++; } s[j]='\0';} int main( ) { char item[]="a34b5ac"; delch(item);printf("%s",item); getch(); } 27. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> #include<string.h> main(){ char *sl="AbDeG"; char * s2="AbdEg"; sl+=3;s2+=3; printf("%d ",strcmp(sl,s2)); getch();} 三、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共27分) 28. 下面程序的功能是将一个整数字符串转换为一个整数,如将字符串〃-1234"转换为数值-1234。请选择填空。 #include<stdio.h> #include<conio.h> #include<string.h> int chnum(char * p); int main( ) {char s[6];int n; gets(s); if(*s=='-') n=-chnum(【1】); else n=chnum(s); printf("%d ",n); getch();} int chnum(char * p) { int num=0, k, len, j; len=strlen(p); for(;【2】;p++) {k=【3】;j=(--len); while(【4】) { k=k * 10;} num=num+k; } return(num);} 29. 下面程序的功能是从输人的10个字符串中找出最长的一串。请填空。 #include<stdio.h> #include<conio.h> #include<string.h> #define N 10 int main( ) { char str[N][81], *sp; int i; for(i=0;i<N;i++) gets(str[i]); sp=【1】; for(i=1;i<N;i++) if(【2】) sp=str[i]; printf("sp= %d,%s ",strlen(sp),sp);getch();} 30. 下面程序的功能是将八进制正整数字符串转换为十进制整数。请填空。 #include<stdio.h> #include<conio.h> #include<string.h> int main( ) { char * p, s[6];int n; p=s; gets(p); n=【1】; while(【2】!='\0') n=【3】; printf("%d ",n);getch();} 四、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。(每处3分,共12分) 31. 下面程序的功能是在字符串str中找出最大的字符并放在第一个位置上,并将该字符前的原字符往后顺序移动,如chyab变成ychab。程序中有两处错误,请改正。 L1 #include<stdio.h> L2 #include<conio.h> L3 main(){ L4 char str[80], * p,max, * q; L5 p=str; L6 gets(p); L7 max= * (p++); L8 while( * p!='\0') L9 { if(max> * p) L10 { max= * p; L11 q=p;} L12 p++; } L13 p=q; L14 while(p>str) L15 { * p= * (p-1); L16 p++;} L17 * p=max; L18 puts(p); L19 getch(); } 32. 下面程序的功能是将字符串s中的内容按逆序输出,但不改变串中的内容。程序中有两处错误,请改正。 L1 #include<stdio.h> L2 #include<conio.h> L3 int inverp (char * a) L4 { if (!*a) return 0; L5 inverp (a-1); L6 printf("%c",a);} L7 int main ( ) L8 { char s[20]="Happy new year!"; L9 inverp(s); L10 getch();} 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$ 《编程语言基础——C语言》高等教育出版社(第五版) 第八章 指针 章节过关卷 考试时间:90分钟 满分:100分 姓名 班级 学号 1、 单项选择题(本题共20小题,每题2分,共40分) 1. 设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是( ) A.p=q; B.*p=&n1; C.p=*q; D.*p=*q; 答案:D 2. 以下程序中调用 scanf 函数给变量 a输入数值的方法是错误的,其错误原因是( ) #incldue<stdio.h> int main( ) { int *p,*q,a,b;p=&a; printf("input a:"); scanf("%d", * p); …… } A. *p表示的是指针变量p的地址 B. *p表示的是变量a的值,而不是变量a的地址 C. *p表示的是指针变量p的值 D. *p只能用来说明p是一个指针变量 答案:B 3. 下列程序的运行结果是( ) #include<stdio.h> #include<conio.h> void print_value(int * x) { printf("%d ",- -*x);} int main( ) { int a=34;print_value(&a);getch();} A.33 B.34 C.35 D.36 答案:A 4. 设char *s=“\ta\017bc”;则指针变量s指向的字符串所占的字节数是( ) A.6 B.10 C.4 D.5 答案:A 5. 以下程序的输出结果是( ) #include<stdio.h> #include<conio.h> int main( ) { int c=0; char * s="\ta\018bc"; for ( ;* s!='\0';s++) c++;printf ("%d",c);getch();} A.6 B.5 C.7 D.8 答案:A 6. 下面能正确进行字符串赋值操作的是( ) A. char a[5]={"ABCDE"}; B. char a[5]={ 'A','B',‘D',E'}; C. char * s;s="ABCDE"; D. char * s;scanf("%s",s); 答案:C 7. 以下程序的运行结果是( ) #include<stdio.h> #include<conio.h> int main( ) { char * s="abcde"; s+=2; printf("%s",s);getch();} A.abcde B.abc C.bcde D. cde 答案:D 8. 以下程序的运行结果是( ) #include<stdio.h> #include<conio.h> int main( ) { char * format="%s,a=%d,b=%d "; int a=1,b=10; a+=b; printf(format,"a+=b",a,b);getch();} A. a+=b,a=11,b=10 B.for,”a+b”,ab C.format,”a+=b” D.format,"a+=b",a,b 答案:A 9. 下列程序的输出结果是( ) #include<stdio.h> #include<conio.h> int main( ) { char str[ ]="abcdefg", * p=str; printf( "%d ", * (p+2) );getch();} A.97 B.99 C.c D.a 答案:B 10. 下面程序的输出结果是( ) #include<stdio.h> #include<conio.h> #include<string.h> int main( ) { char pl[ ]="abcdefgh", *p=pl; p+=5;printf("%d ",strlen(strcpy(p,"AB"))); getch();} A.8 B.5 C.2 D.10 答案:C 11. 下列程序的输出结果是( ) #include<stdio.h> #include<conio.h> #include<string.h> int main( ) { char a[ ]="LANGUAGE",* p; p=a; while ( *p!='U') { printf("%c", *p+32);p++;} getch();} A. langUAGE B. language C. LANGUAGE D. lang 答案:D 12. 若有语句:char sl[100 ]="string",s2[8]="", * s3, * s4="string2";则对库函数strcpy 的错误调用是( ) A. strcpy(sl,"string2"); B. strcpy(s4J'stringl"); C. strcpy(s3,"stringl"); D. strcpy(sl,s2); 答案:C 13. 若有说明语句,则以下不正确的叙述是( ) char a[ ]="lt is mine"; char * p="lt is mine"; A. a+1表示的是字符t所在存储单元的地址 B. p指向另外的字符串时,字符串的长度不受限制 C. p变量中存放的地址值可以改变 D. a中只能存放10个字符 答案:D 14. 下列程序的输出结果是( ) int main( ) { char s[6];s="abcd", printf("\"%s\" ",s); getch();} A. "abed" B. "abed " C. \"abcd \" D. 编译出错 答案:D 15. 变量的指针,其含义是指该变量的( ) A.值 B.地址 C.名 D.一个标志 答案:B 16. 若有定义:int a=1,*p;p=&a;,则下面均表示地址的一项是( ) A.&a &*p p B.a p *&a C.&*a &a *p D. &a &*p *p 答案:A 17. 若已有定义:float a=2025;,则以下定义指针变量p且赋初值的语句中,正确的一项是( ) A.float *p=2025; B.float *p=&a; C.int *p=(float)a; D.float p=&a; 答案:B 18. 已有定义:int *p,x;,则语句:p=&x;中的&是( ) A.按位与 B.取地址 C.逻辑与 D.非法,有语法错误 答案:B 19. 若有定义:int abc[10];,则下面不能表示abc[1]的地址的是( ) A.&abc[0]+1 B.&abc[1] C.&abc[0]++ D.abc+1 答案:C 20. 假设每个int型数据占2字节,若有定义:int aa[10]={1,2,3,4};,则aa数组占内存字节数是( ) A.20 B.4 C.8 D.40 答案:A 二、程序运行结果题(本题共7小题,每题3分,共21分) 21. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> void su( int x,int y,int * z) { *z=y-x;} int main( ) { int a,b,c; su(20,15,&a); su(2,a,&b); su(a,b,&c); printf("%4d,%4d,%4d ",a,b,c);getch();} 答案: -5, -7, -2 22. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> int main( ) { int a,b,k=3,m=5,* pl=&k,* p2=&m; a=pl==&m; b=(-* pl)*( * p2)+9; printf("a= %d,",a); printf("b= %d ",b);getch();} 答案:a= 0,b= -6 23. 当运行以下程序时,从键盘输入“Happy new year!2025<回车>”,则程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> int stre(char str[ ]) {int num=0; while( * (str+num)!='\0') num++; return (num);} int main( ) { char str[10], * p=str; gets(p); printf("%d ",stre(p) ) ; getch();} 答案:19 24. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> #include<string.h> int main( ) { static char a[ ]="Language", b[ ]="programe"; char * pl, * p2;int k; pl=a;p2=b; for(k=0;k<=5;k++) if( * (pl+k)== *(p2+k)) printf("%c", * (pl+k)); getch(); } 答案:ga 25. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> #include<string.h> int main( ) { int a=34,b; char s[10],* p;p=s; do { b=a%16; if(b<10) *p=b+48; else *p=b+55; p++; a=a/5; } while(a>0); * p='\0';puts(s); getch(); } 答案:261 26. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> #include<string.h> void delch(char * s) {int i,j; char * a;a=s; for(i=0,j=0;a[i]!='\0';i++) if(a[i]>='0'&&a[i]<='9') { s[j]=a[i]; j++; } s[j]='\0';} int main( ) { char item[]="a34b5ac"; delch(item);printf("%s",item); getch(); } 答案:345 27. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> #include<string.h> main(){ char *sl="AbDeG"; char * s2="AbdEg"; sl+=3;s2+=3; printf("%d ",strcmp(sl,s2)); getch();} 答案:1 三、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共27分) 28. 下面程序的功能是将一个整数字符串转换为一个整数,如将字符串〃-1234"转换为数值-1234。请选择填空。 #include<stdio.h> #include<conio.h> #include<string.h> int chnum(char * p); int main( ) {char s[6];int n; gets(s); if(*s=='-') n=-chnum(【1】); else n=chnum(s); printf("%d ",n); getch();} int chnum(char * p) { int num=0, k, len, j; len=strlen(p); for(;【2】;p++) {k=【3】;j=(--len); while(【4】) { k=k * 10;} num=num+k; } return(num);} 答案: 【1】s+1 【2】*p!='\0' 【3】*p-'0' 【4】j-->0 29. 下面程序的功能是从输人的10个字符串中找出最长的一串。请填空。 #include<stdio.h> #include<conio.h> #include<string.h> #define N 10 int main( ) { char str[N][81], *sp; int i; for(i=0;i<N;i++) gets(str[i]); sp=【1】; for(i=1;i<N;i++) if(【2】) sp=str[i]; printf("sp= %d,%s ",strlen(sp),sp);getch();} 答案: 【1】str[0]或&str[0][0] 【2】strlen(sp)<strlen(str[i]) 30. 下面程序的功能是将八进制正整数字符串转换为十进制整数。请填空。 #include<stdio.h> #include<conio.h> #include<string.h> int main( ) { char * p, s[6];int n; p=s; gets(p); n=【1】; while(【2】!='\0') n=【3】; printf("%d ",n);getch();} 答案: 【1】*p-'0' 【2】*(++p) 【3】n* 8+ * p-'0' 四、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。(每处3分,共12分) 31. 下面程序的功能是在字符串str中找出最大的字符并放在第一个位置上,并将该字符前的原字符往后顺序移动,如chyab变成ychab。程序中有两处错误,请改正。 L1 #include<stdio.h> L2 #include<conio.h> L3 main(){ L4 char str[80], * p,max, * q; L5 p=str; L6 gets(p); L7 max= * (p++); L8 while( * p!='\0') L9 { if(max> * p) L10 { max= * p; L11 q=p;} L12 p++; } L13 p=q; L14 while(p>str) L15 { * p= * (p-1); L16 p++;} L17 * p=max; L18 puts(p); L19 getch(); } 答案: 【1】L9 { if(max< * p) 【2】L16 p- -;} 32. 下面程序的功能是将字符串s中的内容按逆序输出,但不改变串中的内容。程序中有两处错误,请改正。 L1 #include<stdio.h> L2 #include<conio.h> L3 int inverp (char * a) L4 { if (!*a) return 0; L5 inverp (a-1); L6 printf("%c",a);} L7 int main ( ) L8 { char s[20]="Happy new year!"; L9 inverp(s); L10 getch();} 答案: 【1】L5 inverp (a+1); 【2】L6 printf("%c",*a);} 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$

资源预览图

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