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

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

1、国家二级( C语言)机试模拟试卷 114及答案与解析 一、选择题 1 设栈的顺序存储空间为 S(0: 49),栈底指针 bottom=49,栈顶指针 top=30(指向栈顶元素 )。则栈中的元素个数为 ( )。 ( A) 30 ( B) 29 ( C) 20 ( D) 19 2 设数据元素的集合 D=1, 2, 3, 4, 5,则满足下列关系 R的数据结构中为线性结构的是 ( )。 ( A) R=(1, 2), (3, 4), (5, 1) ( B) R=(1, 3), (4, 1), (3, 2), (5, 4) ( C) R=(1, 2), (2, 3), (4, 5) ( D) R=(1

2、, 3), (2, 4), (3, 5) 3 下列叙述中错误的是 ( )。 ( A)在带链队列中,队头指针和队尾指针都是在动态变化的 ( B)在带链栈中,栈顶指针和栈底指针都是在动态变化的 ( C)在带链栈中,栈顶指针是在动态变化的,但栈底指针是不变的 ( D)在带链队列中,队头指针和队尾指针可以指向同一个位置 4 深度为 7的完全二叉树中共有 125个结点,则该完全二叉树中的叶子结点数为( )。 ( A) 62 ( B) 63 ( C) 64 ( D) 65 5 计算机软件的构成是 ( )。 ( A)源代码 ( B)程序和数据 ( C)程序和文档 ( D)程序、数据及相关文档 6 软件设计中

3、模块划分应遵循的准则是 ( )。 ( A)低耦合低内聚 ( B)高耦合高内聚 ( C)低耦合高内聚 ( D)内聚与耦合无关 7 使用白盒测试方法时,设计测试用例应根据 ( )。 ( A)程序的内部逻辑 ( B)程序的复杂结构 ( C)程序的功能 ( D)使用说明书 8 逻辑模型是面向数据库系统的模型,下面属于逻辑模型的是 ( )。 ( A)关系 模型 ( B)谓词模型 ( C)物理模型 ( D)实体 -联系模型 9 设有关系表学生表 S(学号,姓名,性别,年龄,身份证号 ),每个学生学号惟一。除属性学号外,也可以作为键的是 ( )。 ( A)姓名 ( B)身份证号 ( C)姓名,性别,年龄 (

4、 D)学号,姓名 10 有三个关系表 R、 S和 T如下,其中三个关系对应的关键字分别为 A, B N复合关键字 (A, B)。 表 T的记录项(b, q, 4)违反了 ( )。 ( A)实体完整性约束 ( B)参照完整性约束 ( C)用户定义的完整性约束 ( D)关系完整性约 束 11 以下选项中叙述正确的是 ( )。 ( A) C程序中的语句要经过编译才能转换成二进制机器指令 ( B)算法需要包含所有三种基本结构 ( C)有些算法不能用三种基本结构来表达 ( D)简单算法的操作步骤不能超过 20步 12 以下叙述错误的是 ( )。 ( A)在进行模块化程序设计的时候,应首先完成每个模块的编

5、写调试,再集中考虑主程序中的算法 ( B)同一程序各模块可由一组人员同时进行编写调试,可提高编写程序的效率 ( C)模块化的程序设计是采用自顶向下、逐步细化的原则 ( D)程序的每 个模块都可通过三种基本结构实现 13 以下选项中,合法的实数是 ( )。 ( A) 1 5E2 ( B) E1 1 ( C) 2 10E ( D) 1 9E1 4 14 以下叙述正确的是 ( )。 ( A) C程序总是以 main()作为程序执行的起始行 ( B) main()函数若不带参数,其后面的一对圆括号可省略 ( C)函数体内的定义语句和可执行语句允许任意穿插出现 ( D) C语言中的语句之间必须用分号作为

6、分隔符 15 设有以下程序段: int y; y=rand() 30+1; 则变量 y的取值范围是 ( )。 ( A) 0y30 ( B) 0 y30 ( C) 1 y 30 ( D) 1 y30 16 若变量已正确定义,则以下 for循环 ( ): for(x=0, y=0; (y! =123)&(x 4); x+); ( A)执行 4次 ( B)执行 3次 ( C)执行次数不确定 ( D)执行 123次 17 有以下程序: #include main() int x=0x13: printf(“INT: d n“, x+1); 程序运行后的输出结果是 ( )。 ( A) INT: 14 (

