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

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

1、国家二级( C语言)机试模拟试卷 111及答案与解析 一、选择题 1 下列叙述中正确的是 ( )。 ( A)栈与队列都只能顺序存储 ( B)循环队列是队列的顺序存储结构 ( C)循环链表是循环队列的链式存储结构 ( D)栈是顺序存储结构而队列是链式存储结构 2 算法空间复杂度的度量方法是 ( )。 ( A)算法程序的长度 ( B)算法所处理的数据量 ( C)执行算法所需要的工作单元 ( D)执行算法所需要的存储空间 3 设有栈 S和队列 Q,初始状态均为空。首先依次将 A, B, C, D, E, F入栈 ,然后从栈中退出三个元素依次入队,再将 X, Y, Z入栈后,将栈中所有元素退出并依次入

2、队,最后将队列中所有元素退出,则退队元素的顺序为 ( )。 ( A) DEFXYZABC ( B) FEDZYXCBA ( C) FEDXYZCBA ( D) DEFZYXABC 4 某二叉树的前序序列为 ABCDEFG,中序序列为 DCBAEFG,则该二叉树的后序序列为 ( )。 ( A) EFGDCBA ( B) DCBEFGA ( C) BCDGFEA ( D) DCBGFEA 5 软件生命周期是指 ( )。 ( A)软 件产品从提出、实现、使用、维护到停止使用、退役的过程 ( B)软件的需求分析、设计与实现 ( C)软件的开发与管理 ( D)软件的实现和维护 6 通常软件测试实施的步骤

3、是 ( )。 ( A)集成测试、单元测试、确认测试 ( B)单元测试、集成测试、确认测试 ( C)确认测试、集成测试、单元测试 ( D)单元测试、确认测试、集成测试 7 下面不属于对象的主要特征的是 ( )。 ( A)惟一性 ( B)多态性 ( C)可复用性 ( D)封装性 8 数据库设计中,描述数据间内在语义联系得到 E-R图的过程属于 ( )。 ( A)逻辑设计阶段 ( B)需求分析阶段 ( C)概念设计阶段 ( D)物理设计阶段 9 在数据库系统中,用于对客观世界中复杂事物的结构及它们之间的联系进行描述的是 ( )。 ( A)概念数据模型 ( B)逻辑数据模型 ( C)物理数据模型 (

4、D)关系数据模型 10 有三个关系 R、 S和 T如下: 则由关系 R和 S得到关系 T的操作是 ( )。 ( A)并 ( B)投影 ( C)交 ( D)选择 11 结构化程序由顺序、选择、循环三种基本结构组成,以下相关叙述错误的是( )。 ( A)三种基本结构不可以嵌套使用 ( B)顺序结构是按语句在程序中的先后顺序逐条执行,没有分支,没有转移 ( C)选择结构是根据不同的条件执行不同分支中的语句 ( D)循环结构是根据条件决定是否重复、重复执行多少次循环体语句 12 在 C语言中,以下选项中不能正确表示 101000之值的是 ( )。 ( A) 1 0E4 0 ( B) 1 E4 ( C)

5、 10E3 ( D) 1 0e4 13 以下选项中,合法的 C语言常量是 ( )。 ( A) 21 84 ( B) CPP ( C) 1 0 ( D) 2MB 14 有以下程序: #include main() int x=010, y=10; printf(“ d, d n“, +x, y-); 程序运行后的输出结果是 ( )。 ( A) 10, 9 ( B) 11, 10 ( C) 010, 9 ( D) 9, 10 15 若有定义: int a; float b; double c;,程序运行时输入: a=1, b=2, c=3,能把值 1输入给变量 a、值 2输入给变量 b、值 3输入

6、给变量 c的输入语句是( )。 ( A) scanf(“a= d, b= f, c= If“, &a, &b, &c); ( B) scanf(“ d f If“, &a, &b, &c); ( C) scanf(“a= d, b= If, c= If“, &a, &b, &c); ( D) scanf(“a= d, b= f, c= f“, &a, &b, &c); 16 有如下程序: #include main() int a=0, b=1; if(a+&b+) printf(“T“); else printf(“F“); printf(“a= d, b= d n“, a, b); 程序运

