C语言指针习题及答案_第1页
C语言指针习题及答案_第2页
C语言指针习题及答案_第3页
C语言指针习题及答案_第4页
C语言指针习题及答案_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、指针主要内容得习题及答案.选择题1、变量得指针,其含义就是指该变量得&若有语句:int *p,a=4;与p=&a;下面均代表地址得一组选项就是A)值B)地址C)D)一个标志2、已有定义 int k=2;int*ptr1,*ptr2;且ptr1与ptr2均已指向变量k,下面不能正确执行得赋值语句就是A) k=* ptr1+* ptr2B)p tr2=kC)p tr1= ptr2D)k=* ptr1*(* pt3、若有说明:int *p,m=5,n;以下程序段正确得就是A)p=&n ;sca nf(“ %d,&p);scanf(“d ,*p);C)scanf( “%

2、d,&n);D)p = &n ;B) p = &n ;P=n ;F面函数得输出4、已有变量定义与函数调用语句:int a=25; prin t_value(&a);结果就是Dvoid prin t_value(i nt *x) printf( “ dn” ,+*x); A)23B)24C)25D)265、若有说明:int *p 1, *p2,m=5,n;以下均就是正确赋值语句得选项就是A) p仁&m; p2=&p1 ;B)p 1= &m; p2=&n; *p1=*p2 ;C) p仁&m; p2=p1 ;D) p仁&

3、m; *p 1=* p2 ;A)a ,p ,*&aB) &*a,&a,*pC)*&p ,* p,&aD)&a, &*p,p7、下面判断正确得就是CA) char *a= ” china ” ; 等价于 char *a; *a=” china ”B) char str10=“china ” ;等价于 char str10; str =“china ” ;C) char *s= ” china ” ; 等价于 char *s; s= ” china ”D)char c4= ” abc” ,d4= ” abc” ;等价于 char c4=d4=

4、” abc”8、下面程序段中,for循环得执行次数就是char *s= ” ta018bc ”for ( ; *s!=0 ' ; S+) printf(A)9B)7C)6D)59、F面能正确进行字符串赋值操作得就是A)char s5=“ABCDE ;B)chars5= A , ' B' , ' C , ' D , ' E' ;C)char *s ; s=” ABCDE ;D)char*s; scanf( “ %s ,s);10、下面程序段得运行结果就是char *s= ” abcde”s+=2 ; printf( “ d ,s);A)cd

5、eB)字符cC)字符c '得地址 D) 不确11、设p1与p2就是指向同一个字符串得指针变量,c为字符变量,则以下不能正确执行得赋值语句就是 BA)c=* p1+* p2B)p 2=cC)p 1= p2D) c=* p1*(* p2)12、设有程序段:char s =” china ” ; char *p ; p=s ; 则下面叙述正确得就A)s与p完全相同B) 数组s中得内容与指针变量p中得内容相等C) s数组长度与P所指向得字符串长度相等D)*p与s0相等13、以下与库函数strcpy(char *p 1,char *p2)功能不相等得程序段就是'0 ' ) ; A

6、) strc py1(char *p 1,char *p2) while (* p1+=* p2+)!=B) strc py 2(char *p 1,char *p2) while (* p仁* p2)!='0 ' ) p1+; p2+ C) strc py3(char *p 1,char *p2) while (*p 1+=* p2+) ; D) strc py4(char *p 1,char *p2) while (*p2) *p 1+=* p2+ ; 14、下面程序段得运行结果就是Cchar a =” language ” ,*p ;P=a ;while (*p!=

7、9; u' ) printf(“c ,*p-32); p+ ; A)LANGUAGEB)la nguageC)LANGD)la ngUAGE16、以下与库函数strcmp(char *s,char *t)功能相等得程序段就是A) strc mp 1(char *s,char *t) for ( ; *s+=*t+;)if (*s= =' 0 ' ) return 0 ;return (*s-*t);B) strc mp 2(char *s,char *t) for ( ; *s+=*t+;)if (!*s) return 0 ;return (*s-*t);C) str

8、c mp 3(char *s,char *t) for ( ; *t= =*s;) if (!*t) return 0 ; t+ ; s+ ; return (*s-*t);D) strc mp 4(char *s,char *t) for ( ; *s=*t; s+, t+ )if (!*s) return 0 ;return (*t-*s);17、以下说明不正确得就是DA)char a10= ” china ”B)char a10,* p=a;p= chi naC)char *a; a= ” china ”D)char a10,* p;p=a= china 18、设有说明语句:char a