7、 B) INT: 13 ( C) INT: 12 ( D) INT: 20 18 有如下程序: #include main() int a=0, b=1; if(+a=b+) printf(“T“); else printf(“F“); printf(“a= d, b= d n“, a, b); printf(“ n“); 程序运行后的输出结果是 ( )。 ( A) Ta=0, b=1 ( B) Fa=1, b=2 ( C) Ta=1, b=2 ( D) Fa=0, b=2 19 有如下程序: #include main( ) int i, data; seanf(“ d“, &data);

8、for(i=0; i 5, i+) if(i data)break; printf(“ d, “, i); printf(“ n“); 程序运行时,从键盘输入: 3后,程序输出结果为 ( )。 ( A) 3, 4, ( B) 0, 1, ( C) 3, 4, 5, ( D) 0, 1, 2, 3, 20 以下程序的功能是判断输入的一个整数是否能被 3或 7整除,若能整除,输出YES,否则输出 NO。在下划线处应填入的选项是 ( )。 #include main() int k; printf(“Enter a int number: ”); scanf(“ d“, &k); if_printf

9、(“YES n“); else printf(“NO n“); printf(“ d n“, k 3); ( A) (k 3=0) (k 7=0) ( B) (k 3=0) (k 7=0) ( C) (k 3=0) (k 7=0) ( D) (k 3=0)&(k 7=0) 21 有以下程序: #include main() if( 0=0)putchar(1); if(0=0)putchar(2); if(a b)putchar(3); 程序运行后的输出结果是 ( )。 ( A) 1 ( B) 123 ( C) 23 ( D) 3 22 有以下程序: #include main() int i

10、, k; int array42=1, 0, 0, 2, 9, 3; for(i=0; i 2; i+) for(k=0; k 3; k+) printf(“ d, “, arrayki); printf(“ n); 程序运行后的输出结果是 ( )。 ( A) 1, 0, 2, 0, 0, 9, ( B) 1, 2, 4, 9, 6, 0, ( C) 2, 9, 0, 0, 1, 4, ( D) 1, 2, 0, 1, 4, 1, 23 有如下程序: #include int sub(double a, double b) return(int)(a-b); main( ) printf(“

11、d n“, sub(3 8, 2 1); 程序运行后的输出结果是 ( )。 ( A) 2 0 ( B) 1 7 ( C) 2 ( D) 1 24 以下关于指针的叙述正确是 ( )。 ( A)所有类型的指针变量所占内存的大小是一样的 ( B)指针变量所占内存的大小与其类型有关, char型指针变量只占 1个字节,double型指针变量占 8个字节 ( C)指针变量可直接指向任何类型的变量,而不会 出现编译或运行错误 ( D)指针变量既可以直接指向结构体,也可直接指向结构体中某个成员,而不会出现编译或运行错误 25 有以下程序段: int*p1, *p2, a10; p1=a; p2=&a5; 则

12、 p2-p1的值为 ( )。 ( A) 5 ( B) 10 ( C) 12 ( D)无法确定 26 有以下程序: #include void fun(int*x, int s, int n) int i; for(i=s; i =n; i-) *(x+i+3)=*(x+i); main() int m=0, 1, 2, 3, 4, 5, 6, 7, 8, 9, k; fun(m, 10-4, 3); for(k=0; k 10; k+) printf(“ d, mk); 程序的运行结果是 ( )。 ( A) 0123456345 ( B) 0123453456 ( C) 0123456666

13、( D) 0123454569 27 有以下程序: #include main() char*s6: “ABCD“, “EFGH“, “IJKL“, “MNOP“, “QRST“, “UVWX“,*p; int i; p=s: for(i=0; i 4; i+)printf(“ S“, pi); printf(“ n“); 程序运行后的输出结果是 ( )。 ( A) ABCDEFGHIJKLMNOP ( B) ABCDEFGHIJKL ( C) ABCD ( D) AEIM 28 设有一 个 M*N的矩阵已经存放在一个 M行 N列的数组 x中,且有以下程序段: sum=0; for(i=0;

