C语言-指针习题

上传人:s9****2 文档编号:498440022 上传时间:2023-01-26 格式:DOC 页数:7 大小:66.92KB
返回 下载 相关 举报
C语言-指针习题_第1页
第1页 / 共7页
C语言-指针习题_第2页
第2页 / 共7页
C语言-指针习题_第3页
第3页 / 共7页
C语言-指针习题_第4页
第4页 / 共7页
C语言-指针习题_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《C语言-指针习题》由会员分享,可在线阅读,更多相关《C语言-指针习题(7页珍藏版)》请在金锄头文库上搜索。

1、第8章 指针二、习题(一)、是非题1.运算符“*”有时是单目运算符,有时又可能是双目运算符。A.对 B.错2. 取地址运算符“&”与指针运算符“*”的优先级相同,结合方向为自右向左。A.对 B.错3. 指针变量的类型不是该变量本身的类型,而是它所指向的变量的类型。A.对 B.错4. 指针变量不可以作为函数的参数。A.对 B.错5. &b指的是变量b的地址所存放的值。A.对 B.错6. 语句int *p;定义了一个指针变量p,其值是整型的。A.对 B.错7. 语句“int *p ;”中*p的含义为取值。 /定义指针变量A.对 B.错8. 一个变量的地址就称为该变量的“指针”。A.对 B.错9.

2、语句int i,*p=&i;是正确的C定义。A.对 B.错10. 变量的指针,其含义是指该变量的一个标志。A.对 B.错11. void 类型的指针不指向某种类型的数据,所以没有意义。A.对 B.错12. 表达式*p+的运算顺序为先自增后取值。A.对 B.错13. C语言中,执行表达式(*p)+后p的指向改变了。A.对 B.错14. 两个指针相加没有意义。A.对 B.错15. 若有定义:int *p1,*p2,m=3,n;,则p1=&m;p2=p1;是正确的赋值语句。A.对 B.错16.已知int a4,*p;,则语句p=&a;是正确的。 / p=a;A.对 B.错17. char *name

3、5定义了一个一维指针数组,它有5个元素,每个元素都是指向字符数据的指针型数据。A.对 B.错18. *(&aij)与aij的含义相同。A.对 B.错19.若有定义:int (*p)4;,则标示符p是一个指针,它指向一个含有四个整型元素的一维数组。A.对 B.错20.设有以下定义:char *c2=12,34;,表示c数组的两个元素中分别存放了字符串12和34的首地址。A.对 B.错(二)、选择题1.变量的指针,其含义是指该变量的_。A.值 B.地址C.名D.一个标志2.下面能正确进行字符串赋值操作的是_。A.char s5=ABCDE;B.char s5=A,B,C,D,E;C.char *s

4、; s=ABCDE;D.char *s; scnaf(%s,&s);3.以下语句或语句组中,能正确进行字符串赋值的是_。A.char *sp;*sp=right; B.char s10;s=right;C.char s10;*s=right;D.char *sp=right;4.设有定义:char *c;,以下选项中能够使字符型指针c正确指向一个字符串的是_。A.char str=string ;c=str; B.scanf(%s,c); C.c=getchar() ; D.*c=string; 5.下列语句中,正确的是_。A.char *s;s=Olympic; B.char s7;s=Ol

5、ympic; C.char *s;s=Olympic; D.char s7;s=Olympic; 6.已有定义int k=2; int *p1,*p2; 且p1和p2均已指向变量k,下面不能正确执行的赋值语句是_。A.k=*p1+*p2; B.p2=k; C.p1=p2;D.k=*p1*(*p2);7.若有定义:double a10,*s=a;,以下能够代表数组元素a3的是_。A.(*s)3 B.*(s+3) C.*s3 D.*s+3 8.若有定义int a5,*p=a;,则对a数组元素的正确引用是_。A.*&a5 B.a+2 C.*(p+5) D.*(a+2)9.若有定义语句: double

