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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、国家二级 C语言(函数和数组)机试模拟试卷 10及答案与解析 一、选择题 1 有以下程序 (strcpy为字符串复制函数, strcat为字符串连接函数 ) #include #include main() char a10=“abc“, b10=“012“, c10=“xyz“; strcpy(a+1, b+2); puts(strcat(a, c+1); 程序运行后的输出结果是 ( A) bc2yz ( B) a2yz ( C) a12xyz ( D) 12yz 2 若各选项中所用变量已正确定义,函数 fun中通过 return语句返回一个函数值,以下选项中错误的程序是 ( A) main

2、()x=fun(2 , 10); float fun(int a , int b) ( B) float fun(int a, int b)main()x=fun(i , j); ( C) floatfun(int, int); main()x=fun(2 , 10); float fun(i nt a, int b) ( D) main()float fun(int i, intj); x=fun(i , j); float fun(int a , int b) 3 以下叙述中正确的是 ( A)用户自己定义的函数只能调用库函数 ( B)不同函数的形式参数不能使用相同名称的标识符 ( C)在

3、C语言的函数内部,可以定义局部嵌套函数 ( D)实用的 C语言源程序总是由一个或多个函数组成 4 若有定义语句: char s10=“1234567 0 0“;则 strlen(s)的值是 ( A) 8 ( B) 7 ( C) 9 ( D) 10 5 有以下程序 #include main() char P20=a, b, c, d, q=“abc“, r=“abcde“; strcat(p, r); strcpy(p+strlen(q), q); printf(“ d n“, strlen(p); 程序运行后的输出结果是 ( A) 9 ( B) 11 ( C) 6 ( D) 7 6 若有定义

4、语句: char*s1=“OK“, *s2=“ok“;以下选项中,能够输出 “OK“的语句是 ( A) if(strcmp(s1, s2)!=0)puts(s1); ( B) if(strcmp(s1, s2)!=0)puts(s2); ( C) if(strcmp(s1, s2)=1)puts(s1); ( D) if(strcmp(s1, s2)=0)puts(s 1); 7 有以下程序,程序中库函数 islower(ch)用以判断 ch中的字母是否为小写字母 #include #include void fun(char *p) int i=0; while(pi) if(pi= &is

