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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、国家二级 C语言机试(函数)模拟试卷 3及答案与解析 一、选择题 1 有以下程序 #include int f(int n) int t = 0, a=5; if (n/2) int a=6; t += a+; else int a=7; t += a+; return t + a+; main() int s=0, i=0; for (; i int fun(char p10) int n=0,i; for(i=0; i main() char w20, a510=“abcdef“, “ghijkl“, “mnopq“, “rstuv“, “wxyz“; int p62=0,1,1,5,0,

2、0,0,2,1,4,4,4, i; for (i=0; i void f(int x) if (x = 10) printf(“%d-“, x%10); f(x/10); else printf(“%d“, x); main() int z = 123456; f(z); 则程序的输出结果是( )。 ( 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- 6 若有以下程序 #include int a=2; int f(int m) static int n; n=0; n+; a+; return n+m+a

3、; main() int k; for (k=0; k int f(int a, int n) if (n 1) int t; t=f(a, n-1); return t an-1 ? t : an-1; else return a0; main() int a = 8,2,9,1,3,6,4,7,5; printf(“%dn“, f(a, 9); 则程序的输出结果是( )。 ( A) 9 ( B) 1 ( C) 8 ( D) 5 8 若有以下程序 #include int f(int m) static int n=0; int a=2; n+; a+; return n+m+a; main

4、() int k; for (k=0; k int fun( int x ) int p; if (x=0 | x=1) return(3); p= x - fun( x-2 ); return (p); main() printf (“%dn“, fun( 9 ) ); 程序运行 后的输出结果是( )。 ( A) 7 ( B) 5 ( C) 9 ( D) 4 10 有以下程序 #include fun( int a, int b ) int static m=0, i=2; i=i+m+1; m=i+a+b; return m; main() int k=4, m=1, p; p=fun(

5、k, m); printf(“%d,“,p); p=fun( k, m); printf(“%dn“,p); 程序运行后的输出结果是( )。 ( A) 8,17 ( B) 7,16 ( C) 8,8 ( D) 7,17 11 有以下程序 #include void fun ( int n ,int *s ) int f; if( n=1 ) *s = n+1 ; else fun( n-1, *s = f ; main() int x =0; fun( 4, printf(“%dn“,x); 程序运行后的输出结果是( )。 ( A) 2 ( B) 1 ( C) 3 ( D) 4 12 有以下程

6、序 #include void fun ( int *s ) static int j=0; do sj += s j+1; while(+j int fun( int n ) int a; if( n=1 ) return 1; a = n + fun( n-1 ); return ( a ); main() printf( “%dn“, fun( 5 ) ); 程序的输出结果是( )。 ( A) 15 ( B) 14 ( C) 10 ( D) 9 16 有以下程序 #include int d=1; void fun( int p ) int d=5; d += p+; printf(“%

7、d “, d ); main() int a=3; fun( a ); d += a+; printf(“%dn“,d); 程序的输出结果是( )。 ( A) 8 4 ( B) 9 6 ( C) 9 4 ( D) 8 5 17 有以下程序 #include int fun(int a) int b=0; static int c=3; a =( c+,b+); return ( a ); main() int a = 2, i, k; for( i=0; i int a=1, b=2; void fun1( int a, int b ) printf( “%d %d “ ,a, b ); vo

8、id fun2() a=3; b=4; main() fun1(5,6); fun2( ); printf( “%d %dn“,a, b ); 程序运行后的输出结果是( )。 ( A) 5 6 3 4 ( B) 3 4 5 6 ( C) 1 2 5 6 ( D) 5 6 1 2 19 有以下程序 #include void func( int n ) static int num = 1; num += n; printf(“%d “, num); main() func(3); func(4); printf(“n“); 程序 运行后的输出是( )。 ( A) 4 8 ( B) 4 5 (

9、C) 3 5 ( D) 3 4 20 有以下程序 #include void f(int x, int n) if ( n 1) printf(“%d,“, xn-1); f(x, n-1); else printf(“%d,“, x0); main() int z6 = 1,2,3,4,5,6; f(z,6); printf(“n“); 程序的运行结果是( )。 ( A) 6,5,4,3,2,1, ( B) 6,1, ( C) 2,3,4,5,6,1, ( D) 1,2,3,4,5,6, 21 有以下程序 #include int a=2; int f() static int n=0; i

10、nt m=0; n+; a+; m+; return n+m+a; main() int k; for (k=0; k void f(int x, int n) if ( n 1) f( printf(“%d,“, x0); else printf(“%d,“, x0); main() int z6 = 1,2,3,4,5,6; f(z,6); printf(“n“); 程序的运行结果是( )。 ( A) 6,5,4,3,2,1, ( B) 1,1 ( C) 1,1,1,1,1,1, ( D) 1,2,3,4,5,6, 23 有以下程序 #include int a=2; int f() st

11、atic int n; int m; m=n=0; n+; a+; m+; return n+m+a; main() int k; for (k=0; k main() int i=1, j=3; printf(“%d,“ ,i+ ); int i=0; i+=j*2; printf(“%d,%d,“ ,i,j ); printf(“%d,%dn“ ,i,j ); 程序运行后的输出结果是( )。 ( A) 1,6,3,2,3 ( B) 1,6,3,1,3 ( C) 1,6,3,6,3 ( D) 1,7,3,2,3 25 有 以下程序 #include int fun(int a,int b)

12、static int m=0, i=2; i +=m+1; m = i + a + b; return m; main() int k=4, m=1, p; p = fun( k,m ); printf(“%d,“, p); p = fun( k,m ); printf(“%dn“ ,p ); 程序运行后的输出结果是( )。 ( A) 8,17 ( B) 8,16 ( C) 8,8 ( D) 8,20 26 若有定义语句: char str1=“string“,str28,*str3, str410=“string“;,库函数 strcpy的功能是复制字符串,以下选项中错误的函数调用是( )。

13、 ( A) strcpy(str3, “HELLO!“) ( B) strcpy(str2, “HELLO!“) ( C) strcpy(str1, “HELLO!“) ( D) strcpy(str4, “HELLO!“) 27 当没有指定 C语言中函数形参的存储类别时,函数形参的存储类别是( )。 ( A)自动 (auto) ( B)静态 (static) ( C)寄存器 (register) ( D)外部 (extern) 28 有如下程序 #include void convert(char ch) if (ch void get_put() char ch; ch = getchar

14、(); if (ch != n) get_put(); putchar(ch); main() get_put(); printf(“n“); 程序运行时,输入 1234,则输出结果是( )。 ( A) 4321 ( B) 1234 ( C) 4444 ( D) 1111 30 有如下程序 #include int sum(int data) static int init = 0; return init += data; main() int i; for (i=1; i int * sum(int data) static int init = 0; init += data; retu

15、rn main() int i, *p; for (i=1; i void fac2(int ); void fac1(int n) printf(“*“); if(n0) fac2(n-1); void fac2(int n) printf(“#“); if(n0) fac2(-n); main() fac1(3); 程序的运行结果是( )。 ( A) *# ( B) *#* ( C) *# ( D) *#*# 33 有以下程序 #include int fun(int n) static int t=1; int i=1; for( ; i main() int findmax(int,i

16、nt,int),m; m=findmax(a,b,c); int findmax(int x,int y,int z) 则以下叙述正确的是( )。 ( A)在 main函数中 声明了 findmax函数 ( B)在 main函数中定义了 findmax函数 ( C)在 main函数中两次调用了 findmax函数 ( D)在 main函数内、外重复定义了 findmax函数 35 有以下程序 #include void fun(int n) int i; if(i=n/10)!=0) fun(i); putchar( n%10+0); main() fun(256); 程序运行后的输出结果是(

17、 )。 ( A) 256 ( B) 652 ( C) 2560 ( D) 52 国家二级 C语言机试(函数)模拟试卷 3答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 一个源文件中如果外部变量和局部变量同名,则在该局部变量的作用域内,该外部变量会被 “屏蔽 “, main()函数中调用两次 f()函数,两次调用均进入 else选择支句, t=7,返回 7+5=12,所以 s=0+f(0)+f(1)=24,答案选 A。 【知识模块】 函数 2 【正确答案】 A 【试题解析】 C语言中,比较两个字符串只能使用字符串处理函数中的字符串比较函数 strcmp(字符串 1,字符串 2),若若

18、字符串 1与字符串 2相同则该函数返回0,所以选项 A)符合要求,答案选 A)。 【知识模块】 函数 3 【正确答案】 A 【试题解析】 函数 fun()的功能是统计字符串数组每个字符串首字母为 ?T?的字符串个数,所以答案选 A。 【知识模块】 函数 4 【正确答案】 A 【试题解析】 考查二维数组元素的引用。该段程序代码的作用是取二维数组 p中的元素对作为数组 a的下标引用 a中的元素,并用一维数组 w保存。所以w0=ap00p01=a01= ?b?, w1=ap10p11=a15= ?l?,同理w2=a00= ?a?, w3=a02= ?c?, w4=a14= ?k?, w5=a44=

19、?0?,所以输出结果为 “black“,答案选 A。 【知识模块】 函数 5 【正确答案】 A 【试题解析】 函数 f()的功能是将数字 x逆序输出,并在输出的数字之间加上间隔符号 ?- ?,所以答案选 A。 【知识模块】 函数 6 【正确答案】 A 【 试题解析】 静态变量定义时的初始化只运行一次,并且其值在程序运行过程中一直存在,但是该函数中在定义静态变量 n时并没有对其初始化,接下来有个赋值语句 “n=0;“所以每次执行函数 f()时,静态变量 n都会先被赋值为 0再自加 1,所以输出的 f(0)=1+0+3=4, n=1, a=3; f(1)=1+1+4=6, n=1, a=4;f(2

20、)=1+2+5=8, n=1, a=5; f(3)=1+3+6=10, n=1, a=6。所以答案选 A。 【知识模块】 函数 7 【正确答案】 A 【试题解析】 函数 f()的功能是返回数 组 a中所有数字中最大的值,所以输出结果为 9,答案选 A。 【知识模块】 函数 8 【正确答案】 A 【试题解析】 静态变量定义时的初始化只运行一次,并且其值在程序运行过程中一直存在,而局部变量则是用时分配,用完释放。 main()函数中调用四次 f()函数, f(0)=1+0+3=4, n=1, a=3; f(1)=2+1+3=6, n=2, a=3; f(2)=3+2+3=8, n=3,a=3; f

21、(3)=4+3+3=10, n=4, a=3。所以答案选 A。 【知识模块】 函数 9 【正确答案】 A 【试题解析】 考查函数的递归调用。 fun(9)=9-fun(7)=9-(7-fun(5)=2+(5-fun(3)=7-(3-fun(1)=7,所以答案选 A。 【知识模块】 函数 10 【正确答案】 A 【试题解析】 静态变量定义时的初始化只运行一次,并且其值在程序运行过程中一直存在,所以第一次调用 fun(k,m)时, p=fun(4,1)=m=8,静态变量i=2+0+1=3,m=3+4+1=8;第二次调用 fun(k,m)时, p=fun(4,1)=m=17,静态变量i=3+8+1=

22、12,m=12+4+1=17;输出结果为 8,17。答案选 A。 【知识模块】 函数 11 【正确答案】 A 【试题解析】 该递归函数的出口是 “if(n=1) *s = n+1 “,所以最后 s的值一定为1+1=2,答案选 A。 【知识模块】 函数 12 【正确答案】 A 【试题解析】 主函数 main()中第一个 for循环中共调用函数 fun()两次:第一次调用时, do-while循环的循环体执行两次,结束后 a10=3,5,3,4,5,静态变量j=2,由于静态变量定义时的初始化只运行 一次,所以第二次调用时, j保留第一次调用结束时的值 2, do-while循环执行一次,结束后 a

23、10=3,5,7,4,5,所以第二个 for循环输出数组 a下标范围为 1到 4之间的元素,所以答案选 A。 【知识模块】 函数 13 【正确答案】 A 【试题解析】 用户定义的标识符用来给变量、函数、数组或指针等命名,而这些在 C语言中都有自己的作用域,选项 A)正确; C语言中所有的变量都有自己的作用域,选项 B)错误;在函数内定义的变量为局部变量,在语句块内定义的变量也为局部变量,选项 C)错误;局部变量可 以被 static修饰从而成为一种特殊的局部变量 静态局部变量,选项 D)错误;答案选 A)。 【知识模块】 函数 14 【正确答案】 A 【试题解析】 全局变量可以用 static

24、修饰,限制该变量只能在当前文件有效而不能被其他文件访问,选项 A)正确;变量的说明只是向编译程序描述变量类型,但不为该变量分配存储空间,变量的定义才为该变量分配存储空间,选项 B)错误;在语句块内可以定义变量,定义的变量为局部变量,选项 C)错误;函数的形参相当于在函数内部定义的一个变量,属于局部变量,选项 D)错误;答案选A)。 【知识模块】 函数 15 【正确答案】 A 【试题解析】 考查递归函数。函数 fun()的功能是计算 1到 n之间的数字之和,所以计算结果为 15,答案选 A。 【知识模块】 函数 16 【正确答案】 A 【试题解析】 函数的参数传递过程中,形参只是实参的一个副本,

