ImageVerifierCode 换一换
格式:DOCX , 页数:46 ,大小:26.01KB ,
资源ID:12823385      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12823385.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言程序设计教程第四章练习题解析.docx)为本站会员(b****0)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言程序设计教程第四章练习题解析.docx

1、C语言程序设计教程第四章练习题解析单选题1、关于C语言中的函数,下列描述正确的是( )A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义不可以嵌套,但函数的调用可以嵌套C.函数的定义和函数的嵌套均不可以嵌套D.函数的定义和函数的调用均不可以嵌套答案:B解析:函数的定义不可以嵌套,但函数的调用可以嵌套2、定义一个函数:exce(v1, v2), (v3,v4,v5),v6); 在该函数调用时,实参的个数为( )个答案:A解析:(v1, v2), (v3,v4,v5)和v6一共三个实参3、关于C语言中print()函数与scanf()函数,下列描述中正确的是( )()函数可以向任何地方输

2、出数据()只向控制台输出数据()只能输入英文字母和数字()函数可以识别输入的空格答案:B解析:printf()是向控制台输出的函数4、在C语言中,内部函数需要添加的关键字是( )答案:B解析:在定义内部函数时,需要在函数的返回值类型前面添加static关键字(又称为静态函数)。5、当调用时,会调用内部函数A.当调用时,会调用内部函数B.当调用时,会调用外部函数C.当调用时,会调用两次,先调用内部函数再调用外部函数D.都不调用,会报错答案:A解析:当内部函数与外部函数重名时,会优先调用内部函数6、在C语言中,声明外部函数需要添加的关键字是( )答案:A解析:声明外部函数的方式是在函数的返回值类型

3、前面添加extern关键字7、关于C语言中的局部变量,下列描述中错误的是( )A.局部变量就是在函数内部声明的变量B.局部变量只在函数内部有效C.局部变量只有当它所在的函数被调用时才会被使用D.局部变量一旦被调用,其生存周期持续到程序结束答案:D解析:当函数调用结束时局部变量就会失去作用8、关于C语言中的全局变量,下列描述中正确的是( )A.全局变量的作用域一定比局部变量的作用域范围大B.静态类别变量的生存周期贯穿于整个程序的运行期间C.函数的形参都属于全局变量D.未在定义语句中赋初值的auto变量和static变量的初值都是随机值答案:B解析:选项1不对:如果程序中只有一个主函数,则在整个程

4、序运行中,局部变量都在起作用;选项3不对:除了C+的引用类型参数,所有函数的形参都是局部变量;选项4不对:static变量定义时就存储地全局区,初始化为0;9、当全局变量与局部变量重名时,那么在调用时( )A.局部变量会被屏蔽B.全局变量会被屏蔽C.都不会调用,系统会报错D.会调用两次,先调用局部变量,再调用全局变量答案:B解析:当局部变量与全局变量重名时,全局变量会被屏蔽。10、在C语言中,关于变量的作用域,下列描述中错误的是( )A.局部变量只在整个函数的运行周期中有效B.全局变量的作用域为整个程序的运行周期C.当全局变量与局部变量重名时,局部变量会屏蔽掉全局变量D.全局变量会覆盖掉所有与

5、它重名的局部变量答案:D解析:当全局变量与局部变量重名时,全局变量会被屏蔽掉11、在C语言中,如果在一个函数的复合语句中定义了一个变量,则该变量( )A.只在该复合语句中有效,在该复合语句外无效B.在该函数中任何位置都有效C.在本程序的原文件范围内均有效D.此定义方法错误,其变量为非法变量答案:D解析:1、2与3错:函数复合语句中定义的变量在该复合语句中引用;但如果函数含有该变量,则在函数中可以引用该变量4对:在C+中在复合语句中定义变量为合法,但在C语言中是非法的12、C语言程序的基本单位是( )。A.程序行B.语句C.函数D.字符答案:C解析:函数是C语言程序的基本单位13、C语言中决定函