6、 a,*p=&a;以下叙述中错误的是_。A.定义语句中*是一个间接访问运算符 B.定义语句中*号只是一个说明符 C.定义语句中p只能存放double类型变量的地址D.定义语句中,*p=&a 把变量a的地址作为初始赋给指针变量p 10.若有程序段:char str=china;char *p;p=str;则下列叙述正确的是_。A.*p与str0相等B.str数组长度和p所指向的字符串长度相等C.str和p完全相同D.数组str中的内容和指针变量p中的内容相等11.若有语句int *point,a=4;和point=&a; 下面均代表地址的一组选项是_。A.a,point,*&aB.&*a,&a,

7、*pointC.&point,*point,&a D.&a,&*point,point12.以下选项中,对指针变量p的正确操作是_。A.int a5,*p; p=&a; B.int a5,*p; p=a;C.int a5; int *p=a=1000; D.int a5; int *p1,*p2=a; *p1=*p2;13.设有定义语句:int m=2,4,6,8,*k=m;,以下选项中表达式的值为6的是_。A.*(k+2) B.k+2 C.*k+2 D.*k+=2 14.若有定义:int *p,m=5,n; ,以下正确的程序段是_。A.p=&n;scanf(%d,&p); B.p=&n;sc

8、anf(%d,*p); C.scanf(%d,&n); *p=n; D.p=&n;*p=m; 15.以下程序的运行结果是_。#include stdio.hmain()int m=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf(%d,%d,%d,%dn,m,n,*p,*q); A.1,2,1,2 B.1,2,2,1 C.2,1,2,1 D.2,1,1,2 16.若有定义语句:int a410,*p,*q4;且0i4,则错误的赋值是A.p=a B.qi=ai C.p=ai D.p=&a21 17.以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原

9、因是_。#include stdio.hmain() int *p,q,a,b; p=&a; printf(input a: ); scnaf(%d,*p); A.*p表示的是指针变量p的地址B.*p表示的是变量a的值,而不是变量a的地址C.*p表示的是指针变量p的值D.*p只能用来说明p是一个指针变量18.程序段char *s=abcde; s+=2; printf(%d,s);的运行结果是_。A.cdeB.字符cC.字符c的地址D.无确定的输出结果19.下面程序段的运行结果是_。char str=ABC, *p=str; printf(%dn,*(p+3); / *(p+3) 表示p的地址

10、从开始处移动3A.67 B.0C.字符C的地址D.字符C20.下面程序段的运行结果是_。char a=language, *p; p=a;while(*p!=u) printf(%c,*p-32); p+; A.LANGUAGE B.language C.LANG D.langUAGE21.若有定义char s10; ,则在下面表达式中不表示s1的地址的是_。A.s+1B.s+ C.&s0+1 D.&s122.以下程序的运行结果是_。#include #include main() char str20=One*World,One*Dream!,*p=str1;printf(%d,strlen

11、(p);printf(%sn,p); A.9,One*World B.9,One*Dream! C.10,One*Dream! D.10,One*World 23.下列函数的功能是_。fun(char *a,char *b) while(*b=*a)!=0) a+,b+; A.使a所指字符串赋给b所指空间B.使指针b指向a所指字符串 C.将a所指字符串和b所指字符串进行比较D.检查a和b所指字符串中是否有0 24.以下程序的运行结果是_。#include main() char *s=abc;do printf(%d,*s%10);+s;while(*s); A.abcB.789 C.7890

12、 D.979899 25.以下程序的运行结果是_。#include void fun(int *p) printf(%dn,p5); main() int a10=1,2,3,4,5,6,7,8,9,10;fun(&a3); A.5B.6C.8 D.9 26.若有定义语句: char *s=OK,*s2=ok;,以下选项中能够输出“OK”的语句是_。A.if(strcmp(s1,s2)=0) puts(s1); B.if(strcmp(s1,s2)!=0) puts(s2);C.if(strcmp(s1,s2)=1) puts(s1); D.if(strcmp(s1,s2)!=0) puts(s1); 27.以下程序的运行结果是_。#include void fun(char *c,int d) *c=

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 习题/试题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号