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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文([计算机类试卷]国家二级C语言机试(函数和数组)模拟试卷8及答案与解析.doc)为本站会员(testyield361)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

[计算机类试卷]国家二级C语言机试(函数和数组)模拟试卷8及答案与解析.doc

1、国家二级 C语言机试(函数和数组)模拟试卷 8及答案与解析 一、选择题 1 有以下程序 int f(int x); main()int n=1, m; m=f(f(f(n); printf(“ d n“, m); int flint x) return x*2; 程序运行后的输出结果是 ( A) 1 ( B) 2 ( C) 4 ( D) 8 2 有以下程序 #include stdio h int fun(int x, int y) main() if(x=y)return(x); int a=4, b=5, c=6; else return(x+y) 2); printf(“ d n“, f

2、un(2*a, fun(b, c); 程序运行后的输出结果是 ( A) 3 ( B) 6 ( C) 8 ( D) 12 3 有以下程序 #include stdio h main() int f(int x, int y) int a=3, b=4, c=5, d; return(y-x)*x); d=f(f(a, b), f(a, c); printf(“ d n“, d); 程序运行后的输出结果是 ( A) 10 ( B) 8 ( C) 9 ( D) 7 4 有以下程序 #include stdio h double f(double x); main() double ffdouble

3、X) double a=0; int i; return x*x+1; for(i=0; i 30; i+=10)a+=f(double)i); printf(“ 5 0f n“, a); 程序运行后的输出结果是 ( A) 401 ( B) 500 ( C) 503 ( D) 1404 5 若函数调用时的实参为变量时,以下关于函数形参 和实参的叙述中正确的是 ( A)形参只是形式上的存在,不占用具体存储单元 ( B)函数的形参和实参分别占用不同的存储单元 ( C)同名的实参和形参占同一存储单元 ( D)函数的实参和其对应的形参共占同一存储单元 6 有以下程序 void fun(int a, i

4、nt b, int c) a=b; b=c; c=a; main()int a=10, b=20, c=30; fun(a, b, C); printf(“ d, d, d n“, c, b, a); 程序运行后的输出结果是 ( A) 10, 20, 30 ( B) 20, 30, 10 ( C) 30, 20, 10 ( D) 0, 0, 0 7 有以下程序 #include stdio h int f(int x); main() int f(int x) int a, b=0; return x*x+1; for(a=0; a 3; a+) b=b+f(a); putchar(A+b);

5、 ( A) BCD ( B) BDI ( C) ABE ( D) BCF 8 若有以下程序 void f(int x) main()int Z=123456; if(x =10) f(z); printf(“ d-“, x 10); f(x 10); else printf(“ d“, x); 则程序的输出结果是 ( A) 6-5-4-3-2-1 ( B) 6-5-4-3-2-1- ( C) 1-2-3-4-5-6 ( D) 1-2-3-4-5-6- 9 以下与函数 fseek(fp, OL, SEEK_SET)有相同作用的是 ( A) feof(fp) ( B) ftell(fp) ( C)