7、行后的输出结果是 ( )。 ( A) Ta=1, b=2 ( B) Fa=0, b=2 ( C) Fa=1, b=1 ( D) Ta=0, b=1 17 以下不是合法 C语言转义字符的是 ( )。 ( A) c ( B) a ( C) b ( D) r 18 有以下程序: #include main() char ch=B; while(ch E) printf(“ d“, ch-A); ch+: printf(“ n“); 程序运行后的输出结果是 ( )。 ( A) 123 ( B) ABC ( C) abe ( D) 012 19 以下能够实现计算 5!的程序段是 ( )。 ( A) in

8、t fac=1, k=0; dok+; fac*=k; while(k 5); ( B) int fac=0, k=1; dofac*=k; k+; while(k 5); ( C) int fac=1, k=1; dok+; fac*=k; while(k =5); ( D) int fac=1, k=0; dofac=k; k+; while(k 5); 20 有以下程序: #include main() int x=0x13: if(x=0x12)printf(“True“); printf(“False n“); 程序运行后的输出结果是 ( )。 ( A) True ( B) True

9、False ( C) False ( D) TrueFalseTrue 21 有以下程序段: char c1, c2, c3; scanf(“ c c c“, &c1, &c2, &c3);若要给 c1、 c2、 c3分别赋值字母 A、 B、 C,则以下对输入形式的描述正确的是 ( )。 ( A)字母 A、 B、 C之间可以用空格分隔 ( B)字母 A、 B、 C之间不能有分隔符 ( C)字母 A、 B、 C之间可以用回车符分隔 ( D)字母 A、 B、 C之间可以用 Tab键分隔 22 有以下程序: #include main() printf(“ d n“, NULL); 程序运行后的输出

10、结果是 ( )。 ( A) 0 ( B)变量无定义,输出不确定 ( C) 1 ( D) 1 23 以下关于函数的叙述中正确的是 ( )。 ( A)函数调用必须传递实参 ( B)函数必须要有形参 ( C)函数必须要有返回值 ( D)函数形参的类型与 返回值的类型无关 24 有以下程序: #include void fun(int a, int n) int i; for(i=0; i n; i+) if(i 3=0) ai-=n; else ai+=n; main() int c5=6, 7, 8, 9, 10, i; fun(c, 5); for(i=0; i 5; i+)printf(“ d

11、, “, ci); printf(“ n“); 程序运行后的输出结果是 ( )。 ( A) 1, 12, 13, 4, 15, ( B) 10, 9, 8, 7, 6, ( C) 1, 7, 13, 9, 15, ( D) 10, 12, 8, 4, 6, 25 以下程序中给数组所有元素输入数据,请从选项中选择正确的答案填入下划线处。 #include main() int a10, i=0; while(i 10)scanf(“ d“, _); ( A) a+(i+) ( B) &ai+1 ( C) a+i ( D) &a(i+) 26 有以下程序: #include int*f(int*s

12、, int*t) if(*s *t) *s=*t: return s; main() int i=3, j=5, *P=&i, *q=&j, *r; r=f(p, q); printf(“ d, d, d, d, d n“, i, j, *p, *, *r); 程序的运行结果是 ( )。 ( A) 5, 5, 5, 5, 5 ( B) 3, 5, 5, 5, 5 ( C) 5, 3, 3, 3, 5 ( D) 3, 5, 3, 5, 5 27 有如下程序: #include #include main() printf(“ d n“, strlen(“0 t nA01 1 1“); 程序运行后

13、的输出结果是 ( )。 ( A) 8 ( B) 9 ( C) 7 ( D) 10 28 若有定义: char*ps=“aa“, “bb“, “cc“, “dd“;,则以下叙述正确的是 ( )。 ( A) *ps0是字符 a ( B) *ps0是字符串 “aa“ ( C) ps0是字符 a ( D) ps是字符串 “aa“ 29 以下涉及字符串数组、字符指针的程序段,不会产生编译错误的是 ( )。 ( A) char*str, name10; str=“Hello World“; ( B) char*str, name10; name=“Hello World“; ( C) char strl1