14、i main() char s1=”programe“, s2=“Language“; char*p1=s1, *p2=s2; int k; for(k=0; k 8; k+) if(*(p1+k)=*(p2+k) printf(“ s n“, *(p1+k); 程序的运行结果是 ( )。 ( A) grame ame e ( B) g a e ( C) programe ( D)无输出字符 31 有以下程序: #include #include main() char W20, a510=“abcdef“, “ghijkl“, “mnopq“, rstuv“, “wxyz “; int i;

15、 for(i=0; i 5; i+) wi=aistrlen(ai) 1; w5= 0; puts(w); 程序的运行结果是 ( )。 ( A) flqv ( B) agmrw ( C) ekpuy ( D) flqvz 32 有以下程序: #include main() int c, d; c=(13 1) 1; d=(13 1) 1; printf(“ d, d n“, c, d); 程序运行后的输出结果是 ( )。 ( A) 6, 1 ( B) 1, 1 ( C) 7, 1 ( D) 7, 2 33 有如下程序: #include void get put() char ch; ch=g

16、etchar(); if(ch! = n)get put(); putchar(ch); main() get_put(); printf(“ n“); 程序运行时,输入 1234,则输出结果是 ( )。 ( A) 1234 ( B) 4321 ( C) 4444 ( D) 1111 34 以下叙述错误的是 ( )。 ( A)未经赋值的全局变量值不确定 ( B)未经赋值的 auto变量值不确定 ( C)未经赋值的 register变量值不确定 ( D)未经赋值的静态局部变量值为 0 35 有如下程序: #include #define D(x)4*x+1 main() int i=2, j=4

17、; printf(“ d n“, D(i+j); 程序运行后的输出结果是 ( )。 ( A) 25 ( B) 13 ( C) 9 ( D) 12 36 有以下程序: #include struct Sint a; int*b; ; main() int x1=3, 4, x2=6, 7; struct S x=1, x1, 2, x2; printf(“ d, d n“, *x0 b, *x1 b); 程序的运行结果是 ( )。 ( A) 1, 2 ( B) 3, 6 ( C) 4, 7 ( D)变量的地址值 37 设有如下语句: typedef struct Date int year; i

18、nt month; int day; DATE; 则以下叙述中错误的是 ( )。 ( A) DATE是用户定义的结构体变量 ( B) struct Date是用户定义的结构体类型 ( C) DATE是用户说明的新结构体类型名 ( D) struct是结构体类型的关键字 38 有以下程序: #include #include void fun(int*s, int x23) *s=*(x1+1); main() int a23=1, 2, 3, 4, 5, 6, *p; p=(int*)malloc(sizeof(int); fun(&p, a); printf(“ d n“, *p); 程序的

19、运行结果是 ( )。 ( A) 6 ( B) 2 ( C) 5 ( D) 3 39 有定义: int a=64, b=8;,则表达式 (a&b) (a&b)和 (a b)&(a b)的值分别为 ( )。 ( A) 1和 1 ( B) 1和 0 ( C) 0和 1 ( D) 0和 0 40 有以下程序段: FILE*fp; if(fp=fopen(“test txt“, “W“)=NULL) printf(“不能打开文件! “); exit(0); else printf(“成功打开文件! “); 若指定文件 test txt不 存在,且无其他异常,则以下叙述错误的是 ( )。 ( A)输出 “

20、不能打开文件! ” ( B)输出 “成功打开文件! ” ( C)系统将按指定文件名新建文件 ( D)系统将为写操作建立文本文件 二、程序填空题 41 给定程序的功能是:从键盘输入若干行文本 (每行不超过 80个字符 ),写到文件myfile4 txt中,用 1作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数 ReadText和 WriteText实现。 注意: 请勿改动主函数 main中的任何内容, 仅在函数 WriteText和 ReadText的横线上填入所编写的若干表达式或语句。 【试题源程序】 #include #include #include

21、void WriteText(FILE*); void ReadText(FILE*); main( ) FILE*fp; if(fp=fopen(“myfile4 txt“, “W“)=NULL) printf(“open fail! n“); exit(0); WriteText(fp); fclose(fp); if(fp=fopen(“myfile4 txt“, “r“)=NULL) printf(“open fail! n“); exit(0); ReadText(fp); fclose(fp); *found* void WriteText(FILE 【 1】 ) char str

22、81; printf(“ nEnter string with-1 to end: n“); gets(str); while(strcmp(str, “-1“)! =0) *found* fputs(【 2】 , fw); fputs(“ n“, fw); gets(str); void ReadText(FILE*fr) char str81; printf(“ nRead file and output to screen: n“); fgets(str, 81, fr); while(! feof(fr) *found* printf(“ s, 【 3】 ); fgets(str, 8

23、1, fr); 三、程序修改题 42 给定程序中函数 fun的 功能是:根据整型形参 m,计算如下公式的值。例如,若 m中的值为: 5,则应输出:1 46361 1。请改正程序中的错误,使它能得到正确结果。 注意: 不要改动 main函数,不得增行或删行,也不得更改程序的结构。 【试题源程序】 #include double fun(int m) double y=1 0; int i; *found* for(i=2; im; i+) *found* y+=1 (i*i); return(y); main()int n=5; printf(“ nThe result is If n“, fu

24、n(n); 四、程序设计题 43 函数 fun的功能是:将 a、 b中的两个两位正整数合并形成一个新的整数放在 C中,合并的方式是:将 a中的十位和个位数依次放在变量 c的千位和十位上, b中的十位数和个位数依次放在变量 c的个位和百位上。 例如: a=45, b=12。调用该函数后: c=4251。 注意: 请勿改动主函数 main和其他函数中的任何内容,仅在 fun函数的花括号中填入所编写的若干语句。 【 试题源程序】 #include void fun(int a, int b, long*c) void main() int a, b; long c; printf(“Input a,

25、 b: “); seanf(“ d d“, &a, &b); fun(a, b, &c): printf(“The result is: ld n“, c); 国家二级( C语言)机试模拟试卷 114答案与解析 一、选择题 1 【正确答案】 C 【试题解析】 栈是一种特殊的线性表,它所有的插入与删除操作都限定在表的同一端进行。入栈运算即在栈顶位置插入一个新元素,退栈运算即取出栈顶元素赋予指定变量。在内存中,栈的增大方向是地址递减,元素依次存储在单元 30: 49中,个数为: 49 30+1=20个。 2 【正确答案】 B 【试题解析】 一个非空的数据结构如果满足以下两个条件:有且只有一个根结点

26、;每一个结点最多有一个前件,也最多有一个后件,称为线性结构。 A项中有两个根结点 3和 5,错误; B项根结点为 5,之后的结点除最后一个结点外都只有一个前件 和后件,正确; C项有两个根结点 1和 4,错误; D项有两个根结点 1和2,错误。 3 【正确答案】 B 【试题解析】 带链的队列就是用一个单链表来表示队列,队列中的每一个元素对应链表中的一个结点,在入队和退队过程中,队头指针和队尾指针都是在动态变化的, A项正确;带链的栈在入栈和退栈过程中栈底指针不变,栈顶指针随之变化, C项正确;循环队列中当队列满或者空时,队头指针和队尾指针指向同一个位置, D项正确。 4 【正确答案】 B 【试

27、题解析】 完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后 一层上只缺少右边的若干结点。深度为 6的满二叉树,结点个数为 261=63,且第 6层的结点数为 26 1=32个,则第 7层共有 125 63=62个叶子结点,分别挂在第 6层的左边 31个结点上,加上第 6层的最后 1个叶子结点,该完全二叉树共有 63个叶子结点。 5 【正确答案】 D 【试题解析】 计算机软件是程序、数据及相关文档的完整集合。 6 【正确答案】 C 【试题解析】 模块的独立程度由两个定性标准度量:内聚性和耦合性。耦合衡量不同模块彼此间互相依赖 (连接 )的紧密程度。内聚衡量一个模块内部各个 元素彼此

28、结合的紧密程度。一般来说,模块划分要求模块之间的耦合尽可能弱,即模块尽可能独立,且要求模块的内聚程度尽可能高。 7 【正确答案】 A 【试题解析】 白盒测试允许测试人员利用程序内部的逻辑结构及有关信息来设计或选择测试用例,对程序所有的逻辑路径进行测试。 8 【正确答案】 A 【试题解析】 逻辑模型是面向数据库系统的模型,着重于在数据库系统一级的实现。成熟并大量使用的逻辑模型有层次模型、网状模型、关系模型和面向对象模型等。 9 【正确答案】 B 【试题解析】 候选键是二维 表中能惟一标识元组的最小属性集。一个二维表有多个候选键,则选定其中一个作为主键供用户使用。学生学号与身份证号均可惟一标识一位

29、学生,都可以作为主键。 10 【正确答案】 B 【试题解析】 实体完整性约束是指,若属性 M是关系的主键,则属性 M中的属性值不能为空值。参照完整性约束是指,若属性 (或属性组 )A是关系 M的外键,它与关系 M的主码相对应,则对于关系 M中的每个元组在 A上的值必须为:要么取空值,要么等于关系 M中某个元组的主码值。表 T中属性 B为关系 T的外键,它与关系 S的主键相对应,则 T中元组在 B上应该为空 或者与 S中主键值相等,因此记录项 (b, q, 4)违反参照完整性约束。 11 【正确答案】 A 【试题解析】 编译就是把高级语言变成计算机可以识别的二进制语言,不经过编译的源程序是不能运

30、行的, A项正确。算法不一定要包含所有三种基本结构, B项错误。结构化程序主要由 3种基本控制结构组成,循环结构、选择结构、顺序结构,它们组成的算法结构可以解决任何复杂的问题, C项错误。算法的复杂程度不是由操作步骤多少决定的,而是由时间复杂度与空间复杂度来衡量, D项错误。 12 【正确答案】 A 【试题解析】 进行 模块化设计时,首先设计框架,并定义和调试好各个模块之间的输入输出关系,完成各个模块的编写调试后再集中编译, A项错误;各个模块可以由不同人员同时进行编写调试,提高编写程序的效率, B项正确;模块化的程序设计采用自顶向下、逐步细化的原则, C项正确;结构化程序使用三种基本结构可以

31、解决任何复杂的问题, D项叙述正确。 13 【正确答案】 A 【试题解析】 用尾数指数形式表示浮点数时, E的右侧必须是整数且不能为空。 14 【正确答案】 A 【试题解析】 main()函数后面的括号不可以省略, B项错误; 函数体内的定义语句应该出现在执行语句的前面, C项错误; C语言中的某些语句可以不用分号,例如 if语句,宏定义, D项错误。 15 【正确答案】 B 【试题解析】 rand()产生随机整数,任何整数对 30求余得到的整数范围为 029,则 y的取值范围为 1y30或者 0 y30, y是整数, 0 y30。 16 【正确答案】 A 【试题解析】 循环判断语句为 “(y

32、! =123)&(x 4)”,必须同时满足 “y! =123“和 “x 4“这两个表达式,循环才会继续。因此,当 x=4时,循环终止, for循 环共执行 4次。 17 【正确答案】 D 【试题解析】 0x13是十六进制数, d需要输出十进制数,先将 0x13换算成十进制: 161+1603=16+3=19,输出 INT=x+1=20。 18 【正确答案】 C 【试题解析】 程序执行过程为:判断 +a=b+是否成立, +a前缀运算先加 1,则 a=1, b+后缀运算先取值,则 b=1, 1=1成立,输出 T,之后 b=2,输出a=1, b=2。 19 【正确答案】 D 【试题解析】 break

33、语句作用是结束整个循环过程,不再判断循环的条 件是否成立,在嵌套循环中, break语句只跳出最内层的一层循环。程序执行过程为:输入3,则 data=3;执行 for循环,在 i =3时, if条件不成立,执行语句 printf(“d, “, i);依次输出 i值, 0, 1, 2, 3;直到 i=4时, if条件成立,执行 break退出 for循环。 20 【正确答案】 A 【试题解析】 是否能被 3或 7整除表达式为 (k 3=0) (k 7=0), A项正确。 B项 “ ”为除号,错误。 C项中 “=”为赋值运算符,不是逻辑运算符 “=”,错误。 D项 “&”为逻辑与,本题应 该为逻辑

34、或 “ ”,错误。 21 【正确答案】 A 【试题解析】 0是转义字符,表示空字符,故 0=0成立,输出 1; 0是字符常量,其值为 0的 ASCII码值, a和 b都是字符常量, b a,不执行 if后面的语句,所以最后输出只有 1。 22 【正确答案】 A 【试题解析】 程序定义一个 4行 2列数组 array,初始化赋值 6个数,其余自动为 0,根据 for循环,第一次输出第一列前三行数,分别是 1, 0, 2;第二次输出第二列前三行数,分别是 0, 0, 9。 23 【正确答案】 D 【试题解析】 在类型转换过程中,如果较高类型转换成较低类型,直接忽略多余位数。程序执行过程为:调用函数

35、 sub(3 8, 2 1), 3 8 2 1=1 7(double类型 ), (int)强制转换将 1 7转换成 int类型 1,然后返回 1并输出。 24 【正确答案】 A 【试题解析】 所有变量地址值所占字节都相同,故指针变量所占内存大小相同,A项正确, B项错误。只能把具有相同类型的变量地址,存放到指针变量中,结构体变量与某个成员类型不同,不能用同样的指针指向它们, CD两项错误。 25 【正确 答案】 A 【试题解析】 将数组名赋值给指针,表示指针指向数组首地址, p1=a,表示把a0地址赋给 p1, p2=&a5,表示将数组元素 a5的地址赋给 p2, p2 p1=5。 26 【正

36、确答案】 B 【试题解析】 程序的执行过程为:定义数组 m,并为其赋初值,数组长度为10。调用函数 fun(m, 6, 3)实现将数组下标值从 6到 3的元素依次向下标值大的方向移动三个位置, for循环结束之后数组为 m=0, 1, 2, 3, 4, 5, 3, 4, 5,6。依次输出数组元素,结果为 0123453456。 27 【正确答案】 A 【试题解析】 程序定义数组指针 s以及指针的指针 p, p指向数组指针 s。 pi为s的第 i行字符串,因此程序输出 s的前四行字符串 ABCDEFGHIJKLMNOP。 28 【正确答案】 D 【试题解析】 程序执行过程为:第一个 for循环实

37、现对数组 x的第一列和第 N列求和。第二个 for循环在上一个 for循环结果上实现对第一行和第 M行从第二个元素到第 N 1个元素的求和,因此,程序段计算的是矩阵所有靠边元素之和。 29 【正确答案】 D 【试题解析】 auto变量又称为自 动变量,函数定义变量时,如果没有指定存储类别,系统则认为所定义的变量具有自动类别。 extern定义外部变量。 static变量又称为静态变量,编译时为其分配的内存在静态存储区中。 register变量又称为寄存器变量,变量的值保留在 CPU的寄存器中。 30 【正确答案】 A 【试题解析】 定义两个指针变量 p1、 p2,分别指向数组 s1、 s2首地

38、址,在 for循环中,比较两个指针所指地址的元素是否相等,如果相等,则输出当前指针指向地址的字符串。 31 【正确答案】 A 【试题解析】 puts()函 数将数组中存放的字符串输出,用 “ n“取代字符串结束符 “ 0“。 strlen()函数求字符串的实际长度 (不包含结束标志 )。程序中 for循环将第 i个字符串最后一个字符放入 w数组下标值为 i的位置。最后将数组最后一个字符赋值为 “ 0”,输出字符串 w为 flqv。 32 【正确答案】 C 【试题解析】 表达式 c=(13 1) 1中,是右移符号,数字 13换算成二进制后右移 1位,再和 1进行按位或运算,结果为 7;表达式 d

39、=(13 1) 1中,首先判断 13是否大于 1,此时条件成立返回 1后,再和 1进行或运算 ,结果为1。 33 【正确答案】 B 【试题解析】 在调用一个函数的过程中又出现直接或间接的调用该函数本身,称为函数的递归调用。本题程序的执行过程为:调用 get put()函数, getehar()读入1,在这次调用中的局部变量 ch=1, if条件成立 -调用 get put()函数,读入2,局部变量 ch=2-调用 get put()函数,读入 3,局部变量 ch=3-调用 getput()函数,读入 4,局部变量 ch=4-调用 get put()函数,读入回车, if条件不成立,返回。执行每

40、 次调用函数中 if语句后的输出语句,依次输出 4321。 34 【正确答案】 A 【试题解析】 C语言中,系统将未经赋初值的全局变量值默认为 0。 35 【正确答案】 B 【试题解析】 带参数的宏的替换过程是:用宏调用提供的实参字符串直接替换宏定义命令行中相应形参字符串,非形参字符保持不变。调用函数 D(i+j),进行替换为 4*i+j+1=13,输出 13。 36 【正确答案】 B 【试题解析】 程序的执行过程为:定义整型数组 x1, x2并进行初始化,两个数组长度均为 2。定义结构体数组 x, 并为其初始化,则 x0 a=1, x0 b=x1,x1 a=2, x1 b=x2。输出 x0的

41、成员指针 b指向的内存单元值,即数组 x1的第 一个元素 3,输出 x1的成员指针 b指向的内存单元值,即数组 x2的第一个元素 6。程序的运行结果是 3, 6。 37 【正确答案】 A 【试题解析】 C语言允许用 typedef说明一种新类型名,其一般形式如下:typedef类型名新类型名;,题目中定义了新类型 Date,这种类型变量包含 3个成员, DATE是这种新类型的名字。 DATE是用户说明的新结构体类型名 ,不是结构体变量, C项正确, A项错误。 struct Date是用户定义的结构体类型, B项正确。 struct是结构体类型的关键字, D项正确。 38 【正确答案】 C 【

42、试题解析】 malloc(size)函数作用是在内存的动态存储区分配一个长度为 size的连续空间,函数的返回值是新分配的存储区的首地址,将该地址赋值给 p指针,然后取 p指针的地址,调用 fun函数。 fun函数中对指向指针的指针 s指向的内存单元赋值,其中 x1表示二维数组 x的第二行的行地址, x1+1表示二维数组 x的第二行第二列的地址, 所以 fun函数的功能是将二维数组 x的第二行第二列的值,即 x 11赋值给 *s, *s为 p,所以 *s代表 *p, x11与 a11等价。 39 【正确答案】 A 【试题解析】 &按位与运算符, “ “按位或运算符, “&“逻辑与运算符,“ “

43、逻辑或运算符。 a&b=1000000B&0001000B=0000000B=0, ab=1000000B 0001000B=1001000B=72, a与 b都非零, a&b=1, a b=1,故表达式 (a&b) (a&b)的值为 1;表达式 (a b)&(a b)的值为 1。 40 【正确答案】 A 【试题解析】 fopen函数以一定方式打开指定文件,返回一个指向文件的文件指针,如果不能实现打开指定文件的操作,则返回一个空指针 NULL。如果指定文件不存在则创建一个文件名为指定文件名的新文件,然后打开它。程序中,文件test txt不存在,但无其他异常,表示可以建立新文件,命名为 tes

44、t txt, C项正确,并以只写方式打开它, D项正确,返回指向文件的指针, if条件不成立,输出“成功打开文件! ”, B项正确。 二、程序填空题 41 【正确答案】 【 1】 *fw 【 2】 str 【 3】 str 【试题解析】 填空【 1】:要求填写文件流的变量名。分析语句 puts(“ n“,fw);文件流变量 fw在函数体中没有被定义过,所以本处应填 *fw。 填空【 2】:通过 while循环语句,把键盘上输入的内容写入到指定的文件中。键盘上输入的内容已存入字符串变量 str中,因此,本处应填写 str。 填空【 3】:要把已存入文件中的内容,再从文件中读出,存入到字符串变量

45、str中,最后在屏幕显示出来,因此,此处应填写 str。 三、程序修改题 42 【正确答案 】 (1)错误: for(i-2; i m; i+) 正确: for(i=2; i =m; i+) (2)错误: y+=1 (i*i) 正确: y+=1 0 (i*i) 【试题解析】 错误 (1):使用 for循环计算公式取到 m时,最后一次循环应该等于 m,所以 i m应改为 i =m。 错误 (2):在除法运算中,如果除数和被除数都是整数,那么所除结果也是整数,因此需要对结果进行强制转换或者将除数或被除数其中一个整型常量变为浮点型常量。 四、程序设计题 43 【正确答案】 void fun(int a, int b, long*c) *c=(a 10)*1000+(b 10)*100+(a 10)*10+b 10; 【试题解析】 设计思路是: 按位拆分正整数,与 10整除 ( )求其高位,与 10取模 ( )求其低位。 按位合并,每位上的数字与该位上的位权相乘,然后各位相加,即 anan 1a 2a1a0=an*10n+an 1*10n 1+a 2*102+a1*10+a0*100。

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

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

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