25、形参改变不能影响到实参。若外部变量和局部变量同名,则在该局部变量的作用域内,该外部变量会被 “屏蔽 “。所以调用函数 fun(a)时,使用的变量 d为 5, d=5+3=8,输出结果为 8; main()函数内,使用的为全局变量 d, a值没有改变, d=1+3=4,输出结果为 4,所以答案选 A。 【知识模块】 函数 17 【正确答案】 A 【试题解析】 函数 fun()中语句 “a =( c+,b+);“计算的结果始终为 0,这是因为逗号表达式的值为最后一个表达式,即 “b+“的值, b为局部变量,每次调用时均初始化为 0,所以函数 fun()的返回值始终为 0,计算得 k的值也为 0,答

26、案选 A。 【知识模块】 函数 18 【正确答案】 A 【试题解析】 在一个源文件中如果外部变量和局部变量同名,则在该局部变量的作用域内,该 外部变量会被 “屏蔽 “,所以函数 fun1()输出的为局部变量 a、 b的值: 5 6; fun2()改变的是全局变量 a、 b的值,输出结果为 3 4,答案选 A。 【知识模块】 函数 19 【正确答案】 A 【试题解析】 func()有一个静态变量 num,静态变量的初始化只进行一次,其值在程序运行过程中一直存在。调用 func(3)时 num被初始化为 1,语句 “num += n;“计算得 num值为 4,输出结果为 4;调用 func(4)时

