C语言程序设计教程第四章练习题解析(1).doc
《C语言程序设计教程第四章练习题解析(1).doc》由会员分享,可在线阅读,更多相关《C语言程序设计教程第四章练习题解析(1).doc(28页珍藏版)》请在咨信网上搜索。
1、.单选题1、关于C语言中的函数,下列描述正确的是( )A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义不可以嵌套,但函数的调用可以嵌套C.函数的定义和函数的嵌套均不可以嵌套D.函数的定义和函数的调用均不可以嵌套答案:B解析:函数的定义不可以嵌套,但函数的调用可以嵌套2、定义一个函数:exce(v1, v2), (v3,v4,v5),v6); 在该函数调用时,实参的个数为( )个A.3B.4C.5D.6答案:A解析:(v1, v2), (v3,v4,v5)和v6一共三个实参3、关于C语言中print()函数与scanf()函数,下列描述中正确的是( )A.printf()函数可以向任
2、何地方输出数据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对:在C+中在复合语句中定
6、义变量为合法,但在C语言中是非法的12、C语言程序的基本单位是( )。A.程序行B.语句C.函数D.字符答案:C解析:函数是C语言程序的基本单位13、C语言中决定函数返回值的类型的是( )。A.return语句中的表达式类型B.调用函数的主调函数类型C.调用函数时临时D.定义函数时所指定的函数类型答案:D解析:函数的返回值取决于定义函数时指定的返回值类型14、若有函数调用语句:fun(a+b, (x,y), fun(n+k,d,(a,b); 在此函数调用语句中实参的个数是( )。A.3B.4C.5D.6答案:A解析:a+b返回一个值,(x,y)返回一个值,fun(n+k,d,(a,b)返回一个
7、值。15、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是( )。A.input x,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,不正确的输入形式是( )。A.10 22 33B.10.0,22.0,33.0C.10
8、.0 22.0 33.0D.10; 22; 33答案:B解析:用scanf()读取从键盘输入的数据时,中间不能加逗号,要用空格隔开17、若有定义:int x,y; char a,b,c; 并有以下输入数据(此处u代表空格):1u2uAuBuC,那么能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序段是( )。A.scanf(x=%d y=%d,&x,&y);a=getchar();b=getchar();c=getchar();B.scanf(%d %d,&x,&y);a=getchar();b=getchar();c=getchar();C.scanf(%d%d
9、%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语言规定,程序中各函数之间( )。A.既允许直接递归调
10、用也允许间接递归调用B.不允许直接递归调用也不允许间接递归调用C.允许直接递归调用不允许间接递归调用D.不允许直接递归调用允许间接递归调用答案:A解析:各程序间既可以直接调用也可以间接调用。21、有如下程序:long fib(int n)if (n2)return fib(n-1)+fib(n-2);elsereturn 2;void main()printf(%dn,fib(3);该程序的输出结果是( )。A.2B.4C.6D.8答案:B解析:向fib()函数传入3时,返回fib(1)+fib(2)的值;向fib()函数传入1和2时,都返回2,所以fib(3)返回2+2=4。22、以下程序的
11、输出结果是( )。long fun(int n)long s;if (n=1 | n=2)s=2;elses=n-fun(n-1);return s;void main()printf(%ldn, fun(3);A.1B.2C.3D.4答案:A解析:fun()函数传入3时,返回3-fun(2);fun()函数传入2时,返回2。所以fun(3)返回3-2=1。23、在C语言中,函数的隐含存储类别是( )。A.autoB.staticC.externD.无存储类别答案:C解析:为简化编程,C语言中允许在定义外部函数时省略关键字extern。24、以下叙述中不正确的是( )。A.在不同的函数中可以使
12、用相同名字的变量B.函数中的形式参数是局部变量C.在一个函数内定义的变量只在本函数范围内有效D.在一个函数内的复合语句中定义的变量在本函数范围内有效答案:D解析:函数内的复合语句中定义的变量仅仅在该复合语句中有效。25、以下程序运行后,输出结果是( )。int func(int a, int b)static int m=0,i=2;i+=m+1;m=i+a+b;return m;void main()int k=4,m=1,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、以下程序的输出结果是( )。int d=1;int fun(int p)static int d=5;d+=p;printf(%d ,d);return d;void main()int a=3;printf(%d n,fun(a+fun(d);A.6 9 9B.6 6 9C.6 15 15D.6 6 15答案:C解析:首先调用fun(d),将全局变量d=1带入,此时fun()函数内的静态局部变量d的值是1,d+=p后d的值是6,输出d的值,返回d的值;然后调用fun(a+6),将局部变量a=3带入,此时fun()函数内的静态局部
14、变量d的值是6,d+=p后d赋值15,输出d的值,返回d的值。27、在C语言中,若需一变量只在本文件中所有函数使用,则该变量的存储类别是( )。A.externB.registerC.autoD.static答案:D解析:static修饰全局变量时,表示该变量仅在本文件中可使用。28、下列程序的输出结果是( )。int b=2;int func(int *a)b += *a;return b;void main()int a=2, res=2;res += func(&a);printf(%dn,res);A.4B.6C.8D.10答案:B解析:func()函数中,对全局变量b自增a的值,fu
15、nc()函数返回4;res+=4,res赋值为6。29、请读程序:void main()int a=1,b=2,c=3;+a;c+=+b;int b=4,c;c=b*3;a+=c;printf(first:%d,%d,%dn,a,b,c);a+=c;printf(Second:%d,%d,%dn,a,b,c);printf(third:%d,%d,%dn,a,b,c);该程序的输出是( )A.first: 12,4,12 Second: 26,4,12 third: 4,3,6B.first: 14,4,12 Second: 26,12,12 third: 26,3,4C.first: 14,
16、4,12 Second: 26,4,12 third: 26,3,6D.first: 14,4,12 Second: 26,6,12 third: 26,4,6答案:C解析:程序运行到第6行时,a=2,b=3,c=6;程序运行到第10行时,a=14,局部变量b=4,c=12;程序运行到第13行时,a=26,局部变量b=4,c=12;程序运行到第15行时,a=26,b=3,c=6。30、以下程序运行后,输出结果是( )。int d=1;int fun(int p)int d=5;d+=p+;printf(%d,d);int main()int a=3;fun(a);d+=a+;printf(%d
17、n,d);A.84B.99C.95D.44答案:A解析:fun()函数调用时代入局部变量a的值,fun()函数体内局部变量d自增3,输出d的值,即8,fun()函数返回8,此时全局变量d的值不变。d+=a+后,全局变量d自增3,此时全局变量d的值是4,输出全局变量d的值。31、以下程序的输出结果是( )。int a, b;void fun()a=100; b=200;void main()int a=5, b=7;fun();printf(%d%d n,a,b);A.100200B.57C.200100D.75答案:B解析:fun()函数改变的是全局变量的值,printf()函数输出的是局部变
18、量的值,fun()函数不会改变局部变量a、b的值。多选题1、在调用外部函数时,下列描述中正确的是( )(多选)A.只要有函数名,就能调用外部函数B.调用外部函数要包含外部函数所在的头文件C.外部函数与调用者定义在同一个源文件下D.在声明外部函数时,外部函数与原函数定义的返回值类型、函数名称和参数列表必须一致答案:B,D解析:外部函数调用时要包含其所在的头文件,当调用者声明了外部函数的原型,也可以不用包含头文件判断题1、局部变量就是在函数内部声明的变量。答案:true解析:局部变量就是在函数内部声明的变量。2、局部变量只有当它所在的函数被调用时才会被使用,而当函数调用结束时局部变量就会失去作用。
19、答案:true解析:局部变量只有当它所在的函数被调用时才会被使用,而当函数调用结束时局部变量就会失去作用。3、局部变量就是在函数内部声明的变量,它只在本函数内有效。答案:true解析:局部变量就是在函数内部声明的变量,它只在本函数内有效,也就是说,只能在本函数内使用它。4、局部变量只有当它所在的函数被调用时才会被使用,当函数调用结束时局部变量还会一直存在。答案:false解析:局部变量只有当它所在的函数被调用时才会被使用,而当函数调用结束时局部变量就会失去作用。简答题1、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。void func(int
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 教程 第四 练习题 解析
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。