《C语言程序设计教程第四章练习题解析.docx》由会员分享,可在线阅读,更多相关《C语言程序设计教程第四章练习题解析.docx(68页珍藏版)》请在优知文库上搜索。
1、C语言程序设计教程第四章练习题解析单选题1、关于C语言中的函数,下列描述正确的是()A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义不可以嵌套,但函数的调用可以嵌套C.函数的定义和函数的嵌套均不可以嵌套D.函数的定义和函数的调用均不可以嵌套答案:B解析:函数的定义不可以嵌套,但函数的调用可以嵌套2、定义一个函数:exce(vl,v2),(v3,v4,v5),v6);在该函数调用时,实参的个数为()个A.3B.4C.5D.6答案:A解析:(vl,v2),(v3,v4,v5)和v6一共三个实参3、关于C语言中Print()函数与SCanf()函数,下列描述中正确的是()A. print
2、f()函数可以向任何地方输出数据B. Printf()只向控制台输出数据C. scanf()只能输入英文字母和数字D. SCanf()函数可以识别输入的空格答案:B解析:Printf()是向控制台输出的函数4、在C语言中,内部函数需要添加的关键字是()A.externB. staticC. thisD. auto答案:B解析:在定义内部函数时,需要在函数的返回值类型前面添加static关键字(又称为静态函数)。5、当调用时,会调用内部函数A.当调用时,会调用内部函数B.当调用时,会调用外部函数C.当调用时,会调用两次,先调用内部函数再调用外部函数D.都不调用,会报错答案:A解析:当内部函数与外
3、部函数重名时,会优先调用内部函数6、在C语言中,声明外部函数需要添加的关键字是()A. externB. staticC. thisD. auto答案:A解析:声明外部函数的方式是在函数的返回值类型前面添加extern关键字7、关于C语言中的局部变量,下列描述中错误的是()A.局部变量就是在函数内部声明的变量B.局部变量只在函数内部有效C.局部变量只有当它所在的函数被调用时才会被使用D.局部变量一旦被调用,其生存周期持续到程序结束答案:D解析:当函数调用结束时局部变量就会失去作用8、关于C语言中的全局变量,下列描述中正确的是()A.全局变量的作用域一定比局部变量的作用域范围大B.静态类别变量的
4、生存周期贯穿于整个程序的运行期间C.函数的形参都属于全局变量D.未在定义语句中赋初值的auto变量和static变量的初值都是随机值答案:B解析:选项1不对:如果程序中只有一个主函数,则在整个程序运行中,局部变量都在起作用;选项3不对:除了C+的引用类型参数,所有函数的形参都是局部变量;选项4不对:StatiC变量定义时就存储地全局区,初始化为0;9、当全局变量与局部变量重名时,那么在调用时()A.局部变量会被屏蔽B.全局变量会被屏蔽C.都不会调用,系统会报错D.会调用两次,先调用局部变量,再调用全局变量答案:B解析:当局部变量与全局变量重名时,全局变量会被屏蔽。10、在C语言中,关于变量的作
5、用域,下列描述中错误的是()A.局部变量只在整个函数的运行周期中有效B.全局变量的作用域为整个程序的运行周期C.当全局变量与局部变量重名时,局部变量会屏蔽掉全局变量D.全局变量会覆盖掉所有与它重名的局部变量答案:D解析:当全局变量与局部变量重名时,全局变量会被屏蔽掉11、在C语言中,如果在一个函数的复合语句中定义了一个变量,则该变量()A.只在该复合语句中有效,在该复合语句外无效B.在该函数中任何位置都有效C.在本程序的原文件范围内均有效D.此定义方法错误,其变量为非法变量答案:D解析:1、2与3错:函数复合语句中定义的变量在该复合语句中引用;但如果函数含有该变量,则在函数中可以引用该变量4对
6、:在C+中在复合语句中定义变量为合法,但在C语言中是非法的12、C语言程序的基本单位是()。A.程序行B.语句C,函数D.字符答案:C解析:函数是C语言程序的基本单位13、C语言中决定函数返回值的类型的是()oA.return语句中的表达式类型B.调用函数的主调函数类型C.调用函数时临时D.定义函数时所指定的函数类型答案:D解析:函数的返回值取决于定义函数时指定的返回值类型14、若有函数调用语句:fun(a+b,(x,y),fun(n+k,d,(a,b);在此函数调用语句中实参的个数是()oA.3B.4C.5D.6答案:A解析:a+b返回一个值,(x,y)返回一个值,fun(n+k,d,(a,
7、b)返回一个值。15、x、y、Z被定义为int型变量,若从键盘给X、V、Z输入数据,正确的输入语句是()oA. inputx,y,z;B. scanf(%d%d%d”,&x,&y,&z);C. scanf(%d%d%d”,x,y,z);D. read(%d%d%d,&x,&y,&z);答案:B解析:读取键盘输入的数据要用SCanf()函数,scanf()中的参数要传入变量的地址16、若变量已正确说明为float类型,要通过语句scanf%f%f%f,&a,&b,&c);给a赋予10.0,b赋予22.0,C赋予33.0,不正确的输入形式是()oA. 102233B. 10.0,22.0,33.0
8、C. 10.022.033.0D. 10;22;33答案:B解析:用SCanf()读取从键盘输入的数据时,中间不能加逗号,要用空格隔开17、若有定义:intX,y;chara,b,c;并有以下输入数据(此处u代表空格):1u2uAuBuC,那么能给X赋整数1.给y赋整数2,给a赋字符A,给b赋字符B,给C赋字符C的正确程序段是()oA. scanf(x=%dy=%dz,&x,&y);a=getchar();b=getchar();c=getchar();B. scanf(/,%d%d,&x,&y);a=getchar();b=getchar();c=getchar();C. scanf(z,%
9、d%d%c%c%c,&x,&y,&a,&b,&c);D. scanf(%d%d%c%c%c%c%c%c,&x,&y,&a,&a,&b,&b,&c,&c);答案:D解析:空格也会作为一个字符赋给字符变量。18、对嵌套子程序调用说法正确的是()。A.外层子程序可以调用所有的内层子程序B.内层子程序只可以调用包含本身的外层子程序,不可以隔层调用C.外分程序必须能完全套住内分程序D.以上说法均不正确答案:C19、C语言中函数能否嵌套调用和递归调用?()A.二者均不可B.前者可,后者不可C.前者不可,后者可D.二者均可答案:D解析:两者调用都可以20、C语言规定,程序中各函数之间()oA.既允许直接递归
10、调用也允许间接递归调用B.不允许直接递归调用也不允许间接递归调用C.允许直接递归调用不允许间接递归调用D.不允许直接递归调用允许间接递归调用答案:A解析:各程序间既可以直接调用也可以间接调用。21、有如下程序:longfib(intn)(if(n2)returnfib(n-l)+fib(n-2);elsereturn2;)voidmain()(printf(%dn”,fib(3);)该程序的输出结果是()oA. 2B. 4C. 6D.8答案:B解析:向fib()函数传入3时,返回fib(1)+fib(2)的值;向fib()函数传入1和2时,都返回2,所以fib(3)返回2+2=4o22、以下程
11、序的输出结果是()。longfun(intn)(longs;if(n=lIIn=2)s=2;elses=n-fun(n-l);returns;)voidmain()(printf(%ldn”,fun(3);)A.1B. 2C. 3D.4答案:A解析:fun()函数传入3时,返回3-fun(2);fun()函数传入2时,返回2。所以fun(3)返回3-2=1o23、在C语言中,函数的隐含存储类别是()oA. autoB. staticC. externD.无存储类别答案:C解析:为简化编程,C语言中允许在定义外部函数时省略关键字externo24、以下叙述中不正确的是()。A.在不同的函数中可以
12、使用相同名字的变量B.函数中的形式参数是局部变量C.在一个函数内定义的变量只在本函数范围内有效D.在一个函数内的复合语句中定义的变量在本函数范围内有效答案:D解析:函数内的复合语句中定义的变量仅仅在该复合语句中有效。25、以下程序运行后,输出结果是()。intfunc(inta,intb)(staticintm=0,i=2;i+=m+l;m=i+a+b;returnm;)voidmain()(intk=4,m=l,p;p=func(k,m);printf(%d,”,p);p=func(k,m);printf(%dn”,p);)A.8,15B.8,16C.8,17D. 8,8答案:C解析:函数体
13、内的静态局部变量不随函数的调用结束而销毁,而是一直存在。26、以下程序的输出结果是()ointd=l;intfun(intP)(staticintd=5;d+=p;printf(%d”,d);returnd;)voidmain()(inta=3;printf(%dn”,fun(a+fun(d);)A.699B.669C.61515D.6615答案:c解析:首先调用fun(d),将全局变量d=l带入,此时fun()函数内的静态局部变量d的值是1,d+=p后d的值是6,输出d的值,返回d的值;然后调用fun(a+6),将局部变量a=3带入,此时fun()函数内的静态局部变量d的值是6,d+=p后d
14、赋值15,输出d的值,返回d的值。27、在C语言中,若需一变量只在本文件中所有函数使用,则该变量的存储类别是()oA. externB. registerC. autoD. static答案:D解析:StatiC修饰全局变量时,表示该变量仅在本文件中可使用。28、下列程序的输出结果是()ointb=2;intfunc(int*a)b+=*a;returnb;)voidmain()(inta=2,res=2;res+=func(&a);printf(%dn,res);)A.4B.6C. 8D. 10答案:B解析:func()函数中,对全局变量b自增a的值,func()函数返回4;res+=4,res赋值为6。29 、请读程序:voidmain()(inta=l,b=2,c=3;+a;c+=+b;intb=4,c;c=b*3;a+=c;printf(first:%d,%d,%dn”,a,b,c);a+=c;printf(Seconded,%d,%dn”,a,b,c);)printf(third:%d,%d,%dn”,a,b,c);)该程序的输出是()