6、 fgetc(fp) ( D) rewind(fp) 10 以下程序的功能是:给 r输入数据后计算半径为 r的圆面积 s。程序在编译时出错 main() *Beginning* int r; float s; scanf(“ d“, r); s=*r*r; printf(“s= f n“, s); 出错的原因是 ( A)注释语句书写位置错误 ( B)存放圆半径的变量 r不应该定义为整型 ( C)输出语句中格式描述非法 ( D)计算圆面积的赋值语句使用了非法变量 11 以下程序函数 f的功能是:当 flag为 1时,进行由小到大排序;当 flag为 0时,进行由大到小排序 void f(int

7、b, int n, int flag) main() int i, j, t; int a10=5, 4, 3, 2, l, 6, 7, 8, 9, 10),i; for(i=0; i n一 1; i+) f( 程序运行后的输出结果是 ( A) 8, 17 ( B) 7, 16 ( C) 8, 8 ( D) 7, 17 国家二级 C语言机试(函数和数组)模拟试卷 8答案与解析 一、选择题 1 【正确答案】 D 【试题解析】 程序考查了函数的调用。对于 m=f(f(f(n);首先 “算最内层的函数调用 f(n),执行 t函数,得到返回 值 2,然后计算 f(2),得到返回值为 4,最后计算f(4

8、),得到计算结果为 8。 【知识模块】 函数和数组 2 【正确答案】 B 【试题解析】 fun(b, c)即 fun(5, 6), 5!=6,所以返回 (5+6) 2=5; fun(2*a, 5)即 fun(8, 5), 8!=5,所以返回 (8+5) 2=6。 【知识模块】 函数和数组 3 【正确答案】 C 【试题解析】 本题考查函数的嵌套调用。首先计算 f(a, b)与 f(a, c), f(a,b)=(ba)*a=3, f(a, c)=(ca)*a=6, 然后计算 f(3, 6)=(63)*3=9。 【知识模块】 函数和数组 4 【正确答案】 C 【试题解析】 由于函数 f的作用是对形参

9、 x求平方再加 1,所以在主函数中,循环第一次执行后变量 a的值等于 1,第二次执行后,变量 a的值等于 102,第 j次执行后,变量 a的值等于 503。 【知识模块】 函数和数组 5 【正确答案】 B 【试题解析】 在 C语言中,函数的实参单元与形参单元在内存中分配不同的存储单元。在调用函数时,给形参分配临时存储单元,并将实参对应的值传递给形参,在 被调用函数中对形参存储单元中的值进行运算,最后通过 return语句把函数值返回调用函数。当调用结束后,形参单元被释放,实参单元仍保留并维持原值。 【知识模块】 函数和数组 6 【正确答案】 C 【试题解析】 函数 fun中采用了变量作为参数,

10、那么参数传递以后,形参 a,b, c的变化对于实参 a, b, c是没有影响的,因此主函数中 a, b, c的值经过 fun调用以后,值没有变化。 【知识模块】 函数和数组 7 【正确答案】 B 【试题解析】 在函数 main()中,第一次执行 for循环时, b的值等于 1,此时输出字母 B;第二次执行 for循环时, b的值等于 3,此时输出字母 D;第三次执行for循环时, b的值等于 8,此时输出字母 I。 【知识模块】 函数和数组 8 【正确答案】 A 【试题解析】 函数 f的主要功能为逆置输出整数 x的每一位数据,如果 z的值为123456,逆置输出的结果为 6-5-4-3-2-1

11、。 【知识模块】 函数和数组 9 【正确答案】 D 【试题解析】 本题主要考查文件系 IO函数的使用, fseek函数用于设置文件指针的位置, feof函数用于判断是否已经到了 文件结束, ftell函数返回文件指针的当前位置, fgetc从文件读取一个字符, rewind函数将文件指针重新指向文件开始。题目当中 fseek(fp, OL, SEEK_SET)表示把文件指针移动到文件的开始位置 0,和rewilld函数功能一致。 【知识模块】 函数和数组 10 【正确答案】 D 【试题解析】 本题考查了 C语言的基本输入输出函数。选项 A)错误,代码里面的注释是正确的, “ *”和 “* ”配

12、对;选项 B)错误, r变量定义为整型是可以的;选项 C)输出语句格式正确;选项 D)正确,计算 s的时候 s=*r*r使用了未定义变量北。 【知识模块】 函数和数组 11 【正确答案】 B 【试题解析】 本题主要考查函数的调用。在 main函数中,两次调用 f函数进行排序, f函数有三个参数,第一个参数是数组地址,第二个参数是需要排序的数据个数,第三个参数指定排序依据。第一次调用 f函数的时候,从第三个元素开始对5个元素进行从大到小的排序,因此调用 f函数转换数组 a的值分别为: 5, 4,7, 6, 3, 2, 1, 8, 9, 10;第二次调用 f函数对数组 a的前 5个元素进行从小到大

