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

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

1、国家二级 C语言(函数和数组)机试模拟试卷 2及答案与解析 一、选择题 1 有以下程序 #include int fun(int x) int p; if(x=0 x=1)return(3); P=x-fun(x-2); return(p); main() printf(“ d 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(“ d n“, fun(5

2、); 程序的输出结果是 ( A) 14 ( B) 10 ( C) 15 ( D) 9 3 有以下程序 #include im 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(int P) 5 设有如下函数定

3、义 int fun(int k) if(k int flint x) int y; ifx=0x=1)retulm(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函数用以连接两个字符串 ) #include #include main() char a20=“ABCD 0EFG 0“, b=“IJK“; strcat(a, b); printf(“ s n“, a); 程序运行后的输出结果是 ( A)

4、 ABCDE OFG OIJK ( 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=x-fun(x-2); retur

5、n p; main() printf(“ d n“, fin(7); 执行后的输出结果是 ( A) 3 ( B) 7 ( C) 0 ( D) 2 10 若有以下程序 int f(int a, int n) if(n1) 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(“ dEn“, f(a, 9); 则程序的输出结果是 ( A) 9 ( B) 1 ( C) 8 ( D) 5 11 以下叙述中正确的是 ( A)只有全局变量才有自己的作用

6、域,函数中的局部变量没有作用域 ( 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: fun(a); d+=a+: printf(

7、“ d n“, d); 程序的输出结果是 ( A) 9 6 ( B) 9 4 ( C) 8 4 ( D) 8 5 14 有以下程序 #include int a=1, b=2; void funl(int a, int b) printf(“ d d“, a, b); void fun2() a=3; b=4; main() funl(5, 6); fun20; printf(” d dkn“,a, b); 程序运行后的输出结果是 ( A) 3 4 5 6 ( B) 1 2 5 6 ( C) 5 6 1 2 ( D) 5 6 3 4 15 在一个 C源程序文件中所定义的全局变量,其作用域为 (

8、 A)由具体定义位置和 extern说明来 决定范围 ( B)所在程序的全部范围 ( C)所在函数的全部范围 ( D)所在文件的全部范围 16 有以下程序 void fun2(char a, char b) printf(“ c c“, a, b); char a=A, b=B; void funl() a:一 C; b=D; main() funl(); 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 17 有以下程序 #include fun(int

9、 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(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; printf(“ dt“, num); void main() func(3

10、); 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() intj=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 ( C) 11, 11 ( D) 11, 5 20 在 C语言中,只有

11、在使用时才占用内存单元的变量,其存储类型是 ( A) extern和 register ( B) auto和 static ( C) static和 register ( D) auto和 register 21 有以下程序 #include int fun() static int x=l; x*=2; return x; main() int i, s=l; for(i=1; i int flint n); main() int a=3, s; s=f(a); s=s+fla); printf(“ d n“, s); int flint n) static int a=1; n+=a+;

12、return n; ) 程序运行后的输出结果是 ( A) 9 ( B) 8 ( C) 7 ( D) 10 23 有以下程序 #include int fun() static int x=1; x+=1; return x; main() int i,s=1; for(i=1; i int fun() static int 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以及 static。 【知识模块】 函数和数组 12 【正确答案】 C 【试题解 析】 用 static说明符说明全局变量时,此变量可称作静态全局变量。静态全局变量只限于本编译单位使用,不能被其他编译单位所引用。在个函数内部定义的变量 (包括形参 )是局部变量,它只在本函数范围内有效。不同函数中可以使用相同名字的局部变量,它们代表不

14、同的对象,互不影响。 在函数内部复合语句中也可以定义变量,这些变量都是局部变量只在本复合语句中有效。 【知识模块】 函数和数组 13 【正确答案】 C 【试题解析】 代码考查点为全局变量和局部变量的同名问题,若全局变量和某个函数中的局部变量 同名,则在该函数中,此全局变量被屏蔽,在该函数内,访问的是局部变量,与同名的全局变量不发生任何关系。主函数执行 fun(3)时候,执行调用函数 fun,使用局部变量 d=5,执行 d+=p+,相当于 d=d+(p+),得到 d的值为 8,输出。函数调用结束,转到主函数,继续执行 d+=a+,此时 d为全局变量,执行语句以后, d值为 4。 【知识模块】 函

15、数和数组 14 【正确答案】 D 【试题解析】 函数 fun1()的作用是输出局部变量 a和 b的值,在主函数中执行fun1(5, 6)的结果是输出 5, 6:函数 fun2()的作用是给变量 a和 b分别赋值 3,4;执行。 fun2()的作用是输出 3,4。 【知识模块】 函数和数组 15 【正确答案】 A 【试题解析】 全局变量是在函数外部任意位置上定义的变量,它的作用域是从变量定义的位置开始,到整个源文件结束止。在同一编译单位内用 extern说明符扩展全局变量的作用域 (当全局变量定义在后,引用它的函数在前时,应该在引用它的函数中用 extern对此全局变量进行说明,以便通知编译程序

16、:该变量是一个已在外部定义了的全局变量,已经分配了存储单元,不需要再为它分配存储 单元。这时全局变量的作用域从 extern说明处起,延伸到该函数末尾 )。当一个程序由多个编译单位构成,并且在每个文件中均需要引用同一个全局变量,这时只在其中一个文件中定义所有的全局变量,而在其他用到这些全局变量的文件中用 extern对这些变量进行说明。 【知识模块】 函数和数组 16 【正确答案】 B 【试题解析】 在 fun()函数之前定义了全局字符变量 a和 b。这两个变量的作用域是从其定义处到整个程序结束。在 fun1()函数之内定义了两个变量 a和 b,并且分别初始化为字符 C和 D。在 C语言 中,

17、若全局变量和某个函数中的局部变量同名,则在该函数中此全局变量被屏蔽,在该函数内访问的是局部变量,与同名的全局变量不发生任何关系。所以在主函数中,执行 fun1()后,变量 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,变量

18、a,b撤销。第二次调用 fun(4, 1),接收实参值以后, i为 3+8+1,而 m为 12+4+1,即输出函数值 17。 【知识模块】 函数和数组 18 【正确答案】 C 【试题解析】 在函数 func(int n)中定义了局部静态变量 num,其初始值等于 1,所以在主函数中执行 func(3),输出 4,此时静态变量 num的值等于 4,当退出函数 func(3)时,其值不会丢失,所以当在执行 func(4)时,输出 8。 【知识模块 】 函数和数组 19 【正确答案】 B 【试题解析】 子函数 fun(intx, inty),将变量 m和 i声明为局部静态变量,因此第 1次调用主函数

19、后,局部静态变量 m和 i的值为 5和 3,第 1次函数调用结束时,它们的值不释放保持不变,所以第 2次调用时,局部静态变量 m和 i的初始值分别为 5和 3,即在执行 “i+=m+1”时, i的值为 9,因此最终 m的值为 11。 【知识模块】 函数和数组 20 【正确答案】 D 【试题解析】 在 C语言中,动态变量 (auto)存储在内存中的动态存储区,在程序运行中,只有 当调用变量所在的函数时,系统才临时给变量分配内存单元;全局变量 (extem)一经定义,系统为其分配固定的内存单元;静态变量 (static),编译系统为其分配固定的存储空间;寄存器变量 (register)不保存在内存

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

21、 5,最后变量 s的值等于 9。 【知识模块】 函数和数组 23 【正确答案】 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。 【知识模块】 函数和数组 24 【正确答案】 C 【试题解析】 在函数 int fun(int x, int n)的

22、定义中,变量 sum使用了 static修饰符,这说明了变量 sum为一个静态局部变量。由于在整个程序运行期间,静态局部变量在内存中的静态存储区中占据着永久 的存储单元。即使退出函数之后,下次再进入该函数时静态局部变量继续使用原来存储单元中原来的值。函数intfun(intx, 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。 【知识模块】 函数和数组 25 【正确答案】 B 【试题解析】 由于在函数 f中,变

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

24、量 a=4。在 int f(int n)函数中定义了局部静态整型变量并进行了初始化即 static int a=5。在 int 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+; 和return t+a+;这两条语句,这时 t=6, a=6(静态

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

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

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

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