还剩7页未读,继续阅读
文本内容:
练习7-1答案选择题1.已知int*pa;,则语句“p=a;”中的运算符“”的含义是DA.位与运算B.逻辑与运算C.取指针内容D.取变量地址2.已知intax;,则正确的赋值语句是CA.a=a
[1]+a
[2]/2;B.a*=*a+1;C.a=x=1x++x+2;D.a=good;3.已知inta*p=a;,则下列函数调用中错误的是DA.scanf%da;B.scanf%dp;C.printf%da;D.scanf%d*p;4.已知char*p*q;,选择正确的语句CA.p*=3;B.p/=q;C.p+=3;D.p+=q;5.已知intx;,则下面的说明指针变量pb的语句C是正确的A.intpb=x;B.int*pb=x;C.int*pb=x;D.*pb=*x;练习7-2答案
一、选择题1.设有说明int*ptr[M];,其中的标识符ptr是CA.M个指向整型变量的指针B.指向M个整型变量的函数指针C.一个指向具有M列的二维数组的一行的指针D.具有M个指针元素的一维数组的指针2.已知double*p
[6];,它的含义是CA.p是指向double型变量的指针B.p是double型数组C.p是指针数组D.p是数组指针3.已知chars
[10]*p=s,则在下列语句中,错误的语句是BA.p=s+5;B.s=p+s;C.s
[2]=p
[4];D.*p=s
[0];4.已知chars
[100];inti;,则在下列引用数组元素的语句中,错误的表示形式是DA.s[i+10]B.*s+iC.*i+sD.*s+++i5.已知charb
[5]*p=b;,则正确的赋值语句是CA.b=abcd;B.*b=abcd;C.p=abcd;D.*p=abcd;6.下列对字符串的定义中,错误的是AA.charstr
[7]=FORTRAN;B.charstr[]=FORTRAN;C.char*str=FORTRAN;D.charstr[]={FORTRAN0};7.已知chars
[20]=programming*ps=s;,则不能引用字母o的表达式是AA.ps+2B.s
[2]C.ps
[2]D.ps+=2*ps8.已知char**s;,正确的语句是BA.s=computer;B.*s=computer;C.**s=computer;D.*s=A;9.已知charc
[8]=beijing*s=c;inti;,则下面的输出语句中,错误的是BA.printf%s\ns;B.printf%s\n*s;C.fori=0;i7;i++D.fori=0;i7;i++printf%cc[i];printf%cs[i];10.已知char*aa
[2]={abcdABCD};,则以下说法正确的是DA.aa数组元素的值分别是abcd序列和ABCD序列B.aa是指针变量,它指向含有两个数组元素的字符型一维数组C.aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址D.aa数组的两个元素中各自存放了字符a和A的地址11.已知inta
[3]
[4]*p=a
[0]
[0];p+=6;,那么*p和D的值相同A.*a+6B.*a
[0]+6C.*a
[1]+2D.a
[1]
[2]12.已知inta[]={123456789101112}*p=a;,则值为3的表达式是AA.p+=2*p++B.p+=2*++pC.p+=3*p++D.*a
[0]
[0]+613.已知int**p;,则变量p是BA.指向int的指针B.指向指针的指针C.int型变量D.以上三种说法均是错误的14.已知inta[]={1234}y*p=a
[1];,则执行语句y=*--p++;之后,变量y的值为AA.1B.2C.3D.415.已知intb[]={1234}y*p=b;,则执行语句y=*p++;之后,变量y的值为AA.1B.2C.3D.416.已知intx[]={1357911}*ptr=x;,则能够正确引用数组元素的表达式是BA.xB.*ptr--C.x
[6]D.*--ptr17.已知intx[]={1357911}*ptr=x;,则不能够正确引用数组元素的表达式是BA.*ptr--B.*--ptrC.*ptr++D.*++ptr18.若有以下语句且0=k6,则正确表示数组元素地址的表达式是Cstaticintx[]={1357911}*ptr=xk;A.x++B.ptrC.ptr[k]D.x+119.已知intix
[3]
[4];,则不能将x
[1]
[1]的值赋给变量i的语句是CA.i=**x+1+1;B.i=x
[1]
[1];C.i=**x+1;D.i=*x
[1]+1;20.已知inta
[2]
[3]={24681012};,正确表示数组元素的地址是AA.*a+1B.*a
[1]+2C.a
[1]+3D.a
[0]
[0]21.已知int*p;,使用如下语句动态申请一个int型的存储单元,应当使用Dp=mallocsizeofint;A.intB.int*C.*intD.int*
二、填空题22.阅读程序,下面程序的输出结果是15#includestdio.hmain{staticinta
[2]
[3]={{123}{456}};intm*ptr;ptr=a
[0]
[0];m=*ptr**ptr+2**ptr+4;printf%d\nm;}23.下面程序的功能是从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串.则
①是\0或
0、
②是++main{charstr
[81]*sptr;inti;fori=0;i80;i++{str[i]=getchar;ifstr[i]==\nbreak;}str[i]=
①;sptr=str;while*sptrputchar*sptr
②;}24.在下面的程序中若第一个printf语句的输出为ffe2,则其余语句的输出结果分别为
①是fff
4、
②是a、
③是
0、
④是bmain{staticinta[]={1234567890}*p=a;printf%x\np;/*输出结果为ffe2*/printf%x\np+9;/*输出
①*/printf%x\n*p+9;/*输出
②*/printf%x\n*p+9;/*输出
③*/printf%x\n*++p+9;/*输出
④*/}25.下面程序的输出结果,
①是m、
②是a、
③是w、
④是z、
⑤是mnopqr#includestdio.hchar*pp
[2]
[3]={abcdefghijklmnopqrstuvwxyz};main{printf%c\n***pp+1;/*输出
①*/printf%c\n**pp
[0];/*输出
②*/printf%c\n**pp+1+1
[4];/*输出
③*/printf%c\n*pp
[1]
[2]+2;/*输出
④*/printf%s\n**pp+1;/*输出
⑤*/}
三、读程序,写结果26.下面程序的运行结果是□□□1□□□3□□□5□□□7□□□9□□11□□13□□15□□17□□19□□21□□23注□表示空格#includestdio.hmain{inta
[3]
[4]={1357911131517192123};int*pi;forp=ai=0;pa
[0]
[0]+12;p++i++{ifi%4==0printf\n;printf%4d*p;}}27.下面程序的运行结果是333#includestdio.hmain{inta=2*p**pp;pp=p;p=a;a++;printf%d%d%d\na*p**pp;}练习7-3答案
一、选择题1.mainargcargv中形式参数argv的正确说明形式应当为A.A.char*argv[]B.charargv[][]C.charargv[]D.char*argv2.说明语句int*p;的含义是CA.p是一个指向一维数组的指针变量B.p是指针变量,指向一个整型数据C.p是一个指向函数的指针,该函数的返回值是一个整型D.以上都不对3.说明语句int**p;的含义是DA.p是一个指向int型数据的指针B.p是指针变量,它构成了指针数组C.p是一个指向函数的指针,该函数的返回值是一个整型D.p是一个指向函数的指针,该函数的返回值是一个指向整型的指针4.已知函数说明语句void*f;,则它的含义是AA.函数f的返回值是一个通用型指针B.函数f的返回值可以是任意的数据类型C.函数f无返回值D.指针f指向一个函数,该函数无返回值5.函数的功能是交换变量x和y中的值,并且通过正确调用返回交换的结果能正确执行此功能的函数是DA.funaint*xint*yB.funbintxinty{int*p;{intt;*p=x;*x=*y;*y=*p;t=x;x=y;y=t;}}C.funcint*xint*yD.fundint*xint*y{*x=*y;*y=*x;{*x=*x+*y;*y=*x-*y;*x=*x-*y;}}6.阅读程序,下面程序的输出结果是B假设可执行文件的文件名为PROG.EXE运行时键入的命令行为PROG-386NET3回车#includestdio.hmainintargcchar*argv[]{inti;fori=0;iargc;i++printf%s\nargv[i];}A.-386B.PROG.EXEC.PROG.EXED.PROGNET3-386--386NET3386NET3NET37.下面程序的运行结果是A#includestdio.hfintxinty{returny-x;}main{inta=5b=6c=2;intf;int*g=f;c=*gab;printf%d\nc;}A.1B.2C.3D.前面三个答案均是错误的8.若用数组名作为函数调用的实参,传递给形参的是AA.数组的首地址B.数组第一个元素的值C.数组中全部元素的值D.数组元素的个数
二、填空题9.下面的函数fun的功能是将形参x的值转换成二进制数,所得二进制数的每一位放在一维数组中返回,二进制的最低位放在下标为0的元素中,其他依次类推,则
①是
2、
②是2funintxintb[]{intk=0r;do{r=x%
①;b[k++]=r;x/=
②;}whilex;}10.函数expandchars[]chart[]在将字符串s复制到字符串t时,将其中的换行符和制表符转换为可见的转义字符,即用\n表示换行符,用\t表示制表符则
①是j++、
②是\\、
③是j++、
④是\\、
⑤是j++、
⑥是\0expandchars[]chart[]{intij;fori=j=0;s[i]!=\0;i++switchs[i]{case\n:t[
①]=
②;t[j++]=n;break;case\t:t[
③]=
④;t[j++]=t;break;default:t[
⑤]=s[i];break;}t[j]=
⑥;}
三、读程序,写结果11.以下程序的运行结果是10753-7main{inta
[5]={510-737}ijt;sorta;fori=0;i=4;i++printf%da[i];}sortinta[]{intijt;fori=0;i4;i++forj=0;j4-i;j++ifa[j]a[j+1]{t=a[j];a[j]=a[j+1];a[j+1]=t;}}12.以下程序的运行结果是-13689main{inta
[5]={9683-1}ijtp;sorta;fori=0;i=4;i++printf%da[i];}sortinta[]{intijtp;forj=0;j4;j++{p=j;fori=j;i=4;i++ifa[i]a[p]p=i;t=a[p];a[p]=a[j];a[j]=t;}}13.以下程序的运行结果是sum=6main{inta
[3]
[3]={1357911131517};intsum;sum=funca;printf\nsum=%d\nsum;}funcinta[]
[3]{intijsum=0;fori=0;i3;i++forj=0;j3;j++{a[i][j]=i+j;ifi==jsum=sum+a[i][j];}returnsum;}14.下面程序的运行结果是beforeswapa=5b=10inswapx=10y=5afterswapa=10b=5#includestdio.hmain{intab;a=5;b=10;printfbeforeswapa=%db=%d\nab;swapab;printfafterswapa=%db=%d\nab;}swapint*pxint*py{inttemp;temp=*px;*px=*py;*py=temp;printfinswapx=%dy=%d\n*px*py;}15.下面程序的运行结果是0123#includestdio.hfuncintb[]{intj;forj=0;j4;j++b[j]=j;}main{inta
[4]i;funca;fori=0;i4;i++printf%da[i];}16.运行下面程序,如果从键盘上输入字符串qwerty和字符串abcd,则程序的运行结果是10#includestdio.hstrlechara[]charb[]{intnum=0n=0;whilea[num]!=\0num++;whileb[n]{a[num]=b[n];num++;n++;}returnnum;}main{charstr1
[81]str2
[81];getsstr1;getsstr2;printf%d\nstrlestr1str2;}17.下面程序的运行结果是AGAAGAG#includestdio.h#includestring.hvoidfunchar*wintm{chars*p1*p2;p1=w;p2=w+m-1;whilep1p2{s=*p1++;*p1=*p2--;*p2=s;}}main{staticchara[]=ABCDEFG;funastrlena;putsa;}。