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

上传人:syndromehi216 文档编号:498975 上传时间:2018-11-30 格式:DOC 页数:23 大小:65.50KB
下载 相关 举报
[计算机类试卷]国家二级C语言(函数和数组)机试模拟试卷11及答案与解析.doc_第1页
第1页 / 共23页
[计算机类试卷]国家二级C语言(函数和数组)机试模拟试卷11及答案与解析.doc_第2页
第2页 / 共23页
[计算机类试卷]国家二级C语言(函数和数组)机试模拟试卷11及答案与解析.doc_第3页
第3页 / 共23页
[计算机类试卷]国家二级C语言(函数和数组)机试模拟试卷11及答案与解析.doc_第4页
第4页 / 共23页
[计算机类试卷]国家二级C语言(函数和数组)机试模拟试卷11及答案与解析.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

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 【试题解析】 数组说明的一般形式为:类型说明符数组名 常量表达式 ;其中类型说 明符可以是任一种基本数据类型或构造数据类型,数组名是定义的数组标识符。常量表达式表示数据元素的个数,也就是数组的长度,必须是整型常量。 【知识模块】 函数和数组

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

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