27、 num为上一次计算的结果4,再次计算 num=8,输出结果为 8,。答案选 A。 【知识模块】 函数 20 【正确答案】 A 【试题解析】 函数 f()的功能是逆序输出 x中前 n个数据,所以答案选 A。 【知识模块】 函数 21 【正确答案】 A 【试题解析】 静态变量定义时的初始化只运行一次,并且其值在程序运行过程中一直存在,而局部变量则是用时分配,用完释放。全局变量在当前文件内也是一直存在的。 main()函数中调用三次 f()函数, f(0)=1+1+3=5, n=1, m=1, a=3;f(1)=2+1+4=7, n=2, m=1, a=4; f(2)=3+1+5=9, n=3,

28、m=1, a=5。所以答案选A。 【知识模块】 函数 22 【正确答案】 A 【试题解析】 函数 f()的功能是逆序输出 x中前 n个数据,所以答案选 A。 【知识模块】 函数 23 【正确答案】 A 【试题解析】 局变量在当前文件内也是一直存在的。而静态变量定义时的初始化只运行一次,并且其值在程序运行过程中一直存在,函数 f()在定义静态变量 n时并没有对其初始化,接下来有个赋值语句 “m=n=0;“所以每次执行函数 f()时,静态变量 n都会先被赋值为 0再自加 1,所以输出的 f(0)=1+1+3=5, n=1, m=1, a=3;f(1)=1+1+4=6, n=1, m=1, a=4;