13、的排序,因此排序完成后数组 a的值变成 : 3, 4, 5, 6, 7, 2, 1, 8, 9, 10。 【知识模块】 函数和数组 12 【正确答案】 D 【试题解析】 本题主要考查基本数据类型和格式化输出函数 printf。变量 k的初值为 011,表示 8进制的 11,十进制值为 9, printf输出 k+的值, +在 k的后面表示先使用后自增,因此输出的值为 9。 【知识模块】 函数和数组 13 【正确答案】 D 【试题解析】 函数 fun的主要功能是: 初值 x的值为9,因此 fun(9)=9 fun(7)=9 (7 (5 (3 3),因此答案为 7。 【知识模块】 函数和数组 14

14、 【正确答案】 C 【试题解析】 函数 fun为递归定义的函数,当调用fun(5)5+fun(4)5+4+fun(3)5+4+3+fun(2)5+4+3+2+fun(1) ,因此最后的结果为 15。 【知识模块】 函数和数组 15 【正确答案】 B 【试题解析】 本题考查函数的调用,函数 fun功能为求两个数据的和。主函数中表达式 r=fun(fun(x, y), z-),首先计算内层调用 fun(x, y),计算结果为 13,然后外层调用 fun(13, 8),结果为 21。 【知识模块】 函数和数组 16 【正确答案】 A 【试题解析】 C语言中形参数组是指针变量,其数组中元素的个数由传递

15、的实参数组决定,因此可以在定义的时候,不给出元素个数的说明,因此选项 B)和 D)形参均为指针变量,选项 A)的定义在 C语言中不存在的。 【知识模块】 函数和数组 17 【正确答案】 C 【试题解析】 这道题目考查了函数的递归调用,当执行调用语句 n=fun(3)时,返回 n=fun(2)+1,再执行 fun(2),返回 n=fun(1)+1+1,而 fun(1)等于 1,所以最后 n的值等于 3。而函数 fun总共被调用了 3次。即 fun(3), fun(2), fun(1)。 【知识模块】 函数和数组 18 【正确答案】 C 【试题解析】 主函数调用 f()函数,将实参 3传递给 x,

16、进行 if条件语句的判断不成立,接着执行 y=3*3 f(1),再执行 f(1),而 f(1)满足 if条件语句,所以 f(1)的值为 3,代入 y=3*3 f(1)=9 3=6。 【知识模块】 函数和数组 19 【正确答案】 B 【试题解析】 在字符串中字符 0表示字符串 的结束标志,所以字符串 a和 b相连接的结果为 ABCDIJK。 【知识模块】 函数和数组 20 【正确答案】 D 【试题解析】 在 C语言中函数可以递归调用,即直接或间接地自己调用自己。本题在函数 int fun(int n)的定义中又出现了对函数 fun的调用,所以函数 fun是递归函数。因而在主函数中调用 x=fun

17、(x)时,当输入 10赋给变量 x时,递归调用的过程为: fun(10)=10+fun(9)=10+9+fun(8)=10+9+8+fun(7)=10+9+8+7+fun(6) =10+9+8+7+6+fun(6)=10+9+8+7+6+5+fun(4)=10+9+8+7+6+5+4+fun(3) =10+9+8+7+6+5+4+3+fun(2)=10+9+8+7+6+5+4+3+2+fun(1) =10+9+8+7+6+5+4+3+2+1=55 【知识模块】 函数和数组 21 【正确答案】 D 【试题解析】 因为在函数 fun(int x)中,如果参数 x等于 0或等于 1时,返回值为 “3

