您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > C语言习题集合(指针)
第七章指针·1·第七章指针7.1选择题1.若有说明:inta=2,*p=&a,*q=p;,则以下非法的赋值语句是()。A.p=q;B.*p=*q;C.a=*q;D.q=a;2.若定义:inta=511,*b=&a;,则printf(%d\n,*b);的输出结果为:A.无确定值B.a的地址C.512D.5113.已有定义inta=2,*p1=&a,*p2=&a;下面不能正确执行的赋值语句是()。A.a=*p1+*p2;B.p1=a;C.p1=p2;D.a=*p1*(*p2);4.变量的指针,其含义是指该变量的()。A.值B.地址C.名D.一个标志5.若有说明语句:inta,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);6.若已定义inta=5;下面对(1)、(2)两个语句的正确解释是()。(1)int*p=&a;(2)*p=a;A.语句(1)和(2)中的*p含义相同,都表示给指针变量p赋值。B.(1)和(2)语句的执行结果,都是把变量a的地址值赋给指针变量p。C.(1)在对p进行说明的同时进行初始化,使p指向a;(2)变量a的值赋给指针变量p。D.(1)在对p进行说明的同时进行初始化,使p指向a;(2)将变量a的值赋予*p。7.若有语句int*p,a=10;p=&a;下面均代表地址的一组选项是()。A.a,p,*&aB.&*a,&a,*pC.*&p,*p,&aD.&a,&*p,p8.若需要建立如图所示的存储结构,且已有说明double*p,x=0.2345;则正确的赋值语句是()。A.p=x;B.p=&x;C.*p=x;D.*p=&x;9.若有说明:int*p,a=1,b;以下正确的程序段是()。A.p=&b;B.scanf(%d,&b);scanf(%d,&p);*p=b;C.p=&b;D.p=&b;scanf(%d,*p);*p=a;10.有如下语句:intm=6,n=9,*p,*q;p=&m;q=&n;如图1所示,若要实现下图所示的存储结构,可选用的赋值语句是()。0.2345px第七章指针·2·A.*p=*q;B.p=*q;C.p=q;D.*p=q;11.以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是()。#includestdio.hmain(){int*p,*q,a,b;p=&a;printf(inputa:);scanf(%d,*p);…}A.*p表示的是指针变量p的地址B.*p表示的是变量a的值,而不是变量a的地址C.*p表示的是指针变量p的值D.*p只能用来说明p是一个指针变量12.下面程序的功能是从输入的十个字符串中找出最长的那个串。请在________处填空。#includestdio.h#includestring.h#defineN10main(){chars[N][81],*t;intj;for(j=0;jN;j++)gets(s[j]);t=*s;for(j=1;jN;j++)if(strlen(t)strlen(s[j]))________;printf(themaxlengthoftenstringsis:%d,%s\n,strlen(t),t);}A.t=s[j]B.t=&s[j]C.t=s++D.t=s[j][0]13.下面判断正确的是()。A.char*s=girl;等价于char*s;*s=girl;B.chars[10]={girl};等价于chars[10];s[10]={girl};C.char*s=girl;等价于char*s;s=girl;D.chars[4]=boy,t[4]=boy;等价于chars[4]=t[4]=boy14.设char*s=\ta\017bc;则指针变量s指向的字符串所占的字节数是()。A.9B.5C.6D.7mpnqpmqn第七章指针·3·15.下面程序段中,for循环的执行次数是()。char*s=\ta\018bc;for(;*s!='\0';s++)printf(*);A.9B.5C.6D.716.以下不能正确进行字符串赋初值的语句是()。A.charstr[5]=good!;B.char*str=good!;C.charstr[]=good!;D.charstr[5]={'g','o','o','d'};17.若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是()。A.p=2*(int*)malloc(sizeof(int));B.p=(int*)malloc(2*sizeof(int));C.p=(int*)malloc(2*2);D.p=(int*)calloc(2,sizeof(int));18.下面程序段的运行结果是()。char*s=abcde;s+=2;printf(%d,s);A.cdeB.字符'c'C.字符'c'的地址D.无确定的输出结果19.设有如下的程序段:chars[]=girl,*t;t=s;则下列叙述正确的是()。A.s和t完全相同B.数组s中的内容和指针变量t中的内容相等C.s数组长度和t所指向的字符串长度相等D.*t与s[0]相等20.以下正确的程序段是()。A.chars[20];B.char*s;scanf(%s,&s);scanf(%s,s);C.chars[20];D.chars[20],*t=s;scanf(%s,&s[2]);scanf(%s,t[2]);21.下面程序段的运行结果是()。#includestdio.hmain(){intm=10,n=20;char*format=%s,m=%d,n=%d\n;m*=n;printf(format,m*=n,m,n);}A.format,m*=n,m,nB.format,m*=nC.m*=n,m=200,n=20D.以上结果都不对22.以下与库函数strcpy(char*p,char*q)功能不相等的程序段是()。A.strcpy1(char*p,char*q){while((*p++=*q++)!='\0');}第七章指针·4·B.strcpy2(char*p,char*q){while((*p=*q)!='\0'){p++;q++;}}C.strcpy3(char*p,char*q){while(*p++=*q++);}D.strcpy4(char*p,char*q){while(*p)*p++=*q++;}23.下面程序段的运行结果是()。#includestdio.hmain(){chars[]=example!,*t;t=s;while(*t!='p'){printf(%c,*t-32);t++;}}A.EXAMPLE!B.example!C.EXAMD.example!24.以下正确的程序段是()。A.chars[]=12345,t[]=6543d21;strcpy(s,t);B.chars[20],*t=12345;strcat(s,t);C.chars[20]=,*t=12345;strcat(s,t);D.char*s=12345,*t=54321;strcat(s,t);25.以下与库函数strcmp(char*s,chat*t)的功能相等的程序段是()。A.strcmp1(char*s,chat*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);C.strcmp3(char*s,char*t){for(;*t==*s;){if(!*t)return0;t++;s++;}return(*s-*t);}第七章指针·5·D.strcmp4(char*s,char*t){for(;*s==*t;s++,t++)if(!*s)return0;return(*t-*s);}26.若有以下定义和语句:ints[4][5],(*ps)[5];ps=s;则对s数组元素的正确引用形式是()。A.ps+1B.*(ps+3)C.ps[0][2]D.*(ps+1)+327.不合法的main函数命令行参数表示形式是:()。A.main(inta,char*c[])B.main(intargc,char*argv)C.main(intarc,char**arv)D.main(intargv,char*argc[])28.若有说明语句:chars[]=itisaexample.,*t=itisaexample.;则以下不正确的叙述()。A.s表示的是第一个字符i的地址,s+1表示的是第二个字符t的地址B.t指向另外的字符串时,字符串的长度不受限制C.t变量中存放的地址值可以改变D.s中只能存放16个字符29.若已定义chars[10];则在下面表达式中不表示s[1]地址的是()。A.s+1B.s++C.&s[0]+1D.&s[1]30.下面程序段的运行结果是()。(注:└┘代表空格)#includestdio.hmain(){chars[6];s=abcd;printf(\%s\\n,s);}A.abcdB.abcd└┘C.\abcd\D.编译出错31.执行以下程序后,a的值为【1】,b的值为【2】。#includestdio.hmain(){inta,b,k=4,m=6,*p=&k,*q=&m;a=p==&m;b=(-*p)/(*q)+7;printf(a=%d\n,a);printf(b=%d\n,b);}【1】A.-1B.1C.0D.4【2】A.5B.6C.7D.1032.下面程序的功能是将字符串s的所有字符传送到字符串t中,要求每传递三个字符后再存放一个空格,例如字符串s为abcdefg,则字符串t为abcdefg,请选择填空。#includestdio.h第七章指针·6·#includestring.hmain(){intj,k=0;chars[60],t[100],*p;p=s;gets(p);while(*p){for(j=1;j=3&&*p;【1】)t[k]=*p;if(【2】){t[k]='';k++;}}t[k]='\0';puts(t);}【1】A.p++B.p++,k++C.p++,k++,j++D.k++,j++【2】A.j==4B.*p=='\0'C.!*pD.j!=433.下面程序的功能是将八进制正整数字符串转换为十进制整数。请选择填空。#includestdio.h#includestring.hmain(){char*t,s[8];intn;t=s;gets(t);n=【1】;while(【2】!='\0')n=n*8+*t-'0';printf(%d\n,n);}【1】A.0B.*tC.*t-'0'D.*t+'0'【2】A.*tB.*t++C.*(++t)D.t34.下面程序的功能是在字符串s中找出最大的字符并放在第一个位置上,并将该字符前的原字符往后顺序移动,如:boy&girl变成ybo&girl。请选择填空。#includestdio.h#includestring.hmain(){chars[80],*t,max,*w;t=s;gets(t);max=*(t++);while(*t!='\0'){if(max*t)第七章指针·7·{max=*t;w=t;}t++;}t=w;while(【1】){*t=*(t-1);【2】;}*t=max;puts(t);}【1】A.tsB.t=sC.*ts[0]D.*t=s[0]【2】A.t++B.s--C.t--D.w--35.以下程序的功能是删除字符串s中的所有空格(包括T
本文标题:C语言习题集合(指针)
链接地址:https://www.777doc.com/doc-4971354 .html