5、lower(pi-1) pi-1=pi-1-a+A; i+; main() char s1100=“ab cd EFG!“; fun(s1); printf(“ s n“, s1); 程序运行后的输出结果是 ( A) Ab Cd EFg! ( B) ab cd EFG! ( C) ab cd EFg! ( D) aB cD EFG! 8 若有以下定义和语句 char s110=“abcd!“, *s2=“ n123 “; printf(“ d d n“, strlen(s1), strlen(s2); 则输出结果是 ( A) 10 5 ( B) 10 7 ( C) 5 5 ( D) 5 8 9

6、 有以下程序 #include int fun(int a, int b) if(b=0) return a; else return(fun(-a, -b); main() Printf(“ d n“, fun(4, 2); 程序的运行结果是 ( A) 1 ( B) 2 ( C) 3 ( D) 4 10 下列选项中,能够满足 “只要字符串 s1等于字符串 s2,则执行 ST”要求的是 ( A) if(s1=s2)ST; ( B) if(strcpy(s1, s2)=1)ST; ( C) if(strcmp(s2, s 1)=0)ST; ( D) if(s1-s2=0)ST; 11 以下叙述中

7、正确的是 ( A)函数名代表该函数的入口地址 ( B)所有函数均不能接受函数名作为实参传入 ( C)函数体中的语句不能出现对自己的调用 ( D)如果函数带有参数,就不能调用自己 12 以下叙述中正确的是 ( A)函数既可以直接调用自己,也可以间接调用自己 ( B)任何情况下都不能用函数名作为实参 ( C)函数的递归调用不需要额外开销,所以效率很高 ( D)简单递归不需要明确的结束递归的条件 13 以下关于 retum语句的叙述中正确的是 ( A)一个自定义函数中必须有一条 return语句 ( B)一个自定义函数中可以根据不同情况设置多条 return语句 ( C)定义成 void类型的函数中

8、可以有带返回值的 return语句 ( D)没有 return语句的自定义函数在执行结束时不能返回到调用处 14 已定义以下函数 int fun(int*p)return *p; fun函数返回值是 ( A)不确定的值 ( B)一个整数 ( C)形参 p中存放的值 ( D)形参 p的地址值 15 以下叙述中错 误的是 ( A)用户定义的函数中可以没有 return语句 ( B)用户定义的函数中若没有 return语句,则应当定义函数为 void类型 ( C)用户定义的函数中可以有多个 retum语句,以便可以调用一次返回多个函数值 ( D)函数的 retum语句中可以没有表达式 16 以下叙述

9、中错误的是 ( A)函数调用可以作为一个独立的语句存在 ( B)函数形参的值也可以传回给对应的实参 ( C)若函数有返回值,必须通过 return语句返回 ( D) C程序必须由一个或一个以上的函数组成 17 有以下程序 int add (int a, int b) return (a+b); main( ) int k, (*f)( ), a=5, b=10; f=add; 则以下函数调用语句错误的是 ( A) k=add(a, b); ( B) k=(*D(a, b); ( C) k=*f(a, b); ( D) k=f(ab); 18 以下叙述中正确的是 ( A)函数调用时,不必区分函数

10、名称的大小写 ( B)调用函数时,函数名必须与被调用的函数名完全一 致 ( C)函数名允许用数字开头 ( D)在函数体中只能出现一次 return语句 19 若有以下函数首部 int fun(double x10, int*n)则下面针对此函数的函数声明语句中正确的是 ( A) int fun(double, int); ( B) int fun(double*x, int n); ( C) int fun(double*, int*); ( D) int fun(double x, int*n); 20 以下选项中叙述错误的是 ( A)在 C程序的同一函数中,各复合语句内可以定义变量 ,其作

11、用域仅限本复合语句内 ( B) C程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值 ( C) C程序函数中定义的自动变量,系统不自动赋确定的初值 ( D) C程序函数的形参不可以说明为 static型变量 21 有以下程序 int f(int x); main() int n=1, m; m=f(f(f(n); printf(“ d n“, m); int f(int x) return x*2 ; 程序运行 后的输出结果是 ( A) 1 ( B) 2 ( C) 4 ( D) 8 22 有以下程序 #include int fun(int x, int y) if(x=y)ret

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

13、 有以下程序 #include double f(double x); main() double a=0 ; int i; for(i=0; i int f(int x); main() int a, b=0; for(a=0; a=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- 国家二级 C语言(函数和数组)机试

14、模拟试卷 10答案与解析 一、选择题 1 【正确答案】 B 【试题解析】 程序执行 strcpy(a+1, b+2)后,字符数组 a的值为 “a2”,冉进行字符串的连接 strcat(a, c+1),此时字符数组 a的值为 “a2yz”。 【知识模块】 函数和数组 2 【正确答案】 A 【试题解析】 C语言规定,函数必须先定义,后调用 (雨数的返回值类型为 int或char时除外 )。在选项 A)中,调 用的子函数在调用后面定义,所以不正确。在选项B)、 C)中,被调用函数在主函数之前定义,再在主函数中调用,所以是正确的;在选项 D)中,存主函数中先对子函数 float fun(int i,

15、intj)进行了声明,然后进行调用。 【知识模块】 函数和数组 3 【正确答案】 D 【试题解析】 一个 C语言源程序可以由一个或多个源文件组成,每个源文件可由一个或多个函数组成,这些函数可以是自定义函数,也可以是库函数,各个函数之间没有主从关系,不能嵌套定义函数。 【知识模块】 函数和数组 4 【正确 答案】 B 【试题解析】 字符串长度函数 strlen(s)表示计算出以 s为起始地址的字符串的长度,并作为函数值返回。这个长度值不包括串尾的结束标志 0。 【知识模块】 函数和数组 5 【正确答案】 C 【试题解析】 字符串连接函数 strcat(p, r)的功能是把字符数组 p和 r连接起

