下载
加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 C语言指针练习 答案 讲解

C语言指针练习 答案 讲解.doc

C语言指针练习 答案 讲解

Sabina晓丽
2018-01-11 0人阅读 举报 0 0 暂无简介

简介:本文档为《C语言指针练习 答案 讲解doc》,可适用于高等教育领域

C语言指针练习答案讲解第七章指针(选择题(若有说明:inta=,*p=a,*q=p则以下非法的赋值语句是(D)。A(p=qB(*p=*qC(a=*qD(q=aa是整型数int*p*q定义了指针pq是指向整型的指针。p取得a的地址而q取得p的地址pq是指针(也就是一个地址)而*p和*q是这个指针指向的整型数值(存放在这个地址的值)。A)把q的地址赋给p则p和q完全一样了都指向一个数B)把q中数据个pC)把q中数据给aD)a中数据是不能够给一个地址。除非*q=a(若定义:inta=,*b=a则printf("dn",*b)的输出结果为:DA(无确定值B(a的地址C(D(inta=,*b=aa是整形变量b是整形指针变量指向aprintf("dn",*b)就是输出指针变量b所指变量的值输出结果(已有定义inta=,*p=a,*p=a下面不能正确执行的赋值语句是(B)。A(a=*p*pB(p=aC(p=pD(a=*p*(*p)、已知在程序中定义了如下的语句:int*P,*Pintkp=kp=k则下列语句中不能正确执行是(B)A、k=*P*PB、p=kC、P=PD、K=*P*(*P)PP是指针K是整型变量变量怎么可以赋值给指针呢,A其实是执行了K=KK(P和P都指向K所以*P*P其实都是指K)C是赋值语句D其实执行了K=K*K(变量的指针其含义是指该变量的(B)。A(值B(地址C(名D(一个标志(若有说明语句:inta,b,c,*d=c则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是(A)。A(scanf("ddd",a,b,d)B(scanf("ddd",a,b,d)C(scanf("ddd",a,b,d)D(scanf("ddd",a,b,*d)对于intc,*d=cc是一整型数据d是一指针它指向变量c(即d=c*是指针类型的说明符),所以输入c的值可以用scanf("d",c)也可以用scanf("d",d)(若已定义inta=下面对()、()两个语句的正确解释是(D)。()int*p=a()*p=aA(语句()和()中的*p含义相同都表示给指针变量p赋值。B(()和()语句的执行结果都是把变量a的地址值赋给指针变量p。C(()在对p进行说明的同时进行初始化使p指向a()变量a的值赋给指针变量p。D(()在对p进行说明的同时进行初始化使p指向a()将变量a的值赋予*p。A:():*p,定义p为int类型指针():*p,表示p所指向的变量B()把变量a的地址赋给指针变量p()把变量a的值赋值给P所指向的变量C前半句正确后半句错误()是把变量a的值赋值给P所指的变量。(若有语句int*p,a=p=a下面均代表地址的一组选项是(D)。A(a,p,*aB(*a,a,*pC(*p,*p,aD(a,*p,pint*p是定义一个指针p=a,p指向a的地址*p=a,*指针名是指取该指针所指地址中的内容a为a的地址*p=ap中放的为a的地址(若需要建立如图所示的存储结构且已有说明double*p,x=则正确的赋值语句是()。pxBA(p=xB(p=xC(*p=xD(*p=x(若有说明:int*p,a=,b以下正确的程序段是(B)。A(p=bB(scanf("d",b)scanf("d",p)*p=bC(p=bD(p=bscanf("d",*p)*p=aA,B中p是b的地址那么如果要输入b应该是scanf("d",p)C中p还没定义给*p赋值就是给一个没有开辟的地址赋值了D是正确的意思是p为b的地址将p地址上的数变成a,等价于b=a(有如下语句:intm=,n=,*p,*qp=mq=n如图所示若要实现下图所示的存储结构可选用的赋值语句是(C)。pqpqmmnnA(*p=*qB(p=*qC(p=qD(*p=q(以下程序中调用scanf函数给变量a输入数值的方法是错误的其错误原因是(B)。#include<stdioh>main(){int*p,*q,a,bp=aprintf("inputa:")scanf("d",*p)„}A(*p表示的是指针变量p的地址B(*p表示的是变量a的值而不是变量a的地址C(*p表示的是指针变量p的值D(*p只能用来说明p是一个指针变量scanf后面的参数是地址是接收的值放到这个地址(下面程序的功能是从输入的十个字符串中找出最长的那个串。请在处填空。#include"stdioh"#include"stringh"#defineNmain(){charsN,*tintjfor(j=j<Nj)gets(sj)t=*sfor(j=j<Nj)if(strlen(t)<strlen(sj))Aprintf("themaxlengthoftenstringsis:d,sn",strlen(t),t)}A(t=sjB(t=sjC(t=sD(t=sj(下面判断正确的是(C)。A(char*s="girl"等价于char*s*s="girl"B(chars={"girl"}等价于charss={"girl"}C(char*s="girl"等价于char*ss="girl"D(chars="boy",t="boy"等价于chars=t="boy"(设char*s="tabc"则指针变量s指向的字符串所占的字节数是(C)。A(B(C(D(首先字节数不是指字符串长度字符串长度比存储字节数少一。t是一个转义字符相当于键盘“Tab”键a普通字符转义字符ASCII代码值为进制数即进制数的那个符号b普通字符c普通字符字符串结束标志‘’s是字符串类型。每一个都是char型变量char型变量的二进制长度是也就是一个字节所以指针变量s指向的字符串所占字节数是字符串长度是(下面程序段中for循环的执行次数是(C)。char*s="tabc"for(*s!=''s)printf("*")tabc各一次A(B(C(D((以下不能正确进行字符串赋初值的语句是(A)。Acharstr="good!"B(char*str="good!"Ccharstr="good!"D(charstr={'g','o','o','d'}Acharstr={"good!"}这个不符合C语言的语法规定字符串初始化是这样写的:charstr="good!"因最后还有一个结束符因此数组元素应该是个。题目表述有些不准确C,D叫初始化B叫赋值。题目中的单双引号全部是中文的这也不符合C语言语法。应该改为英文的。(若指针p已正确定义要使p指向两个连续的整型动态存储单元不正确的语句是(A)。A(p=*(int*)malloc(sizeof(int))B(p=(int*)malloc(*sizeof(int))C(p=(int*)malloc(*)D(p=(int*)calloc(,sizeof(int))malloc的全称是memoryallocation中文叫动态内存分配当无法知道内存具体位置的时候想要绑定真正的内存空间就需要用到动态的分配内存。)。(下面程序段的运行结果是(Cchar*s="abcde"s=printf("d",s)A(cdeB(字符'c'C(字符'c'的地址D(无确定的输出结果(设有如下的程序段:chars="girl",*tt=s则下列叙述正确的是(D)。A(s和t完全相同B(数组s中的内容和指针变量t中的内容相等C(s数组长度和t所指向的字符串长度相等D(*t与s相等(以下正确的程序段是(B)。A(charsB(char*sscanf("s",s)scanf("s",s)C(charsD(chars,*t=sscanf("s",s)scanf("s",t)(下面程序段的运行结果是(C)。#include"stdioh"main(){intm=,n=char*format="s,m=d,n=dn"m*=nprintf(format,"m*=n",m,n)}A(format,"m*=n",m,nB(format,"m*=n"C(m*=n,m=,n=D(以上结果都不对(以下与库函数strcpy(char*p,char*q)功能不相等的程序段是(D)。A(strcpy(char*p,char*q){while((*p=*q)!='')}B(strcpy(char*p,char*q){while((*p=*q)!=''){pq}}C(strcpy(char*p,char*q){while(*p=*q)}D(strcpy(char*p,char*q){while(*p)*p=*q}(下面程序段的运行结果是(C)。#include"stdioh"main(){chars="example!",*tt=swhile(*t!='p'){printf("c",*t)t}}A(EXAMPLE!B(example!C(EXAMD(example!(以下正确的程序段是(C)。A(chars="",t="d"strcpy(s,t)B(chars,*t=""strcat(s,t)C(chars="",*t=""strcat(s,t)D(char*s="",*t=""strcat(s,t)(以下与库函数strcmp(char*s,chat*t)的功能不相等的程序段是(D)。A(strcmp(char*s,chat*t){for(*s==*t)if(*s=='')returnreturn(*s*t)}B(strcmp(char*s,char*t){for(*s==*t)if(!*s)returnreturn(*s*t)C(strcmp(char*s,char*t){for(*t==*s){if(!*t)returnts}return(*s*t)}D(strcmp(char*s,char*t){for(*s==*ts,t)if(!*s)returnreturn(*t*s)}(若有以下定义和语句:ints,(*ps)ps=s则对s数组元素的正确引用形式是(C)。A(psB(*(ps)C(psD(*(ps)(不合法的main函数命令行参数表示形式是:(B)。A(main(inta,char*c)B(main(intargc,char*argv)C(main(intarc,char**arv)D(main(intargv,char*argc)(若有说明语句:chars="itisaexample(",*t="itisaexample"则以下不正确的叙述(B)。A(s表示的是第一个字符i的地址s表示的是第二个字符t的地址B(t指向另外的字符串时字符串的长度不受限制C(t变量中存放的地址值可以改变D(s中只能存放个字符(若已定义chars则在下面表达式中不表示s地址的是(B)。A(sB(sC(sD(s(下面程序段的运行结果是(A)。(注:代表空格)#include"stdioh"main(){charss="abcd"printf(""s"n",s)}A("abcd"B("abcd"C("abcd"D(编译出错(执行以下程序后a的值为【】b的值为【】。#include<stdioh>main(){inta,b,k=,m=,*p=k,*q=ma=p==mb=(*p)(*q)printf("a=dn",a)printf("b=dn",b)}【】A(B(C(D(【】A(B(C(D((下面程序的功能是将字符串s的所有字符传送到字符串t中要求每传递三个字符后再存放一个空格例如字符串s为"abcdefg"则字符串t为"abcdefg",请选择填空。CA#include"stdioh"#include"stringh"main(){intj,k=chars,t,*pp=sgets(p)while(*p){for(j=j<=*p【】)tk=*pif(【】){tk=''k}}tk=''puts(t)}【】A(pB(p,kC(p,k,jD(k,j【】A(j==B(*p==''C(!*pD(j!=(下面程序的功能是将八进制正整数字符串转换为十进制整数。请选择填空。错题AB#include"stdioh"#include"stringh"main(){char*t,sintnt=sgets(t)n=【】while(【】!='')n=n**t''printf("dn",n)}【】A(B(*tC(*t''D(*t''【】A(*tB(*tC(*(t)D(t(下面程序的功能是在字符串s中找出最大的字符并放在第一个位置上并将该字符前的原字符往后顺序移动如:boygirl变成ybogirl。请选择填空。BC#include"stdioh"#include"stringh"main(){chars,*t,max,*wt=sgets(t)max=*(t)while(*t!=''){if(max<*t){max=*tw=t}t}t=wwhile(【】){*t=*(t)【】}*t=maxputs(t)}【】A(t>sB(t>=sC(*t>sD(*t>=s【】A(tB(sC(tD(w(以下程序的功能是删除字符串s中的所有空格(包括TAB符、回车符)请填空。AC#include"stdioh"#include"stringh"#include"ctypeh"main(){charsgets(s)delspace(s)puts(s)}delspace(char*t){intm,ncharc】m)for(m=,n=【if(!isspace(【】))*C语言提供的库函数用以判断字符是否为空格*{cn=tmn}cn=''strcpy(t,c)}【】A(tmB(!tmC(tm=''D(tm==''【】A(tmB(*cmC(*(tm)D(*(cm)(下面程序的功能是统计字串sub在母串s中出现的次数。请选择填空。BC#include"stdioh"#include"stringh"main(){chars,subintngets(s)gets(sub)printf("dn",count(s,sub))}intcount(char*p,char*q){intm,n,k,num=for(m=pmm)for(【】,k=qk==pnk,n)if(q【】==''){numbreak}return(num)}【】A(n=mB(n=mC(n=D(n=【】A(kB(kC(kD(k(下列程序的输出结果是(C)。#include"stdioh"main(){inta={,,,,,,,,,},*pp=aprintf("dn",*p)}A(B(C(D((以下程序的输出结果是(C)。#include"stdioh"charcchar(charch){if(ch>='A'ch<='Z')ch=ch'A''a'returnch}main(){chars="ABCabc=defDEF",*p=swhile(*p){*p=cchar(*p)p}printf("sn",s)}A(abcABC=DEFdefB(abcaABCDEFdefC(abcabc=defdefD(abcabcdefdef(以下程序的输出结果是(D)。#include"stdioh"#include"stringh"main(){charb="abcdefg",b,*pb=bwhile(pb>=b)strcpy(b,pb)printf("dn",strlen(b))}A(B(C(D((有以下程序#include"stringh"#include"stdioh"main(){char*p="abcdefghjik"printf("dn",strlen(p))}程序运行后的输出结果是(D)。A(B(C(D((有以下程序voidss(char*s,chart){while(*s){if(*s==t)*s=t'a''A's}}main(){charstr="abcddfefdbd",c='d'ss(str,c)printf("sn",str)}程序运行后的输出结果是(B)。A(ABCDDEFEDBDB(abcDDfefDbDC(abcAAfefAbAD(Abcddfefdbd(以下程序调用findmax函数返回数组中的最大值。在下面划线处应填入的是(B)。#include"stdioh"findmax(int*a,intn){int*p,*sfor(p=a,s=apa<np)if()s=preturn(*s)}main(){intx={,,,,}printf("dn",findmax(x,))}A(p>sB(*p>*sC(ap>asD(pa>ps(有以下程序A#include"stdioh"#include"malloch"main(){char*q,*pp=(char*)malloc(sizeof(char)*)*为指针p分配一个地址*q=pscanf("ss",p,q)printf("ssn",p,q)}若从键盘输入:abcdef则输出结果是:A(defdefB(abcdefC(abcdD(dd(下面程序的运行结果是(D)。#include"stdioh"#include"stringh"fun(char*s){charts=tstrcpy(t,"example")}main(){char*sfun(s)puts(s)}A(exampleB(exampleC(exampleD(不确定的值(下列程序段的输出结果是(A)。#include"stdioh"voidfun(int*x,int*y){printf("dd",*x,*y)*x=*y=}main(){intx=,y=fun(y,x)printf("dd",x,y)}A(B(C(D((下列程序的输出结果是(C)。#include"stdioh"main(){chara={,,,,,,,,,},*p=aprintf("d",*p)}A(非法B(a的地址C(D((有以下程序#include"stdioh"#include"stringh"main(intargc,char*argv){intm,length=for(m=m<argcm)length=strlen(argvm)printf("dn",length)}程序编译连接后生成的可执行文件是fileexe若执行时输入带参数的命令行是:file则运行结果是(C)。A(B(C(D((有以下函数:char*fun(char*s){„returns}该函数的返回值是(D)。A(无确定值B(形参s中存放的地址值C(一个临时存储单元的地址D(形参s自身的地址值(假定下列程序的可执行文件名为fileexe则在该程序所在的子目录下输入命令行:filegirlboy后程序的输出结果是(B)。#include"stdioh"main(intargc,char*argv){intmif(argc<=)returnfor(m=m<argcm)printf("c",*argvm)}A(girlboyB(fgbC(girD(girlboy(设有一个名为file的C源程序且已知命令行为:filegirlboystudent则可得到以下运行结果的C源程序为(A)。girlboystudentA(main(intargc,char*argv){while(argc>)printf("sc",*argv,(argc>)'n':'')}B(main(inta,char*b){while(a>)printf("sn",*b)}C(main(intargc,char*argv){while(argc>)printf("sc",*argv,(argc>)'':'n')}D(main(intargc,char*argv){while(argc>)printf("s",*argv)}

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/24

C语言指针练习 答案 讲解

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利