《C语言程序设计第七章练习题带答案高职.docx》由会员分享,可在线阅读,更多相关《C语言程序设计第七章练习题带答案高职.docx(8页珍藏版)》请在第一文库网上搜索。
1、习题7.单项选择题(1)设有定义:intn1=0,n2,*p=&n2,*q=&n1;以下赋值语句中与n2=n1;语句等价的是A)*p=*q;B)p=q;C)*p=&n1;D)p=*q;(2)若有定义:inix=0,*p=&x;,则语句Primf(%dn”,*p);的输出结果是A)随机值B)0C)X的地址D)P的地址(3)以下定义语句中正确的是A)chara-A,b=B;B)f1oata=b=10.0;C)inta=10,*b=&a;D)f1oat*a,b=&a;(4)有以下程序main()inta=7,b=8,*p,*q,*r;p=&a;q=&b;r=p;p=q;q=r;printf(%d,%
2、d,%d,%dn,*p,*q,a,b);)程序运行后的输出结果是A)8,7,8,7B)7,8,7,8C)8,7,7,8D)7,8,8,7(5)设有定义:inia,*pa=&a;以下SCanf语句中能正确为变量a读入数据的是A)scanf(“d”,pa);B)scanf(d”,a);C)scanf(ii%d,f,&pa);D)scanf(“d”,*Pa);(6)设有定义:inn=0,*p=&n,*q=&p;则以下选项中,正确的赋值语句是A)P=!;B)*q=2;C)q=p;D)*p=5;(7)有以下程序voidfun(char*a,char*b)a=b;(*a)+;main()charc1=,A
3、,c2=a,*pI,*p2;p1=&c1;p2=&c2;fun(p1,p2);printf(w%cnw,c1,c2);)程序运行后的输出结果是A)AbB)aaC)AaD)Bb(8)若程序中已包含头文件StdiOh以下选项中,正确运用指针变量的程序段是A)f1oat*i=NU11;B)f1oat*f=&a;scanf(&d,f);*f=10.5;C)chart=,m,*c=&1;D)1ong*1;*c=&t;1=t0,;(9)有以下程序#inc1udemain()printf(%dn,NU11);)程序运行后的输出结果是D)NU11没定义,出错A)0B)1C)-1(10)已定义以下函数fun(i
4、nt*p)return*p:该函数的返回值是A)C)(11)A)不确定的值形参P所指存储单元中的值B)形参P中存放的值D)形参P的地址值下列函数定义中,会出现编译错误的是max*z=xy(intX,int?x:y;y,int*z)C)maxint(intxjnty)B)intmax(intx,y)intz;z=xy?x:y;returnz;)D)intmax(intx,inty)return(xy?x:y);(z=xy?x:y;return(z);(12)有以下程序段main()inta=5,*b,c=&b;b=&a;程序在执行了C=&b:b=&a;语句后,表达式:A)变量a的地址B)变量b中
5、的值C)(13)有以下程序main()chara,b,c,*d;a=,V;b=4xbc,;c=t0xab,;d=017;print(,%c%cn,a,b,c,*d);*c的值是变量a中的值D)变量b的地址编译时出现错误,以下叙述中正确的是A)程序中只有a=;语句不正确B)C)d=0127”;语句不正确b=xbc;语句不正确D)a=;和C=Oxab;语句都不正确(14)若有以下定义和语句#inc1udeinta=4,b=3,*p,*q,*w;p=&a;q=&b;w=q;q=NU11;则以下选项中错误的语句是A)*q=0;B)w=p;C)*p=a;D)*p=*w;(15)有以下程序#inc1ude
6、int*f(int*x,int*y)(if(*x*y)returnx;e1sereturny;)voidmain()(inta=7,b=8,*p,*q,r;p=&a;q=&b;r=*f(p,q);printf(,%d,%d,%dn,a,b,r);)执行后输出结果是A)7,8,8B)7,8,7C)8,7,7D)8,7,8(16)若有说明:intn=2,*p=&n,*q=p;,则以下非法的赋值语句是A)p=q;B)*p=*q;C)n=*q;D)p=n;(17)有以下程序voidfun(char*c,intd)*c=*c+1;d=d+1;printf(%c,%c,*c,d);Imain()chara
7、=A,b=a;fun(&b,a);printf(w%c,%cnw,a,b);I程序运行后的输出结果是A)B,a,B,aB)a,B,a,BC)A,b,A,bD)b,B,A,b(18)若有说明语句:inia,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);(19)若定义:inta=511,*b=&a;,则Printf(%dn,*b);的输出结果为A)无确定值B)a的地址C)512D
8、)511(20)若有说明:inti,j=2,*p=(fei;,则能完成i=j赋值功能的语句是A)i=*p;B)p*=*&j;C)i=&j;D)i=*p;2.填空题(1)有以下程序voidf(inty,int*x)y=y+*x;*x=*x+y;main()intx=2,y=4;f(y,&x);Prin1f(%d%dn”,x,y);)执行后输出的结果是1】。(2)下面程序的运行结果是:2。voidswap(int*a,int*b)int*t;t=a;a=b;b=t;)main()intx=3,y=5,*p=&x,*q=&y;swap(p,q);printf(%d%dnw,*,*q);)(3)设有以
9、下程序:main()inta,b,k=4,m=6,*p1=&k,*p2=&m;a=p1=&m;b=(*p1)/(*p2)+7;printf(a=%dn”,a);printf(b=%dn”,b);执行该程序后,a的值为【3,b的值为【4】。(4)下列程序的输出结果是5Ovoidfun(int*n)whi1e(*n);printf(%dw,+(*n);)main()inta=IOO;fun(&a);(5)以下函数用来求出两整数之和,并通过形参将结果传回,请填空。voidfunc(intx,inty,6z)*z=x+y;)(6)函数voidfun(f1oat*sn,intn)的功能是:根据以下公式计
10、算S,计算结果通过形参指针Sn传回;n通过形参传入,n的值大于等于0。请填空。voidfun(f1oat*sn,intn)(f1oats=0.0,w,f=-1.0;inti=0;for(i=0;i=n;i+)f=7*f;w=I7(2*i+1);s+=w;)8=s;1(7)以下函数的功能是,把两个整数指针所指的存储单元中的内容进行交换。请填空。exchange(int*x,int*y)(itt;t=*y;*y=9;*x=10;)(8)下面函数要求用来求出两个整数之和,并通过形参传同两数相加之和值,请填空。intadd(intx,inty,11z)(12=x+y;)3.程序设计题(1)编写一个函数
11、,将数组中n个数按反序存放。(2)用地址法输入输出二维数组各元素。(3)用指针法输入输出二维数组各元素。第7章指针习题参考答案:1.单项选择题I) A2)B3)C4)CII) B12)C13)D14)A5)A6)D7)A8)D9)A10)C15) B16) D17)D18)A19)D20)B2.填空题(1)84(6) int*(2)35(7) -1(3)0(4)7(8)*sn(9)*x(5)0(10) t(11) int*(12) *z3.程序设计题(1)编写一个函数,将数组中n个数按反序存放。voidinv(int*x,intn)int*p,m,t,*i,*j;m=(n-1)2;i=x;j=
12、x+n-1;p=x+m;for(;i=p;i+,j-)t=*i;*i=*j;*j=treturn;)main()inti,arr10,*p=arr;printf(Theorigina1array:n);for(i=0;i10;i+,p+)scanf(%d,p);printf(n);p=arr;*payattentiontoreassigningforp*/inv(p,10);printf(Thearrayhasbeeninverted:n);fbr(p=arr;parr+10;p+)printf(%d,*p);printf(n);(2)用地址法输入输出二维数组各元素。#inc1udemain(
13、)(inta34;intij;for(i=0;i3;i+)for(j=0;j4;j+)scanf(,%dai+j);/*地址法*/for(i=0;i3;i+)for(j=0;j4;j+)printf(%4d,*(ai+j);/*(ai+j)是地址法所表示的数组元素*/pntf();)运行程序:123456789101112123456789101112(3)用指针法输入输出二维数组各元素。#inc1udemain()(inta34,*ptr;inti,j;ptr=a0;for(i=0;i3;i+)for(j=0;j4;j+)scanf(%dptr+);/*指针的表示方法*/ptr=a0;for(i=0;i3;i+)(for(j=0;j4;j+)printf(%4d,*ptr+);rintf(,h);1)运行程序:1 2345678910111212 3456789I01112