14、0=“prog c, str210; str2=str1; ( D) char head line; head line=“= = = = = = =“; 30 有如下程序: #include void get put() char ch; ch=getchar(); if(ch! = n)get put(); putchar(ch); main() get put(); 程序运行时,输入 ABCD,则输出结果是 ( )。 ( A) DCDC ( B) DCBA ( C) BABA ( D) ABCD 31 若有以下程序段: char str412: “aaa“, “bbbb“, “cccec

15、“, “dddddd“, *strp4; int i; for(i=0; i 4; i+)strpi=stri; 则以下错误引用字符串的选项是 (其中 0k 4)( )。 ( A) *strp ( B) strk ( C) strpk ( D) strp 32 有以下程序: #include main() int findmax(int, int, int), m; m=findmax(a, b, c); int findmax(int x, int y, int z) 则以下叙述正确的是 ( )。 ( A)在 main函数中声明了 findmax函数 ( B)在 main函数中定义了 fin

16、dmax函数 ( C)在 main函数中两次调用了 findmax函数 ( D)在 main函数内、外重复定义了 findmax函数 33 有如下程序: #include int sum(int*array, int len) if(len=0) return array0; else return array0+sum(array+1, len-1); main() int array5=1, 2, 3, 4, 5; int res=sum(array, 4); printf(“ d n“, res); 程序运行后的输出结果是 ( )。 ( A) 15 ( B) 10 ( C) 8 ( D)

17、 1 34 若有定义: typedef int*T: T a20; 则以下与上述定义中 a类型完全相同的是 ( )。 ( A) int*a20; ( B) int(*a)20; ( C) int a20; ( D) int*a20; 35 有以下程序: #include #include #include main() char*p1, *p2; p1=p2=(char*)malloc(sizeof(char)*10); strcpy(p1, “malloc); strcpy(p2, p1+1); printf(“ c c n“, p10, p20); 程序的运行结果是 ( )。 ( A) a

18、a ( B) mlt ( C) am ( D) mm 36 有如下定义: struct int num; char name10; struet int y; int m; int d; birth; s, *ps=&s; 以下对内嵌结构体成员的引用形式错误的是 ( )。 ( A) ps- birth y ( B) s birth y ( C) ps birth y ( D) (*ps) birth y 37 有以下程序; #include #define N 2 #define M N+1 #define MUN (M+1)*M 2 main() printf(“ d n“, MUN); 程

19、序运行后的输出结果是 ( )。 ( A) 8 ( B) 9 ( C) 5 ( D) 6 38 有如下程序: #include struet pair int first, second; ; struet pair get min max(int*array, int len) int i; struet pair res; res first=array0; res second=array0; for(i=1; i len; i+) if(arrayi res first) res first=arrayi; if(arrayi res second) res second=arrayi:

20、 return res; main() int array5=9, 1, 3, 4; struet pair min max=get_min max(array, 5) printf(“min= d, max= d n“, min max first, min max second); 程序运行后的输出结果是 ( )。 ( A) min=1, max=9 ( B) min=0, max=9 ( C) min=1, max=4 ( D) min=0, max=4 39 有以下程序: #include main() int c, d; c=13&5: d=10&5; printf(“ d, d n

21、“, c, d); 程序的运行结果是 ( )。 ( A) 5, 1 ( B) 1, 1 ( C) 18, 1 ( D) 13, 1 40 有以下程序段: FILE*fp; if(fp=fopen(“test txt“, “w“)=NULL) printf(“不能打开文件! “); exit(0); else printf(“成功打开文件! “); 若文件 test txt已存在,则以下叙述正确的是 ( )。 ( A)程序运行后,文件 test txt中的原有内容将全部消失 ( B)程序运行时,会因文件存在而出错 ( C)对文件 test txt进行写操作后,可以随机进行读取 ( D)对文件 t

22、est txt写入的内容总是被添加到文件尾部 二、程序填空题 41 下列给定程序的功能是调用 fun函数建立班级通信录。 通信录中记录每位学生的编号、姓名和电话号码。班级人数和学生信息从键盘读入,每个人的信息作为一个数据块写到名为 myfile5 dat的二进制文件中。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构! 【试题源程序】 #include #include #define N 5 typedef struct int num; char name10; char tel10; STYPE; void check(