18、”。否则 “p=x fun(x 2)”这是一个递归函 数,所以在主函数调用 fun(7)的时候,其过程为: “fun(7)=7一 fun(5)=7一 (5一 fun(3)=7一 (5一 (3一 fun(1)=7一 (5一 (3一 3)=75=2”, 所以最后的输出结果为 2。 【知识模块】 函数和数组 22 【正确答案】 A 【试题解析】 主函数中调用 f(a, 9),递归函数的调用过程如下: f(a, 9)f(a ,8)f(a , 7)f(a , 6)f(a , 5)f(a , 4)f(a , 3)f(a , 2)f(a , 1), f(a, 1)得到返回值为 a0,值为 8,递 归过程开始

19、回归,回归过程描述如下: 8 a1,返回88 a2不成立,返回 a2的值为 9 因此函数 f的主要功能为计算数组中的最大值。主函数中输出最大值为 9。 【知识模块】 函数和数组 23 【正确答案】 D 【试题解析】 本题考查 C语言的作用域规则。在 C语言中,全局变量的有效范围从定义变量的位置开始到本源文件结束。如果需要在其他源文件中使用该全局变量,则可以在其他源文件中使用 extern关键宁来声明该全局变量,这样该全局变量的作用域就被扩展到以 extern声明了该全局变量的位置开始 到此源文件结束。 【知识模块】 函数和数组 24 【正确答案】 B 【试题解析】 在函数内定义的变量是局部变量

20、,而存函数之外定义的变量称为外部变量,也是全局变量。全局变量可以为源文件中其他函数所共用,其作用域为从定义变量的位置开始到源文件结束。因此只要用户定义的标识符,全部都有作用域。局部变量可以说明为 auto、 register以及 static。 【知识模块】 函数和数组 25 【正确答案】 C 【试题解析】 用 static说明符说明全局变量时,此变量可称作静态全局变量。静态 全局变量只限于本编译单位使用,不能被其他编译单位所引用。存一个函数内部定义的变量 (包括形参 )是局部变量,它只存本函数范围内有效。不同函数中可以使用相同名字的局部变量,它们代表不同的对象, 不影响。在函数内部复合语句中

21、也可以定义变量,这些变量都是局部变量,只在本复合语句中有效。 【知识模块】 函数和数组 26 【正确答案】 C 【试题解析】 代码考查点为全局变量和局部变量的同名问题,若全局变量和某个函数中的局部变量同名,则在该函数中,此全局变量被屏蔽,在该函数内,访问的是局部变量,与同名的全局 变量不发生任何关系。主函数执行 fun(3)时候,执行调用函数 fun,使用局部变量 d=5,执行 d+=p+,相当于 d=d+(p+),得到 d的值为 8,输出。函数调用结束,转到主函数,继续执行 d+=a+,此时 d为全局变量,执行语句以后, d值为 4。 【知识模块】 函数和数组 27 【正确答案】 D 【试题

22、解析】 函数 fun1()的作用是输出局部变量 a和 b的值,在主函数中执行fun1(5, 6)的结果是输出 5, 6;函数。 fun2()的作用是给变量 a和 b分别赋值 3,4;执行 fun2()的作用是输出 3, 4。 【知识模块】 函数和数组 28 【正确答案】 A 【试题解析】 全局变量是在函数外部任意位置上定义的变量,它的作用域是从变量定义的位置开始,到整个源文件结束止。在同一编译单位内用 extern说明符扩展全局变量的作用域 (当全局变量定义在后,引用它的函数在前时,应该在引用它的函数中用 extern对此全局变量进行说明,以便通知编译程序:该变量是一个已在外部定义了的全局变量

23、,已经分配了存储单元,不需要再为它分配存储单元。这时全局变量的作用域从 extern说明处起,延伸到该函数末尾 )。当一个程序 由多个编译单位构成,并且在每个文件中均需要引用同一个全局变量,这时只在其中一个文件中定义所有的全局变量,而在其他用到这些全局变量的文件中用 extern对这些变量进行说明。 【知识模块】 函数和数组 29 【正确答案】 B 【试题解析】 在 fun1()函数之前定义了全局字符变量 a和 b。这两个变量的作用域是从其定义处到整个程序结束。在 fun1()函数之内定义了两个变量 a和 b,并且分别初始化为字符 C和 D。在 C语言中,若全局变量和某个函数中的局部变量同名,

24、则在该函数中此全局变量被屏蔽,在该函 数内访问的是局部变量,与同名的全局变量不发生任何关系。所以在主函数中,执行 fun1()后,变量 a、 b的值分别等于 C、 D,打印输出 CD,接着执行 fun2(E, F)语句,变量 a、 b的值变为E、 F并输出。 【知识模块】 函数和数组 30 【正确答案】 A 【试题解析】 本题考查了静态变量以及局部变量的同名问题。主函数中调用 fun函数两次,第一次调用 fun(4, 1),形参 a和 b接收以后, i值为 3, m的值为 8,调用结束返回 8存放到 p中并且输出 p的值为 8,除了静态变量 m和 i,变量 a,b撤销。第二次调用 fun(4, 1),接收实参值以后, i为 3+8+1,而 m为 12+4+1,即输出函数值 17。 【知识模块】 函数和数组

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1