9、= ” It is mine ” ;char *p= ” It is mine ” ;则以下不正确得叙述就是DA)a+1表示得就是字符t得地址B)p指向另外得字符串时,字符串得长度不受限制C)p变量中存放得地址值可以改变D)a中只能存放10个字符19、若已定义char s10;则在下面表达式中不表示s1得地址就是A)s+1B)s+C)&s0+1D)&s120、若有定义:int a5,*p=a;则对a数组元素得正确引用就是DA)*&a5B)a+2C)*( p+5)D)*(a+2)21、若有定义:int a5,*p=a;则对a数组元素地址得正确引用就是A) p+5B) *a

10、+1C) &a+1D) &a022、若有定义:int a23;则对a数组得第i行第j列元素值得正确引用就是.A)*(*(a+i)+j)B)(a+i)jC)*(a+i+j)D)*(a+i)+j23、若有定义:int a23;则对a数组得第i行第j列元素地址得正确引用就A)*(ai+j)B)(a+i)C)*(a+j)D)ai+j24、若有程序段:int a23,(*p)3;p=a;则对a数组元素地址得正确引用就A)* (P+2)B)p2c)p 1+1D)( P+1)+225、若有程序段:int a23,(*p)3; p=a;则对a数组元素得正确引用就是A)( P+1)0B) *(*

11、( P+2)+1)C)*( p1+1)D)p 1+226、若有定义:int a5;则a数组中首元素得地址可以表示为CA)&aB)a+1C)aD)&a127、若有定义:int (*p)4;则标识符pCA) 就是一个指向整型变量得指针B) 就是一个指针数组名C) 就是一个指针,它指向一个含有四个整型元素得一维数组D) 定义不合法A)i nt q5B)i nt *qC)i nt *(q5)D)i nt (*q)529、以下正确得说明语句就是A) i nt *b=1,3,5,7,9;B) i nt a 5,* num 5=&a0,&a1,&a2,&a3,

12、&a4;C) i nt a=1,3,5,7,9; int *nu m5=a0,a1,a2,a3,a4;D) i nt a34,(* num)4; num1=&a13;30、若有定义:int b46,*p,*q4;且0W i<4,则不正确得赋值语句就是A)qi=bi; B)p=b;c)p=bi;D)qi=&b0032、若要对a进行自减运算,则a应有下面说明A)i nt p3;B)i nt k;C)char *a3D)i nt b10;int *a=p;int *a=&k;int *a=b+1;33、以下选项中,对指针变量p得正确操作就是A)i nt a3,

13、* p;B)i nt a5, * p;C)i nt a5;D)i nt a5P=&a;P=a;int *p=a=100;int *p 1,* p2=a;*p 1=* p2;则数值不为3得表达式34、若有定义:int x10=0,1,2,3,4,5,6,7,8,9,*p1;就是C 0A)x3B)p 1=x+3,* p1+C) p 1=x+2,*( p1+)D) p 1=x+2,*+p135、下面程序段得输出就是Cint a =2,4,6,8,10,12,14,16,18,20,22,24,*q4,k;for (k=01; k<4; k+) qk=&ak*3;printf(

14、“ dn” ,q30);A)8B)16C)20D)输出不合法36、若要对a进行自增运算,则a应具有下面说明 DB)charA)i nt a32;*a =“ 12” , ” ab” ;C)char (*a) 3D)i nt b10, *a=b;37、若有定义 int a46;则能正确表示a数组中任元素aij(i,j均在有效范围内)地址得表达式A)&a00+6*i+jB)&a00+4*j+iC) &a00+4*i+jD) &a00+6*j+I38、下面程序得运行结果就是 Bmain () int x5=2,4,6,8,10, * p, * pp ;p=x , pp

