《c语言指针习题集与答案.docx》由会员分享,可在线阅读,更多相关《c语言指针习题集与答案.docx(7页珍藏版)》请在第壹文秘上搜索。
1、指针习题及答案一.选择题1.变量的指针,其含义是指该变量的医A)值B)地址C)名D)一个标志2 .己有定义intk=2;int*ptrl,*ptr2;且ptrl和ptr2均己指向变量k,下面不能正确执行的赋值语句是A)k=*ptrl+*ptr2B)ptr2=kC)ptrl=ptr2D)k=*ptrl*(*ptr2)3 .假设有说明:int*p,m=5,n;以下程序段正确的选项是必A)p=&n;B)P=&n;SCanf(d”,&p);SCanf(d,*p);C)SCanf(d”,&n);D)p=&n;*p=n;*p=m;4 .己有变量定义和函数调用语句:inta=25;PrintNaIUe(&a
2、);下面函数的输出结果是必voidprint_value(int*x)Printf(dn”,+*x);)A)23B)24C)25D)265 .假设有说明:int*pl,*p2,m=5,n;以下均是正确赋值语句的选项是如A)pl=&m;p2=&pl;B)pl=&m;p2=&n;*pl=*p2;C)pl=&m;p2=pl;D)pl=&m;*pl=*p2;6 .假设有语句:int*p,a=4;和P=&a;下面均代表地址的一组选项是A)a,p,*&aB)&*a,&a,*pC)*&p,*p,&aD)&a,&*p,p7 .下面判断正确的选项是C。A) char*a=,zChina;等价于char*a;*a
3、=zzchinaz,;B) charstr10=44chinaw);等价于charstrIO;str=uchinaw;)C) char*s=wchina,z;等价于char*s;s=ffchina,z;D) charc4=z,abc,z,d4=wabc”;等价于charcl4J=d4=zzabcz;8 .下面程序段中,for循环的执行次数是CoChar*s=ta018bcv;for(;*s!=,0,;s+)Printf(*);A)9B)7C)6D)59 .下面能正确进展字符串赋值操作的是C。A)chars5=tlABCDE;B)CharS5=A,B,C,D,E;C)char*s;s=ABCDE
4、”;D)char*s;SCanf(s”,s);10 .下面程序段的运行结果是C。char*s=z,abcdez,;s+=2;printfC%d,z,s);A)cdeB)字符QC)字符Q的地址D)不确定IL设Pl和p2是指向同一个字符串的指针变量,c为字符变量,那么以下不能正确执行的赋值语句是次A)c=*pl+*p2B)p2=cC)pl=p2D)c=*pl*(*p2)12.设有程序段:CharS=Chin设;程ar*p;p=s;那么下面表达正确的选项是RoA)S和P完全一样B)数组S中的内容和指针变量P中的内容相等C) S数组长度和P所指向的字符串长度相等D) *p与s0相等13.以下与库函数S
5、trCPy(Char*pl,char*p2)功能不相等的程序段是A) strcpy1(char*pLchar*p2)(while(*pl+=*p2+)!=,0,);B) strcpy2(char*p1,char*p2)while(*pl=*p2)!=,0,)pl+;p2+)C) strcpy3(char*pLchar*p2)(while(*pl+=*p2+);)D) strcpy4(char*pl,char*p2)while(*p2)*pl+=*p2+;J14.下面程序段的运行结果是2。chara=wlanguagew,*p;P=a;while(*p!=,u,)Printf(%c”,*p-32
6、);p+;)A)LANGUAGEB)languageC)LANGD)IangUAGE16.以下与库函数StrCmP(Char*s,char*t)功能相等的程序段是A)strcmpI(char*s,char*t)for(;*s+=*t+;)if(*s=,0,)return0;return(*s-*t);)B) strcmp2(char*s,char*t)for(;*s+=*t+;)if(!*s)return0;return(*s*t);JC) strcmp3(char*s,char*t)for(;*t=*s;)if(!*t)return0;t+;s+;)return(*s*t);)D) strc
7、mp4(char*s,char*t)for(;*s=*t;s+,t+)if(!*s)return0;return(*t*s);)17 .以下说明不正确的选项是D。A)Charan0=chinaz,;B)chara10,*p=a;p=/zchina*;C)char*a;a=wChina”;D)chara10,*p;p=a=wChina;18 .设有说明语句:chara=wItismine;Char*p=,zItismine;那么以下不正确的表达是D。A) a+1表示的是字符t的地址B) P指向另外的字符串时,字符串的长度不受限制C) P变量中存放的地址值可以改变A)s+1B)s+C)fcs0+l
8、D&sl20.假设有定义:inta5,*p=a;那么对a数组元素的正确引用是Q。A)*&a5B)a+2C)*(p+5)D)*(a+2)21.假设有定义:inta5,*p=a;那么对a数组元素地址的正确引用是A)p+5B)*a+lC)&a+lD)&a022.假设有定义:inta23;那么对a数组的第i行第j列元素值的正确引用是A0A)*(*(a+i)j)B)(a+i)jC)*(a+i+j)D)*(a+i)+jD)a中只能存放10个字符19.假设己定义Chars10;那么在下面表达式中不表示sl的地址是123.假设有定义:inta23;那么对a数组的第i行第j列元素地址的正确引用是必A)*(ai+
9、j)B)(a+i)24.假设有程序段:inta23,(*p)3;C) *(a+j)D ai+jp=a;那么对a数组元素地址的正确引用是。A)*(p+2)B)p2Cpl+lD(p+1)+225 .假设有程序段:inta23,(*p)3;p=a;那么对a数组元素的正确引用是加A)(p+l)OJB)*(*(p+2)+l)C)*(pl+l)Dpl+226 .假设有定义:inta5;那么a数组中首元素的地址可以表示为CoA)&aB)a+lC)aD)&al27 .假设有定义:int(*p)4;那么标识符pg。A)是一个指向整型变量的指针B)是一个指针数组名C)是一个指针,它指向一个含有四个整型元素的一维数
10、组D)定义不合法28 .以下与int*q5;等价的定义语句是C。A)intq5B)int*qC)int*(q5)Dint(*q)529 .以下正确的说明语句是乐A) int*b=l,37,9);B) inta5,*11um5=&a0,&a1,&a2,&a3,&a4;C) inta=1,3,5,7,9);int*num5=a0J,al,a2,a3,a4;D) inta34,(tnum)4;numl=&al3;30.假设有定义:intb46,*p,*q4;且0i4,那么不正确的赋值语句是D.A)qi=bi;Bp=b;C)p=bi;D)qiJ=&bOOj32 .假设要对a进展自减运算,那么a应有下面
11、说明必A)intp3;Bintk;C)char*a3int*a=p;int*a=&k;33 .以下选项中,对指针变量P的正确操作是R。A)inta3,*p;Binta5,*p;C)inta5;p=&a;p=a;int*p=a=100;D)intbIO;int*a=b+1;D)inta5int*pl,*p2=a;*pl=*p2;34.假设有定义:intx10=0,1,2,3,4,5,6,7,8,9),*pl;那么数值不为3的表达式是C0A)x3C)pl=x+2,*(pl+)35 .下面程序段的输出是C。B) pl=x+3,*pl+D) pl=x+2,*+plinta=2,4A8,1OJ2,14,
12、16,18,20,22,24),*q4J,k;for(k=01;kdn,q30);A)8B)16C)20D)输出不合法36 .假设要对a进展自增运算,那么a应具有下面说明以A)inta32;B)Char*a=12,ab;C)char(*a)3D)intb10,*a=b;37 .假设有定义inta46;那么能正确表示a数组中任一元素ai数j(i,j均在有效范围内)地址的表达式白。B) &a00+4*j+iD) &a00+6*j+IC) 2 2D) 4 6A)fca00+6*i+jC)&a00+4*i+j38 .下面程序的运行结果是B。main()intx5=2,4,6,8,10),*p,*pp;
13、p=x,pp=&p;Printf(%d”,*(p+);Printf(3d”,*pp);)A)44B)2439 .假设有定义intx43=1,2,3,456,7,8,9,10,11,12);int(*p)3=x;那么能够正确表示数组元素xl的表达式是匕A)*(*p+l)2)B)(*p+l)+2C)*(*(p+5)D)*(*(p+l)+2)40.假设有说明:char*language=ttFORTRANw/BASICzPASCAL,JAVAC;那么language2的值是BeA) 一个字符B)一个地址C)一个字符串D)一个不定值41.设有定义:char*cc2=“1234”,“5678”;那么正确的表达是A)CC数组的两个元素中各自存放了字符串1234”和“5678”的首地址B) cc数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址C) CC是指针变量,它指向含有两个数组元素的字符型一维数组D) CC元素的值分别维“1234和“5678”42 .己有定义int(*p)();指针P可以BoA)代表函数的返回值B)指向函数的入口地址C)表示函数的类型D)表示函数返回值的类型43 .己有函数max(a,b),为了让函数指针变量P指向函数max,正确的赋值方法是A)p=max;B)p