29、 f(2)=1+1+5=7, n=1, m=1, a=5。所以答案选A。 【知识模块】 函数 24 【正确答案】 A 【试题解析】 不同作用域内若定义有同名的局部变量,则在其中一个局部变量的作用域内,其他同名的局部变量会被 “屏蔽 “,规则一般是作用域小的变量 “屏蔽 “作用域大的变量。在用 引起来的复合语句块中, i值为 6,输出结果为 6,3,而在语句块外, i为 2,输出结果为 2,3,所以答案选 A。 【知识模块】 函数 25 【正确答案】 A 【试题解析】 静态变量定义时的初始化只运行一次,并且其值在程序运行过程中一直存在,所以第一次调用 fun(k,m)时, p=fun(4,1)=

30、m=8,静态变量i=2+0+1=3,m=3+4+1=8;第二次调用 fun(k,m)时, p=fun(4,1)=m=17,静态变量i=3+8+1=12,m=12+4+1=17;输出结果为 8,17。答案选 A。 【知识模块】 函数 26 【正确答案】 A 【试题解析】 字符指针必须指向一个地址,没有指向具体内存地址的指针不能作为 strcpy()的参数,答案选 A。 【知识模块】 函数 27 【正确答案】 A 【试题解析】 C语言中,当省略变量的存储类型时,局部变量的存储类别默认为auto,所以答案选 A。 【知识模块】 函数 28 【正确答案】 A 【试题解析】 函数 conver()的作用