16、来,此时字符数组 p的有效字符长度为 9。再执行 strcpy(p+strlen(q), q)字符串复制函数,把字符数组 q复制到字符数组 p从 p3开始到 p5数组位置中,由于字符数组 q中的内容为字符串 “abc”复制时把字符串结束标志 null也复制到字符数组 p中,这时字符函数 strlen(p)返回字符数组 p的有效字符长度为 6。 【知识模块】 函数和数组 6 【正确答案】 A 【试题解析】 字符串比较函数 strcmp的功能是对 s1和 s2所指字符串进行比较。如果 s1s2,返回正数,所以对于本题米说,能够输出 “OK”的语句是选项 A)所指的语句。 【知识模块】 函数和数组

17、7 【正确答案】 D 【试 题解析】 函数 fun(chai*p)的功能是如果 pi指向的字符为空字符并且其前一个字符是小写字母,则把小写字母变成大字母,所以在主函数中,执行 fun(s1)后,小写字母 b, d都改成大字母。 【知识模块】 函数和数组 8 【正确答案】 C 【试题解析】 本题要注意的是转文字符的问题,在字符串 s2中,有两个转义字符,分别是回车换行符和反斜线。所以其字符串长度等于 5。 【知识模块】 函数和数组 9 【正确答案】 B 【试题解析】 由程序可知函数 fun(int a, int b)是 一个递归函数。所以当 t函数中调用 fun(4, 2)时,其执行过程如下:

18、fun(4, 2)- fun(3, 1)-fun(2, 0),其返回值为 2。 【知识模块】 函数和数组 10 【正确答案】 C 【试题解析】 在 C语言中要对两个字符串的大小进行比较,就需要调用字符串比较函数 stremp(),如果这个函数的返回值等于 0,说明两个字符串相等。 【知识模块】 函数和数组 11 【正确答案】 A 【试题解析】 函数形、实参传递的时候,要求对应位置类型一致即可,如果实参为函数名,可以定义 相心的形参为指向函数的指针变量来获得该函数的入口地址,囚此选项 B)错误的,在 C语言中允许进行递归调用,即自己调用自己,选项C)和选项 D)是错误的。 【知识模块】 函数和数

19、组 12 【正确答案】 A 【试题解析】 一个 C语言源程序可以由一个或多个源文件组成,每个源文件可由一个或多个函数组成,各函数之间是平行的,除了主函数外,函数之间可以相互调用,甚至 C语言中的函数可以直接或间接地自己调用自己,称之为递归调用,该调用主要用于把要解决的问题转化为一个新的问题,而这个新问题的解决方法仍与原来的解法相 同,只是所处理的对象有规律地递增或递减,可以应用这个转化过程使问题得到解决,同时为了有效使用递归调用必定要有一个明确的结束递归的条件。而每次进行递归调用时候,需要利用栈保存现场信息,因此并不会提高效率,选项 C)和选项 D)不正确。函数名表名了函数的入口地址,如果函数

20、的形参为指向函数的指针变量,那么对应的实参必须为函数名,因此函数名可以为函数的参数,选项 B)错误。 【知识模块】 函数和数组 13 【正确答案】 B 【试题解析】 return语句主要用于返回函数的值。在一个自定义函数中,可以根据不 同的情况设置多条 return语句返回函数的值。 【知识模块】 函数和数组 14 【正确答案】 B 【试题解析】 由函数 int fun(int*p)retum*p; 的定义可知,返回值为整型指针变量 p所指向的数据。 【知识模块】 函数和数组 15 【正确答案】 C 【试题解析】 函数值通过 return语句返回, return语句的形式如下: return表

21、达式或 return(表达式 );当程序执行到 return语句时,程序的流程就返回到调用该函数的地方,并带回函数值。在同一函数内, 可以根据需要,在多处出现return语句,在函数体的不同部位退出函数。无论函数体中有多少个 retum语句, retum语句只可能执行一次,返回一个函数值。 retum语句中也可以不含有表达式,这时必须定义函数为 void类型,它的作用只是使流程返回到调用函数,并没有确定的函数值。函数体内可以没有 return语句,这时也必须定义函数为 void类型,程序的流程就一直执行到函数末尾的 “”,然后返回调用函数,也没有确定的函数值带回。 【知识模块】 函数和数组 1

