您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > C语言程序设计练习题第3部分答案
-1-C程序设计语言练习题第三部分63.已知:intx;则下面说明指针变量pb的语句是正确的。A)intpb=&x;B)int*pb=x;C)int*pb=&xD)*pb=*x;64.有如下程序段:int*p,a,b=1;p=&a;*p=10;a=*p+b;执行该程序段后,a值是。A)12B)11C)10D)编译出错65.若有说明:inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是。A)i=*p;B)*p=*&j;C)i=&j;D)i=**p;66.已知:inta,*p=&a;则为了得到变量a的值,下列错误的表达式为______。A)*&pB)*pC)p[0]D)*&a67.已知staticinta[2][3]={2,4,6,8,10,12};正确表示数组元素地址的是__。A)*(a+1)B)a[1]+2C)a[1]+3D)a[0][0]68.已知inta[3][4],*p=*a;p+=6;那么*p和______的值相同。A)*(a+6)B)*(&a[0]+6)C)*(a[1]+2)D)*(&a[0][0]+6)69.已知说明int(*p)[M];其中p是______。A)M个指向整型变量的指针B)指向M个整型变量的函数指针C)一个指向具有M个整型元素的一维数组的指针D)具有M个指针元素的一维指针数组,每个元素都只能指向整型变量70.若有定义和语句:intc[4][5],(*cp)[5];cp=c;则对c数组元素的引用正确的是哪个?A)cp+1B)*(cp+3)C)*(cp+1)+3D)*(*cp+2)71.设有以下定义:inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};int(*prt)[3]=a,*p=a[0];则下列能够正确表示数组元素a[1][2]的表达式是__________。A)*((*prt+1)[2])B)*(*(p+5))C)(*prt+1)+2D)*(*(a+1)+2)72.若有以下定义和语句:intw[2][3],(*pw)[3];pw=w;则对w数组元素的非法引用是_________。A)*(pw[0]+2)B)*(pw+1)[2]C)pw[0][0]D)*(pw[1]+2)73.若有以下说明和定义:fun(int*c){…}voidmain(){int(*a)(int*)=fun,*b(),w[10],c;:}在必要的赋值之后,对fun()函数的正确调用语句是______。A)a=a(w);B)(*a)(&c);C)b=*b(w);D)fun(b);74.已知double*p[6];它的含义是______。A)p是指向double类型变量的指针B)p是double类型数组C)p是double类型指针数组D)p是double类型数组指针75.设有定义:intn=0,*p=&n,**q=&p;则______是正确的赋值语句。-2-A)p=1;B)*q=2;C)q=p;D)*p=5;76.以下选项中,错误的赋值是_________A)chars1[10];s1=”Ctest”;B)chars2[]={‘C’,‘t’,‘e’,‘s’,‘t’};C)chars3[20]=”Ctest”;D)char*s[4]={”Ctest\n”};77.若有定义和语句:int**pp,*p,a=10,b=20;pp=&p;p=&b;printf(“%d,%d\n”,*p,**pp);则输出的结果是______。A)10,20B)10,10C)20,10D)20,2078.以下程序编译连接后生成的可执行文件是ex1.exe,若运行时输入带参数的命令行是:ex1abcdefg10回车,则运行的结果是什么?9#includestring.hmain(intargc,char*argv[]){inti,len=0;for(i=1;iargc;i++)len+=strlen(argv[i]);printf(%d\n,len);}79.说明语句int(*p)();的含义是______。A)p是一个指向一维数组的指针变量B)p是一个指针变量,指向一个整型数据C)p是一个指向函数的指针,该函数的返回值是一个整型数据D)以上都不对80.说明语句int*(*p)();的含义是______。A)p是一个指向int型数组的指针B)p是一个指针变量,它构成了指针数组C)p是一个指向函数的指针,该函数的返回值是一个整型数据D)p是一个指向函数的指针,该函数的返回值是一个指向整型数据的指针81.说明语句void*f();的含义是______。A)函数f的返回值是一个通用型的指针B)函数f的返回值可以是任意的数据类型C)函数f没有返回值D)指针f指向一个函数,该函数无返回值82.已知char**s;正确的语句是_______。A)s=“book”B)*s=“book”;C)**s=“book”D)strcpy(*s,“book”);83.阅读以下函数,说出每个函数的作用(1)计算1+2+3+.....+nsum(intn){if(n==1)return1;elsereturnsum(n-1)+n;}(2)计算字符串的长度intstrtry(char*s)-3-{if(*s==’\0’)return0;elsereturnstrtry(s+1)+1;}(3)有n个元素的数组逆置voidchange(int*a,intn){intt;t=*a;*a=*(a+n-1);*(a+n-1)=t;if(n2)change(a+1,n-2);}(4)字符串的长度加1ABC(char*ps){char*p;p=ps;while(*p++);returnp-ps;}84.对于基类型相同的两个指针变量之间,不能进行的运算是______。A)B)=C)+D)-85.不合法的main函数命令行参数表示形式是A)main(inta,char*c[])B)main(intarc,char**arv)C)main(intargc,char*argv)D)main(intargv,char*argc[])86.写出下面各程序段的输出结果(1)staticchara[]=”Basic”;char*p;for(p=a;pa+5;p++)printf(“%s\n”,p);for(p=a;pa+5;p++)printf(“%c\n”,*p);BasicasicsiciccBasic(2)a=36b=16c=19voidmain(){inta=1,b=2,c;c=func(a,&b);b=func(c,&a);a=func(b,&c);printf(a=%d,b=%d,c=%d,a,b,c);}intfunc(inta,int*p){a++;*p=a+2;return(*p+a);}-4-(3)2143voidfun(int*x,int*y){printf(“%d%d”,*x,*y);*x=3;*y=4;}main(){intx=1,y=2;fun(&y,&x);printf(“%d%d”,x,y);}(4)5ss(char*s){char*p=s;while(*p)p++;return(p-s);}main(){char*a=“abded”;inti;i=ss(a);printf(“%d\n”,i);}(5)0voidfun(int*n){while((*n)--);printf(“%d”,++(*n));}main(){inta=100;fun(&a);}(6)24main(){inta[5]={2,4,6,8,10},*p,**k;p=a;k=&p;printf(“%d”,*(p++));printf(“%d\n”,**k);}(7)9main(){inta[2][3]={1,3,5,7,9,11},*s[2],**pp,*p;s[0]=a[0],s[1]=a[1];pp=s;p=(int*)malloc(sizeof(int));**pp=s[1][1];p=*pp;printf(“%d\n”,*p);}(8)字符串的长度func(charstr[]){intnum=0;while(*(str+num)!=‘\0’)num++;return(num);}main(){charstr[10],*p=str;gets(p);printf(“%d\n”,func(p));-5-}(9)6385main(){charch[2][5]={“6934”,“8254”},*p[2];intI,j,s=0;for(I=0;I2;I++)p[I]=ch[I];for(I=0;I2;I++)for(j=0;p[I][j]‘0’&&p[I][j]=‘9’;j+=2)s=10*s+p[I][j]-‘0’;printf(“%d\n”,s);}(10)4intfa(intx){returnx*x;}intfb(intx){returnx*x*x;}intf(int(*f1)(int),int(*f2)(int),intx){return(*f2)(x)-(*f1)(x);}main(){inti;i=f(fa,fb,2);printf(%d\n,i);}87、填写程序(1)下列程序输出数组中的最大值,由s指针指向该元素main(){inta[10]={6,7,2,9,1,10,5,8,4,3},*p,*s;for(p=a,s=a;p-a10;p++)if(*p*s)s=p;printf(“Themax;%d”,*s);}(2)函数sstrcmp()的功能是对两个字符串进行比较。当s所指字符串和t所指字符串相等时,返回值为0;当s所指字符串大于t所指字符串时,返回值大于0;当s所指字符串小于t所指字符串时,返回值小于0(功能等同于库函数strcmp())。intsstrcmp(char*s,char*t){while(*s&&*t&&*s==*t){s++;t++;}return*s-*t;}(3)下面的程序完成的功能是:从键盘输入一行字符,反序输出。#includestdio.hstructnode{chardata;structnode*link;}*head;main()-6-{charch;structnode*p;head=NULL;while((ch==getchar())!=’\n’){p=(structnode*)malloc(sizeof(structnode));p-data=ch;p-link=___head___;head=___p____;}____p=head______;while(p!=NULL){printf(“%c”,p-data);____p=p-link______;}}(4)以下程序输入10本书的名称和单价,按照单价进行排序后输出。#defineNUM10structbook{charname[20];intprice;};main(){structbookterm,books[NUM];intcount;for(count=0;countNUM;count++){printf(“Pleaseenterbooknameandprice.book%d=”,count+1);scanf(“%s%d%*c”,_books[count].name,&books[count].price_);}sortbook(books,NUM);printf(“--------------BOOKLIST---------\n”);for(count=0;countNUM;count++);printbook(_books+count或&books[count]___);}sortbook(structbook*pbook,intcount){inti;structbooktemp,*q,__*pb,*pend=pbook+count____;for(i=0;icount-1;i++){pb=
本文标题:C语言程序设计练习题第3部分答案
链接地址:https://www.777doc.com/doc-2908295 .html