欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:498975       资源大小:65.50KB        全文页数:23页
    • 资源格式: DOC        下载积分:2000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要2000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    1、国家二级 C语言(函数和数组)机试模拟试卷 11及答案与解析 一、选择题 1 有以下程序 #include int fun(int x) int p; if(x=0 x=1)return(3); p=x-fun(x-2); return(p); ) main() printf(“96d n“, fun(9); 程序运行后的输出结果是 ( A) 5 ( B) 9 ( C) 4 ( D) 7 2 有以下 程序 #include int fun(int n) int a; if(n=1)return 1 ; a=n+fun(n-1); return (a); ) main() ( printf(“

    2、d n“, fun(5); 程序的输出结果是 ( A) 14 ( B) 10 ( C) 15 ( D) 9 3 有以下程序 #include int fun( int a, int b) return a+b; ) main() int x=6, y=7, z=8, r ; r=fun(fun(x, y), z-); printf(“ d n“, r); 程序运行后的输出结果是 ( A) 15 ( B) 21 ( C) 20 ( D) 31 4 以下选项中函数形参不是指针的是 ( A) fun(int&p) ( B) fun(int a10) ( C) fun(int*a) ( D) fun(

    3、int p) 5 设有如下函数定义 int fun(int k) if(k int f(int x) int y; if(x=0 x=1)return (3); y=x*x-f(x-2); return y; main() int z; z=f(3); printf(“ d n“, z); 程序的运行结果是 ( A) 9 ( B) 0 ( C) 6 ( D) 8 7 有以下程序 (strcat函数用以连接两个字符串 ) #inolude #include main() char a20=“ABCD 0EFG 0“, b=“TJK“; streat(a, b); printf(“ s n“, a

    4、); 程序运行后的输出结果是 ( A) ABCDE 0FG 0IJK ( B) ABCDIJK ( C) IJK ( D) EFGIJK 8 有以下程序 int fun(int n) if(n=1)return 1; else return(n+fun(n-1); main() int x; scanf(“ d“, &x); x=fun(x); printf(“ d n“, x); 执行程序时,给变量 X输入 10,程序的输出结果是 ( A) 54 ( B) 65 ( C) 45 ( D) 55 9 有以下程序 fun(int x) int p; if(x=0 x=1)return(3); p

    5、=x-fun(x-2); return p; main() printf(“ d n“, fun(7); 执行后的输出结果是 ( A) 3 ( B) 7 ( C) 0 ( D) 2 10 若有以下程序 int f(int a, int n) if (n 1) int t; t=f(a, n-1); return tan-1?t: an-1; else return a0; main() int a=8, 2, 9, 1, 3, 6, 4, 7, 5; printf(“ d n“, f(a, 9); 则程序的输出结果是 ( A) 9 ( B) 1 ( C) 8 ( D) 5 11 以下叙述中正确

    6、的是 ( A)只有全局变量才有自己的作用域,函数中的局部变量没有作用域 ( B)只要是用户定义的标识符,都有一个有效的作用域 ( C)只有在函数内部定义的变量才是局部变量 ( D)局部变量不能被说明为 static 12 以下叙述中正确的是 ( A)对于变量而言, “定义 ”和 “说明 ”这两个词实际上是同一个意思 ( B)在复合语句中不能定义变量 ( C)全局变量的存储类别可以是静态类 ( D)函数的形式参数不属于局部变量 13 有以下程序 int d=1; void fun(int p) int d=5; d+=p+; printf(“ d“, d); main() int a=3; fu

    7、n(a); d+=a+; printf(“ d n“, d); 程序的输出结果是 ( A) 9 6 ( B) 9 4 ( C) 8 4 ( D) 8 5 14 有以下程序 #inolude int a=1, b=2; void fun1(int a, int b) printf(“ d d“, a, b); void fun2() a=3; b=4; ) main() fun1(5, 6); fun2(); printf(“ d d n“, a, b); 程序运行后的输出结果是 ( A) 3 4 5 6 ( B) 1 2 5 6 ( C) 5 6 1 2 ( D) 5 6 3 4 15 在一个

    8、 C源程序文件中所定义的全局变量,其作用域为 ( A)由具体定义位置和 extern说明来决定范围 ( B)所在程序的全部范围 ( C)所在函数的全部范围 ( D)所在文件的全部范围 16 有以下程序 void fun2(char a, char b) printf(“ c c“, a, b); char a=A, b=B; void fun1() a=C; b=D; ) main( ) fun1(); printf(“ c c“, a, b); fun2(E, F); 程序的运行结果是 ( A) A B E F ( B) C D E F ( C) A B C D ( D) C D A B 1

    9、7 有以下程序 #include fun(int a, int b) int stati c m=0, i=2; i=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(“ d n“, p); 程序运行后的输出结果是 ( A) 8, 17 ( B) 7, 16 ( C) 8, 8 ( D) 7, 17 18 有以下程序 #include func(int n) static int num=1; num=num+n; print; f

    10、(“ d“, num); void main() func(3); func(4); printf(“ n“); ) 程序运行后的输出是 ( A) 4 5 ( B) 3 5 ( C) 4 8 ( D) 3 4 19 有以下程序 fun(int x, int y) static int m=0, i=2; i+ =m+1; m=i+x+y; return m; main() int j=1, m=1, k; k=fun(j, m); printf(“ d, “, k); k=fun(j, m); printf(“ d n“, k); 执行后的输出结果是 ( A) 5, 5 ( B) 5, 11

    11、( C) 11, 11 ( D) 11, 5 20 有以下程序 #include int fun() static int x=1; x*=2; return x; main() int i, s=1; for(i=1; i int f(int n); main() int a=3, s; s=f(a); s=s+f(a); printf(“ d n“, s); ) int f(int n) static int a=1 ; n+=a+; return n; 程序运行后的输出结果是 ( A) 9 ( B) 8 ( C) 7 ( D) 10 22 有以下程序 #include int fun()

    12、 static int x=1; x+=1; return x; main() int i, s=1; for(i=1; i int fun() staticnt x=1 ; x*=2; return x; main() int i, s=1; for(i=1; ia1,返回 88a2 不成立,返回 a2的值为 9 因此函数 f的主要功能为计算数组中的最大值。主函数中输出最大值为 9。 【知识模块】 函数和数组 11 【正确答案】 B 【试题解析】 存函数内定义的变量是局部变量,而在函数之外定义的变量称为外部变量,也是全局变量。全局变量可以为源文件中其他函数所共用,其作用域为从定义变量的位置开

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

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

    15、;函数 fun2()的作用是给变最 a和 b分别赋值 3,4;执行 fun2()的作用是输出 3, 4。 【知识模块】 函数和数组 15 【正确答案】 A 【试题解析】 全局变量是在函数外部任意位置上定义的变量,它的作用域是从变量定义的位置开始,到整个源文件结束止。在同一编译单位内用 extern说明符扩展全局变量的作用域 (当全局变量定义在后,引用它的函数在前时,应该在引用它的函数中用 extern对此全局变量进行说明,以便通知编译程序:该变量是一个已在外部定义了的全局变量,已经分配了存储单元,不需要再为它分配存储单元。这时全局变量的作用域从 extern说明处起,延伸到该函数末尾 )。当一

    16、个程序由多个编译单位构成,并且在每个文件中均需要引用同一个全局变量,这时只在其中一个文件中定义所有的全局变量,而在其他用到这些全局变量的文件中用 extern对这些变量进行说明。 【知识模块】 函数和数组 16 【正确答案】 B 【试题解析】 在 fun1()函数之前定义了全局字符变量 a和 b。这两 个变量的作用域是从其定义处到整个程序结束。在 fun1()函数之内定义了两个变量 a和 b,并且分别初始化为字符 C和 D。在 C语言中,若全局变量和某个函数中的局部变量同名,则在该函数中此全局变量被屏蔽,在该函数内访问的是局部变量,与同名的全局变量不发生任何关系。所以在主函数中,执行 fun1

    17、()后,变量 a、 b的值分别等于 C、 D,打印输出 CD,接着执行 fun2(E, F)语句,变量 a、 b的值变为E、 F并输出。 【知识模块】 函数和数组 17 【正确答案】 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。 【知识模块】 函数和数组 18

    18、 【正确答案】 C 【试题解析】 在函数 func(int n)中定义了局部静态变量 num,其初始值等于1,所以在主函数中执行 func(3),输出 4,此时静态变量 num的值等于 4,当退出函数 func(3)时,其值不会丢失,所以当在执行 func(4)时,输出 8。 【知识模块】 函数和数组 19 【正确答案】 B 【试题解析】 子函数 fun(int x, inty),将变量 m和 i声明为局部静态变量,因此第 1次调用主函数后,局部静态变量 m和 i的值为 5和 3,第 1次函数调用结束时,它们的值不释放保持不变,所以第 2次调用时,局部静态变量 m和 i的初始值分别为 5和 3

    19、,即在执行 “i+=m+1”时, i的值为 9,因此最终 m的值为 l。 【知识模块】 函数 和数组 20 【正确答案】 D 【试题解析】 本题考查了静态局部变量,该局部变量的值在函数调用结束后如果不消失而保留原值。函数 fun的功能返回 2的乘方,主函数 fun函数调用 3次,因此第一次 s累乘 2,第二次累乘 4,第三次累乘 8,即为 2*4*8,值为 64。 【知识模块】 函数和数组 21 【正确答案】 A 【试题解析】 在主函数中第一次调用 f(a)时,得到变量 s的值等于 4,在第二次调用 f(a)时,在子函数 f中由于变量 a是一个局部静态变量,所以这次其值等于2,因而在主函数中第

    20、二次调用 f(a)后,其返回值等于 5,最后变量 s的值等于 9。 【知识模块】 函数和数组 22 【正确答案】 B 【试题解析】 这道试题主要考查了局部静态变量的应用。在函数 fun()中定义了局部静态变量整型 x,其初值等于 1,在主函数中循环执行 5次,第一次变量 s的值等于 3,变量 x的值等于 2,第二次变量 s的值等于 6,变量 x的值等于 3,第三次变量 s的值等于 10,变量 x的值等于 4,第四次变量 s的值等于 15,变量 x的值等于 5,第五次变量 s的值等于 21,变量 x的值等于 6。 【知识模块】 函数和数组 23 【正 确答案】 C 【试题解析】 在函数 int

    21、fun(intx, int n)的定义中,变量 sum使用了 static修饰符,这说明了变量 sum为一个静态局部变量。由于在整个程序运行期间,静态局部变量在内存中的静态存储区中占据着永久的存储单元。即使退出函数之后,下次再进入该函数时,静态局部变量继续使用原来存储单元中原来的值。函数 int fun(int x, int n)的功能是求出数组 x各个元素的和。所以在主函数中,调用函数 Fun(a, 5)后,变量 sum=1+2+3+4+5=15,当再次调用 Fun(b, 4)后,变量 sum=15+6+7+8+9=45, 所以 s=15+45=60。 【知识模块】 函数和数组 24 【正确

    22、答案】 B 【试题解析】 由于在函数 f中,变量 n为静态局部变量,所以在主函数中第一次调用函数 f后,变量 n的值等于 1,当第二调用函数 f时,在函数 f的内部静态局部变量 n的值仍然保留等于 1,所以返回函数值等于 2。 【知识模块】 函数和数组 25 【正确答案】 A 【试题解析】 在子函数 fun()中定义局部静态变量 x,其初值等于 1,然后再把其值扩大 1倍后返回。 在主函数中执行 for循环语句 2次,调用函数 fun()两次,所以变量 s的值等于 4。这里要强调的一点是当函数 fun()执行完毕后,局部静态变量 x的值不会丢失,仍然有效。 【知识模块】 函数和数组 26 【正

    23、确答案】 A 【试题解析】 程序中定义了全局整型,变量 a=4。在 int f(int n)函数中定义了局部静态整型变量并进行了初始化即 static int a=5。在 inl f(int n)函数中对 n是否是偶数进行判断,如果 n是奇数,则函数的返同值为 11,局部静念整型变量 a=6;如果 n是偶数,则 函数的返回值为 12,局部静态整型变量 a=6。所以在 main()函数中循环首先执行 s+=f(0)语句,而 f(0)返回值 12,所以第一次循环结束 s的值等于 4+12=16;第二次开始执行 f(1)时,在 f(1)中执行 if(n 2)int a=6; t+=a+; 和retu

    24、rn t+a+;这两条语句,这时 t=6, a=6(静态局部变量第一次循环后其值加 1值不释放,执行第二次循环量,其值仍有效 ),所以 f(1)的返回值等于 12。再在主函数中执行 s+=f(1)语句,即 16+12=28。 【知识模块】 函数和数组 27 【正确答案】 B 【试题解析】 函数 fun(int a, intn)的功能是实现整型数组 a元素的逆置操作。在主函数中当执行 fun(k, 5)时,对 k10中的了数组 k5=1, 2, 3, 4, 5的首尾元素进行逆置,此时 k10=5, 4, 3, 2, 1, 6, 7, 8, 9, 10。所在循环语句中输出从第 2 7个数组元素时,其值分别为 321678。 【知识模块】 函数和数组 28 【正确答案】 B 【试题解析】 数组说明的一般形式为:类型说明符数组名 常量表达式 ;其中类型说 明符可以是任一种基本数据类型或构造数据类型,数组名是定义的数组标识符。常量表达式表示数据元素的个数,也就是数组的长度,必须是整型常量。 【知识模块】 函数和数组


    注意事项

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

    收起
    展开