22、6 【正确答案】 B 【试题解析】 一个 C程序中可以包含任意多个不同名的函数,但只能有一个主函数。一个 C程序总是从主函数开始执行。函数的值通过 retum语句返回,return语句中的表达式的值就是所求的函数值。在 C语言中,数据只能从实参单向传递给形参,称为 “按值 ”传递。也即是说,当简单变量作为实参时,用户不可能在函数中改变对应实参的值。 【知识模块】 函数和数组 17 【正确答案】 C 【试题解析】 在语句 “k=*f(a, b)”中,由于 “()”的优先级高于 “*”,所以 “*f(a,b); ”表示其返回类型为指针的带有两个整型参数的函数, 而不是整型数值,因此选项 C)为错误

23、的调用形式。 【知识模块】 函数和数组 18 【正确答案】 B 【试题解析】 在标准 C中,函数的定义形式为: 函数返回值的类型名 函数名 (类型名形式参数 1,类型名形式参数 2, ) 说明部分 语句部分 需要说明的是函数名和形式参数都是由用户命名的标识符,在同一程序中,函数名必须惟一,形式参数名只要在同一函数中惟一即可,与其他函数中的变量可以同名。 return语句的作用是返回函数的值,在函数中可以出现多个或者没 有。 【知识模块】 函数和数组 19 【正确答案】 C 【试题解析】 函数说明的一般形式为:类型名函数名 (参数类型 1,参数类型2, ) 。因为函数 int fun(doubl

24、e x10, int*n)的第 1个形式参数是一个双精度型的一维数组,第 2个参数是一个整型指针,并返回一个整型值。一维数组的名字表示的是一维数组的地址。 【知识模块】 函数和数组 20 【正确答案】 B 【试题解析】 在函数定义的静态变量,只需要赋值 1次,即可保存初始值,不需要每次调用时郜赋初始值。 【知识模块】 函数和数组 21 【正确答案】 D 【试题解析】 程序考查了函数的调用。对于 m=fi(f(f(n);首先计算最内层的函数调用 f(n),执行 f函数,得到返回值 2,然后计算 f(2),得到返回值为 4,最后计算 f(4),得到计算结果为 8。 【知识模块】 函数和数组 22

25、【正确答案】 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。 【知识模块 】 函数和数组 23 【正确答案】 C 【试题解析】 本题考查函数的嵌套调用。首先计算 f(a, b)与 f(a, c), f(a,b)=(b-a)*a=3, f(a, c)=(ca)*a=6,然后计算 f(3, 6)=(6 3)*3=9。 【知识模块】 函数和数组 24 【正确答案】 C 【试题解析】 由于函数 f的作用是对形参 x求平方再加 1,所以在主函数中,循环第一次执

26、行后变量 a的值等于 1,第二次执行后,变量 a的值等于 102,第三次执行后,变量 a的值等于 503。 【知识模块】 函数和数组 25 【正确答案】 B 【试题解析】 在 C语言中,函数的实参单元与形参单元在内存中分配不同的存储单元。在调用函数时,给形参分配临时存储单元,并将实参对应的值传递给形参,在被调用函数中对形参存储单元中的值进行运算,最后通过 return语句把函数值返回调用函数。当调用结束后,形参单元被释放,实参单元仍保留并维持原值。 【知识模块】 函数和数组 26 【正确答案】 C 【试题解析】 函数 fun中采用了变量作为参数,那么参数传递以后,形参 a,b, c的变化对于实参 a, b, c是没有影响的,因此 主函数中 a, b, c的值经过 fun调用以后,值没有变化。 【知识模块】 函数和数组 27 【正确答案】 B 【试题解析】 在函数 main()中,第一次执行 for循环时, b的值等于 1,此时输出字母 B;第二次执行 for循环时, b的值等于 3,此时输出字母 D:第三次执行for循环时, b的值等于 8,此时输出字母 I。 【知识模块】 函数和数组 28 【正确答案】 A 【试题解析】 函数 f的主要功能为逆置输出整数 x的每一位数据,如果 z的值为123456,逆置输出的结果为 6-5-4-3-2-1。 【知识模块】 函数和数组

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