31、是输出 ASCII码在字母 D到字母 ch之间的字符,答案选 A)。 【知识模块】 函数 29 【正确答案】 A 【试题解析】 函数 get_put()的作用是利用递归调用,优先输出最后一个输入的字符,即逆序输 出输入的字符串,答案选 A。 【知识模块】 函数 30 【正确答案】 A 【试题解析】 静态变量在定义时的初始化只运行一次,并且其值在程序运行过程中一直存在,所以函数 sum()的作用是用静态变量 init累加所有的调用 sum()函数时传入的参数值。 for循环中传入的参数为 1,2,3,4,5,所以输出的结果为1,3,6,10,15,答案选 A。 【知识模块】 函数 31 【正确答

32、案】 A 【试题解析】 静态变量在定义时的初始化只运行一次,并且其值在程序运行过程中一直存在,所以函数 sum()的作用是用静态变量 init累加所有的调用 sum()函数时传入的参数值。 for循环中传入的参数为 1,2,3,4,每次的计算结果为 1,3,6,10。再次调用函数 sun(0)时返回值为 10,答案选 A。 【知识模块】 函数 32 【正确答案】 A 【试题解析】 考查函数的嵌套调用,嵌套调用顺序分别为: fac1(3)、 fac2(2)、fac2(1)、 fac2(0),每调用 fac1()输出一个 “*“,调用 fac2()输出一个 “#“,所以答案选 A。 【知识模块】

33、函数 33 【正确答案】 A 【试题解析】 函数 fun()调用两次, fun(2)中计算出的结果为 2,由于函数 fun()中有一个静态变量 t,静态变量在定义时的初始化只运行一次,并且其值在程序运行过程中一直存在,所以第二次调用 fun(3)时 t=3,计算结果为 12。主函数 main()用局部变量 t累加两次调用结果, t初始值为 1,所以最终 t=15,答案选 A。 【知识模块】 函数 34 【正确答案】 A 【试题解析】 函数不能嵌套定义,但是可以在一个函数体内对另一个函数进行声明,函数声明的一般形式为 “类型说明符 被调函数名 ( 类型 形参 , 类型 形参 )“ ,所以语句 “int findmax(int,int,int)“为对函数 findmax()的声明,语句“m=findmax(a,b,c);“为调用函数 findmax(),在 main()函数外是函数 findmax()的定义。答案选 A。 【知识模块】 函数 35 【正确答案】 A 【试题解析】 函数 fun()的功能利用递归调用的方式是将数字 n的不同位提取出来并按照从高位到低位的顺序将各位的数字以字符的形式输出,所以答案选 A。 【知识模块】 函数

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