您好,欢迎访问三七文档
1.选择题:(1)如果x是整型变量,则合法的形式是()。A.&(x+5)B.*xC.&*xD.*&x(2)若有语句inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则()不是对a数组元素的正确引用(其中0≤i10)。A.p[i]B.*(*(a+i))C.a[p-a]D.*(&a[i])(3)以下程序的输出结果是()。#includevoidmain(){inta[3]={10,15,20};//a[0]=10,a[1]=15,a[2]=20int*p1=a,*p2=&a[1];//p1取a[0]地址,p2取a[1]地址*p1=*(p2-1)+5;//a[0]=15,a[1]=15,a[2]=20*(p1+1)=*p1-5;//a[0]=15,a[1]=10,a[2]=2printf(%d,a[1])};A.5B.10C.15D.20(4)执行以下程序段后,m的值为()。inta[2][3]={{1,2,3},{4,5,6}};intm,*p=&a[0][0];m=(*p)*(*(p+2))*(*(p+4));A.15B.14C.13D.12(5)以下程序的输出结果是()。#includevoidfun(intx,inty,int*cp,int*dp){cp=x+y;//*cp=30+50=80dp=x-y;//*dp=30-50=-20}voidmain(){inta,b,c,d;a=30,b=50;fun(a,b,&c,&d);printf(%d,%d,c,d);}A.50,30B.30,50C.80,-20D.80,20(6)要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。能正确执行此功能的函数是()。A.funa(int*x,int*y)B.funb(intx,inty){int*p=newint;{intt;p=*x;t=x;*x=*y;x=y;*y=*p;}y=t;}C.func(int*x,int*y)D.fund(intx,inty){*x=*y;{*x=*x+*y;*y=*x;*y=*x-*y;}*x=*x-*y;}(7)以下程序的输出结果是()。#includevoidmain(){char*s=12134211;intv1=0,v2=0,v3=0,v4=0;for(intk=0;s[k];k++)switch(s[k]){default:v4++;case'1':v1++;case'3':v3++;case'2':v2++;}printf(%d%d%d%d\n,v1,v2,v3,v4)};A.4,2,1,1B.4,9,3,1C.5,8,6,1D.8,8,8,8(8)设有如下定义,下面关于ptr正确叙述是()。int(*ptr)();A.ptr是指向一维数组的指针变量B.ptr是指向int型数据的指针变量C.ptr是指向函数的指针,该函数返回一个int型数据D.ptr是一个函数名,该函数的返回值是指向int型数据的指针9,以下关于指针的叙述正确是A)所有类型的指针变量所占内存的大小是一样的B)指针变量所占内存的大小与其类型有关,char型指针变量只占1个字节,double型指针变量占8个字节C)指针变量可直接指向任何类型的变量,而不会出现编译或运行错误D)指针变量既可以直接指向结构体,也可直接指向结构体中某个成员,而不会出现编译或运行错误10,以下定义语句中正确的是A)inta=b=0;B)charA=65+1,b='b';C)floata=1,*b=&a,*c=&b;D)doublea=0.0;b=1.1;11,以下叙述中正确的是A)如果p是指针变量,则&p是不合法的表达式B)如果p是指针变量,则*p表示变量p的地址值C)在对指针进行加、减算术运算时,数字1表示1个存储单元的长度D)如果p是指针变量,则*p+1和*(p+1)的效果是一样的12,有以下程序#includestdio.hvoidf(int*p,int*q);main(){intm=1,n=2,*r=&m;f(r,&n);printf(%d,%d,m,n);}voidf(int*p,int*q){p=p+1;*q=*q+1;}程序运行后的输出结果是A)2,3B)1,3C)1,4D)1,213,以下对指针变量的操作中,错误的程序段是A)intx=0,*p;*p=x;B)intx=1,*p,*q=&x;p=q;C)int*p,*q;q=p=NULL;D)intp,*q;q=&p;14,有以下程序#includestdio.hmain(){char*p1=0;int*p2=0;float*p3=0;printf(%d,%d,%d\n,sizeof(p1),sizeof(p2),sizeof(p3));}程序运行后的输出结果是A)1,4,8B)4,4,4C)1,2,4D)1,1,415,有以下程序#includestdio.hvoidfun(char**p){++p;printf(%s\n,*p);}main(){char*a[]={Morning,Afternoon,Evening,Night};fun(a);}程序的运行结果是A)AfternoonB)fternoonC)MorningD)orning二,填空16,有以下程序#includestdio.hchar*a=you;char*b=WelcomeyoutoBeijing!;main(){char*p;p=b;while(*p!=*a)p++;printf(%s\n,p);}程序运行后的输出结果是youtoBeijing!17,有以下函数intfun(char*ps){char*p;p=ps;if(*ps==0)return0;while(*++p);return(p-ps);}该函数的功能是计算字符串的长度18,有以下程序#includestdio.hmain(){intx[3][3]={{2},{4},{6}},i,*q=&x[0][0];for(i=0;i2;i++){if(i==0)x[i][i+1]=*q+1;else++q;printf(%d,*q);}printf(\n);}程序的运行结果是2319,有以下程序#includestdio.hvoidf(intx[],intn){if(n1){printf(%d,,x[n-1]);f(x,n-1);printf(%d,,x[n-1]);}elseprintf(%d,,x[0]);}main(){intz[3]={1,2,3};f(z,3);printf(\n);}程序运行后的输出结果是3,2,1,2,3,20,有以下程序#includestdio.hintfun(chars[]){intn=0;while(*s='9'&&*s='0'){n=10*n+*s-'0';s++;}return(n);}main(){chars[10]={'6','1','*','4','*','9','*','0','*'};printf(%d\n,fun(s));}程序的运行结果是61三、编写程序.1.在堆内存中申请一个float型数组,把10个float型数据0.1、0.2、0.3、…、1.0赋予该数组,然后使用float型指针输出该数组的各元素值并求出其累加和。2.编写一个函数,该函数的功能是判断一个整数是不是素数,在main函数中输入一个整数,调用该函数,判断该数是不是素数,若是则输出“yes”,否则输出“no”*/3.写一个函数,判断某一个四位数是不是玫瑰花数(所谓玫瑰花数即该四位数各位数字的四次方和恰好等于该数本身,如:1634=14+64+34+44)。在主函数中从键盘任意输入一个四位数,调用该函数,判断该数是否为玫瑰花数,若是则输出“yes”,否则输出“no”。*/选择题DBBACACC
本文标题:C语言第五章练习题
链接地址:https://www.777doc.com/doc-2909084 .html