15、= &P ;A)代表函数得返回值B)指向函数得入口地址printf(“d ,*(P+);printf(“3d ,*pp);A)4 4B)2C)2 2D)4 639、若有定义 int x43=1,2,3,4,5,6,7,8,9,10,11,12; int (*p)3=x ;则能够正确表示数组兀素x12得表达式就是_DA)*(* p+1)2)B)(* p+1)+2C)*(*( P+5)D)*(*( P+1)+2)40、若有说明:char*language=“FORTRAN, ” BASIC , ”PASCAL , " JAVA , ” C” ;则Ianguage2得值就是BA)

16、一个字符B)一个地址C)一个字符串D) 一个不定值5678” ;则正确得叙述就是41、设有定义:char *cc2=“ 1234” , ”A)cc数组得两个元素中各自存放了字符串”1234”与” 5678”得首地址B)cc数组得两个元素分别存放得就是含有4个字符得一维字符数组得首地址C)cc就是指针变量,它指向含有两个数组元素得字符型一维数组D)cc元素得值分别维” 1234”与” 5678” 42、已有定义int (*p)(); 指针P可以 BC)表示函数得类型D)表示函数返回值得类型43、已有函数max(a,b),为了让函数指针变量p指向函数max,正确得赋值方法就A)p=max;B)p=

17、max(a,b);C)*p=max;D)*p=max(a,b);44、若有函数max(a,b),并且已使函数指针变量p指向函数max,当调用该函数时,正确得调用方法就是C 或 P (a,b)A)(* p)max(a,b)B)* pm ax(a,b);C)(* p)(a,b);D )*P (a,b);45、以下正确得叙述就是CA)C语言允许main函数带形参,且形参个数与形参名均可由用户指定B)C语言允许main函数带形参,形参名只能就是argc与argvC)当main函数带有形参时,传给形参得值只能从命令行中得到则argc得值必须大于1D)若有说明:int main(int argc,char

18、 *argv).三. 程序阅读题1、写出下面程序得运行结果。5fun c(char *s,char a,i nt n) int j;*s=a; j=n ;while (*s<sj) j-;return j;main ( ) char c6 ;'A'+i+1;int i ;for (i=1; i<=5 ; i+) *(c+1)=printf( “%dn” ,func(c, 'E' ,5);2、写出下面程序得运行结果。 6fun (char *s) char *p=s;while (*p) p+ ;return (p-s) ;main ( ) char

19、*a= ” abcdef ”printf( “%dn”,fun(a) ;3、写出下面程序得运行结果。 abcdefglkjihsub(char *a,int t1,int t2) char ch;while (t1<t2) ch = *(a+t1); *(a+t1)=*(a+t2) ; *(a+t2)=ch ;t1+ ; t2- ;printf(“1 ”、n );'A +i+32 ;“c ,si);main () char s12;int i;for (i=0; i<12 ; i+) si= sub(s,7,11);for (i=0; i<12 ; i+) print

20、f (4、当运行以下程序时,写出输入6 /得程序运行结果。976531sub(char *a,char b) while (*(a+)!=' 0 ');while (*(a-1)<b)*(a-)=*(a-1);*(a-)=b;main () char s=” 97531” ,c;c = getchar ();sub(s,c); pu ts(s);5、写出下面程序得运行结果。JavadBaseC LanguageP ascalmain () char 】,k=0; substrk= =strj; k+;j+)a=“Pascal" , ” C Language” ,

21、 ” dBase” , ” Java” ;char (* p) ; int j ;for (j=3; j>=0; j-)printf(“ sn” ,*(P-);四. 程序填空题1、下面函数得功能就是从输入得十个字符串中找出最长得那个串,请填 空使程序完整。void fun( char str1081,char *s p) int i;sp =【1 str0【2for (i=1; i<10; i+)if (strle n (*sp )vstrle n(stri)2、下面函数得功能就是将一个整数字符串转换为一个整数,例如:” -1234 ”转换为1234,请填(3)空使程序完整。int chnu m(char *p) int num=O,k,le n,j ;len = strle n(p);for (;1*p!=' 0 '】;P+) k

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论