23、); *found* int fun(【 1】 *std) *found* 【 2】 *fp; int i; if(fp=fopen(“myfile5 dat“, “wb“)=NULL) return(0); printf(“ nOutput data to file! n“); for(i=0; i N; i+) *found* fwrite(&stdi, sizeof(STYPE), 1, 【 3】 ); fclose(fp); retum(1); main() STYPE s10=1, “aaaaa”, “111111”, 1, “bbbbb“, “222222“, 1, “c CCCC

24、“, “333333“, 1, “ddddd“, “444444“, 1, “eeeee“, “555555“; int k; k=fun(s); if(k=1) pfintf(”Succeed! ”); check(); else printf(“Fail! ”); void check() FILE*fp; int i; STYPE S10; if(fp=fopen(“myfile5 dat“, “rb“)=NULL) printf(“Fail! n“); exit(0); printf(“ nRead file and output to screen: n“); pfinff(“ n

25、nun name tel n“); for(i=0; i N; i+) fread(&si, sizeof(STYPE), 1, fp); pfintf(“ 6d s s n“, si num, si name, Si tel); fclose(fp); 三、程序修改题 42 下列给定程序中,函数 fun()的功能是计算并输出 high以内的素数之和。 high由主函数传给 fun()函数。例如:若 high的值为 100,则函数的解为 1060。 请改正程序中的错误,使它能得到正确结果 。 注意: 不要改动 main函数,不得增行或删行,也不得更改程序的结构。 【试题源程序】 #includ

26、e #include #include int fun(int high) int sum=0, n=0, j, yes; while(high =2) yes=1: for(j=2; j =high 2; j+) *found* if high j=0 yes=0; break; *found* if(yes=0) sum+=high: n+: high-; return sum; main() printf(“ d n“, fun(100); 四、程序设计题 43 编写 函数 fun,其功能是:将两个两位的正整数 a、 b合并成一个整数放在 e中。合并的方式是:将 a数的十位和个位数依次放

27、在 c数的十位和千位上, b数的十位和个位数依次放在 c数的百位和个位上。 例如,当 a=45, b=12时,调用该函数后, c=5142。 注意: 数据文件 IN DAT中的数据不得修改。请勿改动主函数 main和其他函数中的任何 内容,仅在函数 fun的花括号中填入编写的若干语句。 【试题源程序】 #include #include #include void fun(int a, int b, long*c) void main() int a, b; long c; system(”CLS“); printf(“Input a, b: “); scanf(“ d d“, &a, &b)

28、; fun(a, b, &c); printf(The result is: ld n“, c); 国家二级( C语言)机试模拟试卷 111答案与解析 一、选择题 1 【正确答案】 B 【试题解析】 栈是所有的插入与删除都限定在表的同一端进行的线性表;队列是指允许在一端进行插入,而在另一端进行删除的线性表,二者既可以顺序存储也可以链式存储。为了充分地利用数组的存储空间,把数组的前端和后端连接起来,形成一个环形的表,称为循环队列,因此循环队列是队列的一种顺序存储结构。 2 【正确答案】 D 【试题解析】 算法的空间复杂度是指执行这个算法所需要的存储空间,包括: 输入数据所占的存储空间; 程序本身

29、所占的存储空间; 算法执行过程中所需要的额外空间。 3 【正确答案】 B 【试题解析】 栈是所有的插入与删除都在同一端进行的线性表。队列是只允许在一端进行插入,而在另一端进行删除的线性表。将 A, B, C, D, E, F入栈后,栈中元素为 ABCDEF,退出三个元素人队,队列元素为 FED,将 X, Y, Z入栈后栈中元素为 ABCXYZ,全部入队后,队列元素为。 FEDZYXCBA,队列的出队顺序与入队顺序一致。 4 【正确答案】 D 【试题解析】 二叉树遍历的三种方式: 前序遍历,访问根结点在访问左子树和访问右子树之前; 中序遍历,访问根结点在访问左子树和访问右子 树两者之间; 后序遍