6、数返回值的类型的是( )。语句中的表达式类型B.调用函数的主调函数类型C.调用函数时临时D.定义函数时所指定的函数类型答案:D解析:函数的返回值取决于定义函数时指定的返回值类型14、若有函数调用语句:fun(a+b, (x,y), fun(n+k,d,(a,b); 在此函数调用语句中实参的个数是( )。答案:A解析:a+b返回一个值,(x,y)返回一个值,fun(n+k,d,(a,b)返回一个值。15、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是( )。 x,y,z;(%d%d%d,&x,&y,&z);(%d%d%d,x,y,z);(%d%d%d,&x,&y,

7、&z);答案:B解析:读取键盘输入的数据要用scanf()函数,scanf()中的参数要传入变量的地址16、若变量已正确说明为float类型,要通过语句 scanf(%f %f %f,&a,&b,&c); 给a赋予,b赋予,c赋予,不正确的输入形式是( )。 22 33 ; 22; 33答案:B解析:用scanf()读取从键盘输入的数据时,中间不能加逗号,要用空格隔开17、若有定义:int x,y; char a,b,c; 并有以下输入数据(此处u代表空格):1u2uAuBuC,那么能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序段是( )。(x=%d y=%d

8、,&x,&y);a=getchar();b=getchar();c=getchar();(%d %d,&x,&y);a=getchar();b=getchar();c=getchar();(%d%d%c%c%c,&x,&y,&a,&b,&c);(%d%d%c%c%c%c%c%c,&x,&y,&a,&a,&b,&b,&c,&c);答案:D解析:空格也会作为一个字符赋给字符变量。18、对嵌套子程序调用说法正确的是( )。A.外层子程序可以调用所有的内层子程序B.内层子程序只可以调用包含本身的外层子程序,不可以隔层调用C.外分程序必须能完全套住内分程序D.以上说法均不正确答案:C19、C语言中函数能

9、否嵌套调用和递归调用?( )A.二者均不可B.前者可,后者不可C.前者不可,后者可D.二者均可答案:D解析:两者调用都可以20、C语言规定,程序中各函数之间( )。A.既允许直接递归调用也允许间接递归调用B.不允许直接递归调用也不允许间接递归调用C.允许直接递归调用不允许间接递归调用D.不允许直接递归调用允许间接递归调用答案:A解析:各程序间既可以直接调用也可以间接调用。21、有如下程序:long fib(int n) if (n2) return fib(n-1)+fib(n-2); else return 2;void main() printf(%dn,fib(3);该程序的输出结果是(

10、 )。答案:B解析:向fib()函数传入3时,返回fib(1)+fib(2)的值;向fib()函数传入1和2时,都返回2,所以fib(3)返回2+2=4。22、以下程序的输出结果是( )。long fun(int n) long s; if (n=1 | n=2) s=2; else s=n-fun(n-1); return s;void main() printf(%ldn, fun(3);答案:A解析:fun()函数传入3时,返回3-fun(2);fun()函数传入2时,返回2。所以fun(3)返回3-2=1。23、在C语言中,函数的隐含存储类别是( )。D.无存储类别答案:C解析:为简化

11、编程,C语言中允许在定义外部函数时省略关键字extern。24、以下叙述中不正确的是( )。A.在不同的函数中可以使用相同名字的变量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

12、(%d,p); p=func(k,m); printf(%dn,p);,15,16,17,8答案:C解析:函数体内的静态局部变量不随函数的调用结束而销毁,而是一直存在。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); 9 9 6 9 15 15 6 15答案:C解析:首先调用fun(d),将全局变量d=1带入,此时fun()函数内的静态局部变量d的值是1,d+=p后d的值是6,输出

13、d的值,返回d的值;然后调用fun(a+6),将局部变量a=3带入,此时fun()函数内的静态局部变量d的值是6,d+=p后d赋值15,输出d的值,返回d的值。27、在C语言中,若需一变量只在本文件中所有函数使用,则该变量的存储类别是( )。答案: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);答案:B解析:func()函数中,对全局变量

14、b自增a的值,func()函数返回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);该程序的输出是( ): 12,4,12 Second: 26,4,12 third: 4,3,6: 14,4,12 Second: 26,12,12 third: 26,3,4: 14,4,

15、12 Second: 26,4,12 third: 26,3,6: 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(%dn,

16、d);答案: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);答案:B解析:fun()函数改变的是全局变量的值,printf()函数输出的是局部变量的值,fun()函数不会改变局部变量a、b的值。多选题1、在调用外部函数时

17、,下列描述中正确的是( )(多选)A.只要有函数名,就能调用外部函数B.调用外部函数要包含外部函数所在的头文件C.外部函数与调用者定义在同一个源文件下D.在声明外部函数时,外部函数与原函数定义的返回值类型、函数名称和参数列表必须一致答案:B,D解析:外部函数调用时要包含其所在的头文件,当调用者声明了外部函数的原型,也可以不用包含头文件判断题1、局部变量就是在函数内部声明的变量。答案:true解析:局部变量就是在函数内部声明的变量。2、局部变量只有当它所在的函数被调用时才会被使用,而当函数调用结束时局部变量就会失去作用。答案:true解析:局部变量只有当它所在的函数被调用时才会被使用,而当函数调

18、用结束时局部变量就会失去作用。3、局部变量就是在函数内部声明的变量,它只在本函数内有效。答案:true解析:局部变量就是在函数内部声明的变量,它只在本函数内有效,也就是说,只能在本函数内使用它。4、局部变量只有当它所在的函数被调用时才会被使用,当函数调用结束时局部变量还会一直存在。答案:false解析:局部变量只有当它所在的函数被调用时才会被使用,而当函数调用结束时局部变量就会失去作用。简答题1、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。void func(int a, int b) printf( %d,a + b);void main(

19、) func(3,2); printf(n);答案:5解析:fun()是一个实现两个数相加的函数,在主函数中调用并传入值,得到两个数的和2、请阅读下面的程序,在空白处填写正确的代码,将函数的结果返回给调用者。int func(int a, int b) int sum = 0; sum = a + b; ;void main() int sum = 0; = func(3,2); printf(两个数相加的结果为%d,sum);答案:return sum;sum ;解析:return sum;return 将函数结果返回sum ;主函数中sum接收函数返回的值3、请阅读下面的程序,分析程序是否

20、能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。void main() int num = 100; printf(“%d, %o, %xn”,num,num,num);答案:100 144 64解析:printf()函数将十进制数100分别以十进制,八进制,十六进制形式输出。4、请阅读下面的程序,当用户从键盘输入hello world时,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。void main()char str256;scanf(“%s”,str);printf(“%sn”,str);答案:hello解析:输入hello world

21、时,中间的空格对scanf()函数来说是终止符,后面的内容无法读取。5、请阅读下面的程序,在空白处填写正确的代码,实现下列功能。用户从键盘输入两个整型数据,将两个数据相加输出。void main() int a,b; ; printf(“%dn”, );答案:scanf(“%d%d”,&a,&b);a + b;解析:键盘输入数据,用scanf()函数;输入两个数据的和a + b; 6、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。int func2(int a, int b) int c; c = a * b % 3; return c;int

22、 func1(int a, int b) int c; a += a; b += b; c = func2(a, b); return c * c;void main() int x = 11, y = 19; printf(the final result is:%dn, func1(x, y);答案:4解析:x = 11,y = 19传入func1()函数,在func1()函数中经过运算变为22,38,然后传入给func2()函数,返回运算结果2,func1()函数收到返回值2以后再经过运算返回给主调用函数结果为4。7、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因

23、;如果能,请写出运行结果。void func2(int a, int b) a = a + 10; b = a + 10;void func(int a, int b) a = func2(); b = func2();void main() int x = 1, y = 10; func1(x,y); printf(x = %d, y = %dn”,x, y);答案:x = 1, y = 10;解析:将实参传递给形参,只是复制了一份给x,y的值,参数在被调用函数内部改变,不影响其在调用函数中的值。8、请阅读下面的程序,在空白处填写正确的代码,实现下列功能。用户从键盘输入四个数,比较得出四个数

24、中的最大值并输出。int max2(int a, int b) if (a b) return a; else return b; int max4(int a, int b, int c, int d) int res; res = max2(a, b); res = ; res = max2(res, d); ;void main() int a, b, c, d, max; printf(请输入四个整数:); ; max = max4(a, b, c, d); printf(max=%d n, max);答案:max2(res,c);return res;scanf(“%d%d%d%d”

25、,&a,&b,&c,&d);解析:在max4()函数中,res = max2(a,b)返回的是a,b中的最大值,这个最大值再与c进行比较,所以res = max2(res,c),返回的较大的值再与d作比较,再将比较得出的较大的值返回给主调用函数,这个较大的值就是四个数中的最大值。9、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。int add(int n) if (n = 1) return 1; else return n + add(n - 1);void main() int n = 5;int sum = add(5);printf(“

26、结果为:%dn”,sum);答案:15解析:add()函数进行递归调用,传入的参数5,会一直递减相加直到递减至1。10、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。void fun(int n) if (n0) printf(%dt, n); fun(-n); void main() int a = 5; fun(a); 答案:5 4 3 2 1解析:fun()函数递归调用,每打印一次就自减再调用一次自己。11、请阅读下面的程序,在空白处填写正确的代码,实现下列功能。用递归方法求出n!。int fac(int n) int t; if( )

27、return 1; else t = ; return t; void main() int m, y; printf(Enter m : n); scanf(%d, &m); if (m1时,实现阶乘,则为n*fun(n-1);12、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。int x = 5;static void cude() x = x*x*x;void main() cude(); printf(x = %dn, x);答案:125解析:全局变量x,当调用cude()内部函数时,并没有传入参数,没有复制,所以x值的变化直接改变了x

28、本身的值13、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。文件int func(int a, int b) return a + b;文件static int func(int a, int b) return a b;void main() int x = 5, y = 2; printf(“%dn”,func(5, 2);答案:3解析:当内部函数与外部函数重名时,会优先调用内部函数14、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。源文件int func(int a, int b) return a + b;源文件extern int func(int a, int b);void main() i

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1