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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、国家二级 C语言(函数)机试模拟试卷 5及答案与解析 一、选择题 1 若有代数式 (其中 e仅代表自然对数的底数,不是变量 ),则以下能够正确表示该代数式的 C语言表达式是 ( )。 ( A) sqrt(fabs(pow(n, x)+exp(x) ( B) sqrt(fabs(pow(n, x)+pow(x, e) ( C) sqrt(abs(nx+ex) ( D) sqrt(fabs(pow(x, n)+exp(x) 2 下列叙述中错误的是 ( )。 ( A)可以给指针变量赋一个整数作为地址值 ( B) 函数可以返回地址值 ( C)改变函数形参的值,不会改变对应实参的值 ( D)当在程序的开

2、头包含头文件 stdio h时,可以给指针变量赋 NULL值 3 若函数调用时的实参为变量,下列关于函数形参和实参的叙述中正确的是 ( )。 ( A)函数的形参和实参分别占用不同的存储单元 ( B)形参只是形式上的存在,不占用具体存储单元 ( C)同名的实参和形参占同一存储单元 ( D)函数的实参和其对应的形参共占同一存储单元 4 下列叙述中错误的是 ( )。 ( A) C程序必须由一个或一个以上的函数组成 ( B)函数调用可以作为一个独立的语句存在 ( C)若函数有返回值,必须通过 return语句返回 ( D)函数形参的值也可以传回给对应的实参 5 下列关于 return语句的叙述中正确的

3、是 ( )。 ( A)一个自定义函数中必须有一条 return语句 ( B)一个自定义函数中可以根据不同情况设置多条 return语句 ( C)定义成 void类型的函数中可以有带返回值的 return语句 ( D)没有 return语句的自定义函数在执行结束时不能返回到调用处 6 已定义以下函数 int fun(int*p)return*p; fun函数的返回值是 ( )。 ( A)一个整数 ( B)不确定的值 ( C)形参 P中存放的值 ( D)形参 P的地址值 7 下列叙述中错误的是 ( )。 ( A)用户定义的函数中可以没有 return语句 ( B)用户定义的函数中可以有多个 ret

4、urn语句,以便可以调用一次返回多个函数值 ( C)用户定义的函数中若没有 return语句,则应当定义函数为 void类型 ( D)函数的 return语句中可以没有表达式 8 若各选项中所用变量已正确定义,函数 fun中通过 return语句返回一个函数值,下列选项中错误的程序是 ( )。 ( A) main( ) x=fun(2 , 10); float fun(int a, int B) ( B) float fun(int a, int B) main( ) x=fun(i , j); ( C) float fun(int, int); main( ) x=fun(2 , 10);

5、float fun(int a, int B) ( D) main( ) float fun(int i, int j); x=fun (i, j); float fun(int a, int B) 9 有以下程序: #include stdio h void fun(int a, int b) int t; t=a: a=b; b=t; main( ) int c10=1, 2, 3, 4, 5, 6, 7, 8, 9, 0, i; for(i=0; i 10; i+=2) fun(ci, ci+1); for(i=0; i 10; i+) printf(“ d, “, ci); prinf

6、f(“ n“); 程序的运行结果是 ( )。 ( A) 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, ( B) 2, 1, 4, 3, 6, 5, 8, 7, 0, 9, ( C) 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, ( D) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 有以下程序: #include stdio h double f(double x); main( ) double a=0; int i; for(i=0; i 30; i+=10)a+=f(double)i); printf(“ 3 Of n“, a); doub

7、le f(double x) return x*x+1; 程序的运行结果是 ( )。 ( A) 500 ( B) 401 ( C) 503 ( D) 1404 11 有以下程序: #include stdio h main( ) int m=1, n=2, *p=&m, *q=&n, *r; r=p: p=q: q=r; printf(“ d, d, d, d n“, m, n, *p, *q); 程序的运行结果是 ( )。 ( A) 2, 1, 1, 2 ( B) 1, 2, 1, 2 ( C) 2, 1, 2, 1 ( D) 1, 2, 2, 1 12 若有函数首部 int fun(dub

8、le x10, int*n),则下列针对此函数的函数声明语句中正确的是 ( )。 ( A) int fun(double, int); ( B) int fun(double*, int*); ( C) int fun(double*x, int n); ( D) int fun(double x, int*n); 13 有以下程序: #include stdio h int f(intx); main( ) int n=1, m; m=f(f(f(n); prinff(“ d n“, m); int f(int x) return x*2; 程序的运行结果是 ( )。 ( A) 8 ( B)

9、 2 ( C) 4 ( D) 1 14 有以下程序: #include stdio h int fun(int x, int y) if(x!=y) return(x+y) 2); else return(x); main( ) int a=4, b=5, c=6; prinff(“ d n“, fun(2*a, fun(b, c); 程序的运行结果是 ( )。 ( A) 6 ( B) 3 ( C) 8 ( D) 12 15 有以下程序: #include stdio h int f(int x, int y) return(y-x)*x); main( ) int a=3, b=4, C=5

10、, d; d=f(f(a, b), f(a, c); prinff(“ d n“, d); 程序的运行结果是 ( )。 ( A) 7 ( B) 10 ( C) 8 ( D) 9 16 设有如下函数定义: #include stdio h int fun(int k) if(k 1)return0; else if(k=1)return1; else return fun(k-1)+1; 若执行调用语句 n=fun(3);,则函数 fun总共被调用的次数是 ( )。 ( A) 2 ( B) 3 ( C) 4 ( D) 5 17 有以下程序: #include stdio h int fun(in

11、t x) int p; if(x=0|x=1) return(3); p=x-fun(x-2); return p; main( ) prinff(“ d n“, fun(7); 程序的运行结果是 ( )。 ( A) 2 ( B) 3 ( C) 7 ( D) 0 18 有以下程序: #include stdio h void f(intb) int i; for(i=2; i 6; i+) bi*=2; main( ) int a10=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, i; f(a); for(i=0; i 10; i+) prinff(“ d, “, ai); 程

12、序的运行结果是 ( )。 ( A) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ( B) 1, 2, 6, 8, 10, 12, 7, 8, 9, 10, ( C) 1, 2, 3, 4, 10, 12, 14, 16, 9, 10, ( D) 1, 2, 6, 8, 10, 12, 14, 16, 9, 10, 19 在一个 C源程序文件中所定义的全局变量,其作用域为 ( )。 ( A)由具体定义位置和 extern说明来决定范围 ( B)所在程序的全部范围 ( C)所在函数的全部范围 ( D)所在文件的全部范围 20 在 C语言中,只有在使用时才占用内存单元的变量,其存储

13、类型是 ( )。 ( A) auto和 static ( B) extern和 register ( C) auto和 register ( D) statie和 register 21 有以下程序: #include stdio h int fun( ) static int x=1; x*=2: return x: main( ) int i, s=1; for(i=1; i =3; i+) s*=fun( ); prinff(“ d n“, s); 程序的运行结果是 ( )。 ( A) 10 ( B) 30 ( C) 0 ( D) 64 22 有以下程序: #include stdio

14、h int fun(int x, int n) static int sum=0, i; for(i=0; i n; i+) sum+=xi; return sum; main( ) int a=1, 2, 3, 4, 5, b=6, 7, 8, 9, s=0; s=fun(a, 5)+fun(b, 4); prinff(“ d n“, s); 程序的运行结果是 ( )。 ( A) 55 ( B) 50 ( C) 45 ( D) 60 23 下列叙述中错误的是 ( )。 ( A) C程序函数中定义的自动变量,系统不自动赋确定的初值 ( B)在 C程序的同一函数中,各复合语句内可以定义变量,其作

15、用域仅限本复合语句内 ( C) C程序函数中定义的赋有初值的静态变量,每调用一次函数赋一次初值 ( D) C程序函数的形参不可以说明为 static型变量 国家二级 C语言(函数)机试模拟试卷 5答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 B选项中函数 pow(x, e)错误,应该直接使用 exp(x)函数。 C选项中函数 abs(n x+e x)错误,应该使用 fabs( )返回浮点数的绝对值。 D选项中pow(x, n)参数顺序错误。 【知识模块】 函数 2 【正确答案】 A 【试题解析】 不能将一个整数直接赋给指针变量作为地址,所以 A选项是错误的。函数的返回值可以是地址

16、,即指针。函数调用中形参值的变化不会传递给实参。 【知识模块】 函数 3 【正确答案】 A 【试题解析】 本题重点考查的是函数的形参和实参。在定义函数时,函数名后面括弧中的变量名称为 “形式参数 ”(简称形参 ),在主调函数中调用一个函数时,函数名后 面括弧中的参数 (可以是一个表达式 )称为 “实际参数 ”(简称实参 )。 C语言规定,实参变量对形参变量的数据传递是 “值传递 ”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元,因此 A选项正确。 【知识模块】 函数 4 【正确答案】 D 【试题解析】 形参是函数定义时由用户定义的形式上的变量

17、。实参是函数调用时,主调函数为被调函数提供的原始数据。在 C语言中,实参向形参传送数据的方式是 “值传递 ”,因此 D选项正确。 【知识模块】 函数 5 【正确答案 】 B 【试题解析】 在函数中允许有多个 return语句,但每次调用只能有一个 return语句被执行,因此只能返回一个函数值, A选项描述错误。定义成 void类型的函数,不允许从该函数取得返回值,也不允许使用 return语句, C选项描述错误。没有 return语句的函数在执行到函数的最后一条语句后会自动返回到调用处, D选项描述错误。因此 B选项正确。 【知识模块】 函数 6 【正确答案】 A 【试题解析】 返回值为指针

18、变量指向的数据,该数据已被定义为整型,因此 A选项正确。 【知识模块】 函数 7 【正确答案】 B 【试题解析】 本题重点考查函数返回值的相关知识。函数的值只能通过 return语句返回主调函数,在函数中允许有多个 return语句,但每次调用只能有一个return语句被执行,因此只能返回一个函数值。不返回函数值的函数,可以明确定义为 “空类型 ”,类型说明符为 void。因此选择 B选项。 【知识模块】 函数 8 【正确答案】 A 【试题解析】 在调用子函数时,应对其进行说明。 A选项中,调用时没有对子函数进行说明。 B、 C选项中,被调用函数在主调函数之前定义,不 用说明; D选项中,在主

19、函数中对被调用函数的返回值类型进行了说明。因此选择 A选项。 【知识模块】 函数 9 【正确答案】 A 【试题解析】 函数调用中发生的数据传送是单向的,即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参的值发生改变,而实参的值不会变化,所以数组 c中的元素值并没有变化,选择 A选项。 【知识模块】 函数 10 【正确答案】 C 【试题解析】 本题重点考查函数的定义和调用。第一次循环, a=0, i=0,返回值a=0*0+1=1;第二次循环, a=1, i=10,返回值 a=10*10+1+1=102;第三次循环,a=102, i=20,返回值 a=20*2

20、0+1+102=503;第四次循环, a=503, i=30,不符合 i 30,跳出循环,最后结果输出 a=503。 【知识模块】 函数 11 【正确答案】 D 【试题解析】 int m=1, n=2, *p=&m, *q=&n, *r;即指针变量 p指向 m,指针变量 q指向 n, r=p; p=q; q=r;即通过指针变量 r,将指针 p和指针 q的指向交换,因此最后输出 1, 2, 2, 1。 【知识模 块】 函数 12 【正确答案】 B 【试题解析】 函数声明的一般形式为:类型说明符被调函数名 (类型形参,类型形参 ) ;或为类型说明符被调函数名 (类型,类型 ) 。由于函数首部为 i

21、nt fun(double x10, int*n),因此 B选项正确。 【知识模块】 函数 13 【正确答案】 A 【试题解析】 第一次调用 m=f(f(f(1),第二次为 m=f(f(2),第三次为 m=f(4),即返回值为 8。 【知识模块】 函数 14 【正确答案】 A 【试题解析】 本题中第一次调用为 fun(8, fun(5, 6),因为 fun(5, 6)的返回值为 5,所以第二次调用为 fun(8, 5)=6,所以选择 A选项。 【知识模块】 函数 15 【正确答案】 D 【试题解析】 调用 f(a, b)函数返回 3,调用 f(a, c)函数返回 6,所以外层调用f(f(a,

22、b), f(a, c);即调用 f(3, 6)函数返回 9。 【知识模块】 函数 16 【正确答案】 B 【试题解析】 首先 n=fun(3), 3被当作参数传递进去,这就进行了一次调用, 3被当作参数传进去后,程序 会执行这句 else return fun(k-1)+1;这就调用了第二次,而参数是 3-1也就是 2。 2被当作参数传进去后,程序会执行这句 else return fun(k-1)+1;这就调用了第三次,而参数是 2-1也就是 1。 1被当作参数传进去后,程序会执行这句 else if(k=1)return1;不再递归调用,所以最终结果为 3次。 【知识模块】 函数 17 【

23、正确答案】 A 【试题解析】 因为 fun(int x)是一个递归函数,所以主函数中 fun(7)经过 3次递归调用,其过程可以描述为 fun(7)=7-fun(5)=7-(5-fun(3)=7-(5-(3-fun(1)=7-(5-(3-3)=7-5=2,所以最后的输出结果为 2,因此 A选项正确。 【知识模块】 函数 18 【正确答案】 B 【试题解析】 数组名是常量,表示的是数组首元素的地址。当执行 f(a)的时候,由于传递的是首地址,相当于直接对数组 a进行操作,所以从数组 a的第 3个元素 a2到元素 a5,每个元素值扩大两倍,因此 B选项正确。 【知识模块】 函数 19 【正确答案】

24、 A 【试题解析】 全 局变量的作用域是从声明处到文件的结束,所以选择 A选项。 【知识模块】 函数 20 【正确答案】 C 【试题解析】 auto:函数中的局部变量,动态地分配存储空间,数据存储在动态存储区中,在调用该函数时,系统会给它们分配存储空间,在函数调用结束后自动释放这些存储空间。 register:为了提高效率, C语言允许将局部变量的值放在CPU中的寄存器中,这种变量叫 “寄存器变量 ”,只有局部自动变量和形参可以作为寄存器变量。 extern:外部变量 (即全局变量 )是在函数的外部定义的,它的作用域为从变量定义处 开始,到本程序文件的末尾。如果外部变量不在文件的开头定义,其有

25、效的作用范围只限于定义处到文件终了。 static:静态局部变量,属于静态存储类别,在静态存储区内分配存储单元,在程序整个运行期间都不释放。 【知识模块】 函数 21 【正确答案】 D 【试题解析】 本题中静态局部变量 x,在静态存储区内分配存储单元,在程序整个运行期间都不释放。所以第 1次循环 s的值为 2;第 2次循环中,返回的 x值为4,所以 s的值为 8;第 3次循环,返回的 x值为 8,所以 s的值为 64。 【知识模块】 函数 22 【 正确答案】 D 【试题解析】 内部静态变量是始终存在的,当函数被调用退出后,内部静态变量会保存数据,再次调用该函数时,以前调用时的数值仍然保留着。 fun(a, 5)的值是 15,再次调用后 sum=15,所以 fun(b, 4)=45, s=45+15=60,因此 D选项正确。 【知识模块】 函数 23 【正确答案】 C 【试题解析】 A选项描述正确,自动变量未赋初值,为随机值; B选项描述正确,变量定义除在函数开始位置外,在复合语句开始也可以; C选项描述是错误的,函数内的静态变量只在第一次调用时赋值 ,以后调用保留上次的值; D选项描述也正确,形参属于局部变量,占用动态存储区,而 static型变量占用静态存储区。 【知识模块】 函数

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