30、历,访问根结点在访问左子树和访问右子树之后。二叉树的前序序列为 ABCDEFG, A为根结点。中序序列为 DCBAEFG,可知 DCB为左子树结点, EFG为右子树结点。依此类推,画出该二叉树,二叉树的后序序列为DCBGFEA。 5 【正确答案】 A 【试题解析】 软件生命周期是指软件产品从提出、实现、使用、维护到停止使用、退役的过程。 6 【正确答案】 B 【试题解析】 软件测试的实施过程主要有 4个步骤:单元测试、集成测试、确认测试 (验收测试 )和系统测试。 7 【正确答案 】 C 【试题解析】 对象的基本特点主要有: 标识惟一性,一个对象通常可由对象名、属性和操作三部分组成; 分类性,

31、指将具有相同属性和操作的对象抽象成类; 多态性,指同一个操作可以是不同对象的行为,不同对象执行同一操作产生不同的结果; 封装性,从外面看只能看到对象的外部特性,对象的内部对外是不可见的; 模块独立性,由于完成对象功能所需的元素都被封装在对象内部,所以模 块独立性好。 8 【正确答案】 C 【试题解析】 数据库设计主要有需求分析、概念设计、逻辑设计和物理没汁四个阶段。概念设计阶段 使用 E-R模型,将现实世界的信息结构统一由实体、属性以及实体之间的联系来描述。 9 【正确答案】 A 【试题解析】 数据模型按照不同的应用层次分为: 概念数据模型,着重于对客观世界复杂事物的描述及对它们内在联系的刻画

32、; 逻辑数据模型,是面向数据库系统的模型,着重于数据库系统级的实现; 物理数据模型,是面向计算机物理实现的模型,给出了数据模型在计算机上物理结构的表示。 10 【正确答案】 A 【试题解析】 常用的关系运算有交、除、连接及自然连接等。其中,并运算R S是将 S中的记录追加到 R后 面,与题目中结果相符。 11 【正确答案】 A 【试题解析】 结构化程序主要由 3种基本控制结构组成,顺序结构是最基本的算法结构,当执行由这些语句构成的程序时,将按这些语句在程序中的先后顺序逐条执行,没有分支,没有转移,没有步骤之间的相互约束,没有对某一步骤的多次使用, B项正确;选择结构根据不同的条件去执行不同分支

33、中的语句, C项正确;循环结构就是根据各自的条件,使同一组语句重复执行多次, D项正确。三种结构可以嵌套使用, A项错误。 12 【正确答案】 A 【试题解析】 实型常量用带小数点的数 字表示,其值有两种表达形式,分别为十进制小数形式和指数形式。指数形式由十进制数加阶码标志 “e”或 “E”以及阶码 (只能为整数,可以带符号 )组成。指数形式中阶码必须是整型常量, A项中 4 0是浮点数,不能正确表示 101000的值。 13 【正确答案】 A 【试题解析】 21 84是浮点型常量, A项正确;字符常量是单引号括起来的一个字符,字符串常量是双引号括起来的字符序列, BC两项错误; C语言常量不

34、能直接用未加引号的字母、数字组合, D项错误。 14 【正确答案】 D 【试题解析】 整型常量有 3种表 示方法,分别是十进制数表示法、八进制数表示法和十六进制数表示法,八进制整型常量以 0作为前缀。 x=(010)8=(8)10, y=10,+x先自加后取值,输出 9, y-先取值输出 10,再自减 y=9。 15 【正确答案】 A 【试题解析】 格式字符 d,输入十进制整数;格式字符 f,输入浮点数;格式字符 1f,输入双精度浮点数。除了格式说明字符和附加格式字符外,如果还有其他字符,则在输入数据时要求按照这些字符在一一对应的位置原样输入。程序运行时输入: a=1, b=2, c=3,则

35、scanf函数格式控制串应该是 “a= d, b= f, c=1f”。 16 【正确答案】 C 【试题解析】 程序中判断 if条件是否成立, a+先取值为 0,则 (a+&b+)为0,不计算 b+,而后 a自增得 a=1, if条件不成立执行 else函数体,输出 F。最后执行语句 printf(“a= d, b= d n“, a, b);按照格式输出 a=1, b=1。 17 【正确答案】 A 【试题解析】 C语言中,转义字符 a表示响铃, b表示退格, r表示回车不换行。 18 【正确答案】 A 【试题解析】 while循环条件满足 ch E,输出 ch-A,即将字符的 ASCII码相减输

36、出, d表示输出十进制整数。循环开始 ch=B, printf(“ d“, ch-A)=1,继续执行循环直到 ch=E,输出 123。 19 【正确答案】 A 【试题解析】 dowhile 循环语句一般形式为: do循环体 while(表达式 ),执行过程为:首先执行循环体,之后判断表达式,表达式成立 (非 0)则再一次执行循环体,不成立 (0)则退出循环。 A项, k=1, fac=1*1,判断 k 5,条件成立进行下一次循环,直到 k=5, fac=1*2*3*4*5, k 5不成立退出循环,实现计算 5!。 B项, fac从 0开始,做乘法一直都是 0,无法实现 5!。 C项, k=2,

37、 fac=1*2,循环条件成立,直到 k=6, fac=1*2*3*4*5*6才因循环条件不成立退出循环,实现 6 1。 D项: k=0, fac=1*0=0,之后做乘法一直为 0,无法实现 5!。 20 【正确答案】 B 【试题解析】 if(x=0x12)条件语句为赋值语句,注意赋值操作符 “=”与相等操作符 “=”的区别,条件成立,输出 True;退出条件语句,输出 False。 21 【正确答案】 B 【试题解析】 使用 scanf函数时要注意,在用 “ c”格式输入字符时,分隔符 (空格符、制表符、回车符 )和转义字符都将作为有效字符进行输入。题目中要求以字符形式输入三个数据,空格、回

38、车符、 Tab键均会被视为有效字符赋给对应变量,所以字母 A、 B、 C之间不能有分隔符。 22 【正确答案】 A 【试题解析】 C语言中, NULL作为整型时,值为 0。 23 【正确答案】 D 【试题解析】 函数如果没有形参也就不必传递实参, A项错误;函数可以没有形参, B项错误;函数可 以没有返回值, C项错误;函数形参的类型与返回值的类型无关, D项正确。 24 【正确答案】 A 【试题解析】 fun()函数功能是:将数组 c中下标对 3求余为 0的元素减去 5,下标对 3求余不为 0的元素累加 5,所以执行完 fun()函数后,数组 c中元素值为 1,12, 13, 4, 15。

39、25 【正确答案】 A 【试题解析】 A项正确, a为数组首地址, i+先取 i值再加 1, scanf读入的数据依次存放在数组 a中; B项错误,程序会进入死循环; C项错误,控制变量 i没有依次加 1,无法结束循环,也无法对整个数组 赋值; D项错误,数组元素引用为,不是 ()。 26 【正确答案】 A 【试题解析】 程序执行过程为: p指向 i, q指向 j,调用函数 f,将 i与 j地址传递给 s与 t,判断 i是否小于 j,成立将 j=5赋值给 i, i=5,返回指向 i的指针并赋给 r,则 r指向 i,最后输出 5, 5, 5, 5, 5。 27 【正确答案】 A 【试题解析】 s

40、trlen是求字符串长度的函数,不包含字符串结束标志 0, “0 t nA011 1“是一个长度为 8的字符串,其中 t、 n、 1均为转义字符,长度是 1,因此输出结果是 8。 28 【正确答案】 A 【试题解析】 定义指针数组 ps, ps0代表数组首个元素的地址,即 ”aa”的地址,同时也是 ”aa”第一个字符 a的地址,所以 *ps0代表字符 a。 29 【正确答案】 A 【试题解析】 将字符指针变量初始化可以通过赋值运算使一个字符指针指向一个字符串常量: char*str; str=“HelloWorld“, A项正确;数组名是一个地址常量,而字符指针变量是一个变量,不能给一个数组名

41、赋值,如 name=”Hello woad”错误, B项错误;字符型的指针变量的值是可 以改变的,相同类型指针可以相互赋值,而数组不能直接用 “=”赋值, C项错误;数组不可以直接赋值字符串,只有在数组初始化时可以直接赋值,如 char head line=“= = = = = = =”合法, D项错误。 30 【正确答案】 B 【试题解析】 主函数调用 get-put函数,字符变量 ch每次保存读进来的字符,如果不是换行符,则继续读取下一个字符常量,当 ch保存完 D后,下一次读取不满足 if条件,函数依次输出 D, C, B, A。 31 【正确答案】 D 【 试题解析】 程序定义了二维数

42、组 str,指针数组 strp。 A项正确, *strp引用数组 str的第一行字符串 ”aaa”; B项正确, strk引用数组 str的第 k行字符串; C项正确, strpk引用数组 str的第 k行字符串; D项错误, strp不能引用字符串。 32 【正确答案】 A 【试题解析】 程序中函数 findmax定义放在主函数之后,主函数中声明了findmax函数。 int findmax(int, int, int);为函数声明, m=findmax(a, b, c);为函数调用, int findmax(int x, int y, int z)为函数定义。 33 【正确答案】 A 【试

43、题解析】 程序执行过程为:定义字符数组 array,调用函数 sum将数组首地址与 4传入函数, len=4; len! =0递归调用 sum(array+1, 3)传入地址为数组第二个元素地址; len 0递归调用 sum(array+1, 2)传入地址为数组第三个元素地址;len 0递归调用 sum(array+1, 1)传入地址为数组第四个元素地址; len 0递归调用 sum(array+1, 0)传入地址为数组第五个元素地址,此时 len=0,返回 5;执行sum(array+1, 1)余下语句,返回 9;执行 sum(array+1, 2)余下语句,返回 12;执行 sum(arr

44、ay+1, 3)余下语句,返回 14;执行 sum(array+1, 4)余下语句,返回15,并输出。 34 【正确答案】 A 【试题解析】 “typedef类型名新类型名 ”表示为一个已定义的类型标识符重新定义一个新类型名, A项是数组指针,即指向数组的指针, B项是指针数组,即数组存放的元素是整型指针,首先为整型指针类型命名为 T,再通过 T定义了一个整型指针数组 a20,等 价于 int*a20。 35 【正确答案】 A 【试题解析】 程序执行过程为:定义两个字符类型指针 p1和 p2,动态开辟 10个字符类型的内存单元,并且使指针 p1与 p2均指向这 10个内存单元的第一个单元。调用

45、 strcpy函数,将字符串 ”malloc”赋值给这 10个内存单元的前 7个单元,存储情况为: malloc 0。再次调用 strcpy函数,这 10个内存单元的第 2个到第 7个单元元素重新赋值给 p2指向的内存单元以及以后的 5个单元,存储情况为:alloc 0 0。输出两个指针指向单元的数据值,结果为: aa。 36 【正确答案】 C 【试题解析】 使用结构体指针对结构体成员进行访问时,形式为:结构体指针名-结构体成员名,或者 (*结构体指针名 )结构体成员名。 37 【正确答案】 A 【试题解析】 带参数的宏的替换过程是,用宏调用提供的实参字符串,直接置换宏定义命令行中相应形参字符

46、串,非形参字符保持不变。 MUN被置换成(2+1+1)2+1 2;程序的运行结果是 8。 38 【正确答案】 B 【试题解析】 在对数组进行初始化时,如果在说明数组时给出了长度,但没有给所有的元素赋予初始 值,那么 C语言将自动对余下的元素赋初值 0,则array5=9, 1, 3, 4, 0。程序的执行过程为:调用函数 get minmax(array, 5),将数组 array的首地址传入函数,定义结构体变量 res,并为其成员赋值。 for循环查找数组 array的最小值 0,将其赋值给 res的成员 first,查找数组最大值 9,并将其赋值给 res的成员 second。最后返回结构

47、体变量 res,则 min max=res。输出 min max first=0, min max second=9。 39 【正确答案】 A 【试题解析】 “&”按位与运算, 13=1101B, 5=101B,执行语句 c=13&5;结果为101B=5,即 c=5。 “&”逻辑与运算, 10与 5均为真,结果为真,即 d=1。 40 【正确答案】 A 【试题解析】 fopen函数以一定方式打开指定文件,返回一个指向文件的文件指针,如果不能实现打开指定文件的操作,则返回一个空指针 NULL。如果指定文件不存在,则创建一个文件名为指定文件名的新文件,然后打开它。本题程序中,文件 test txt已存在,程序运行后,文件 test txt中的原有内容将全部消失 。 二、程序填空题 41 【

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

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

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