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

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

1、国家二级( C语言)笔试模拟试卷 10及答案与解析 1 在深度为 5的满二叉树中,叶子结点的个数为 ( )。 ( A) 32 ( B) 31 ( C) 16 ( D) 15 2 若某二叉树的前序遍历访问顺序是 abdgcefh,中序遍历访问顺序是 dgbaechf,则其后序遍历的结点访问顺序是 ( )。 ( A) bdgcefha ( B) gdbecfha ( C) bdgaechf ( D) gdbehfca 3 一些重要的程序语言 (如 Pascal语言 )允许过程的递归调用,而实现递归调用中的存储分配通常用 ( )。 ( A)栈 ( B)堆 ( C)数组 ( D)链表 4 软件工程的理

2、论和技术性研究的内容主要包括软件开发技术和 ( )。 ( A)消除软件危机 ( B)软件工程管 ( C)程序设计自动化 ( D)实现软件可重用 5 开发软件时对提高开发人员工作效率至关重要的是 ( )。 ( A)操作系统的资源管理功能 ( B)先进的软件开发工具和环境 ( C)程序人员的数量 ( D)计算机的并行处理能力 6 在软件测试设计中,软件测试的主要目的是 ( )。 ( A)实验性运行软件 ( B)证明软件正确 ( C)找出软件中全部错误 ( D)为发现软件错误而执行程序 7 数据处理的最小单位是 ( )。 ( A)数据 ( B)数据元素 ( C)数据项 ( D)数据结构 8 索引属于

3、 ( )。 ( A)模式 ( B)内模式 ( C)外模式 ( D)概念模式 9 下述关于数据库系统的叙述中正确的是 ( )。 ( A)数据库系统减少了数据冗余 ( B)数据库系统避免了一切冗余 ( C)数据库系统中数据的一致性是指数据类型一致 ( D)数据库系统比文件系统能管理更多的数据 10 数据库系统的核心是 ( )。 ( A)数据库 ( B)数据库管理系统 ( C)模拟模型 ( D)软件工程 11 C语言规定,在一个源程序中, main函数的位置 ( )。 ( A)必须在最开始 ( B)必须在系统调用的库函数的后面 ( C)可以任意 ( D)必须在最后 12 下列数据中,不合法的 C语言

4、实型数据的是 ( )。 ( A) 0.123 ( B) 123e3 ( C) 2.1e3.5 ( D) 789.0 13 下面四个选项中,均是不合法的用户标识符的选项是 ( )。 ( A) A P_0 do ( B) float la0_A ( C) b-a goto int ( D) _123 temp int 14 设变量 a是 int型, f是 float型, i是 double型,则表达式 10+a+i*f值的数据类型为 ( )。 ( A) int ( B) float ( C) double ( D)不确定 15 能正确表示逻辑关系 “a)10或 a0”的 C语言表达式是 ( )。

5、( A) a =10 or a =0 ( B) a =0|a =10 ( C) a =10 n-) s=S+1/n; printf(“%6 4fn“, S); 程序运行后输出结果错误,导致错误结果的程序行是 ( A) s=1.0; ( B) for(n=10; n 1; n-) ( C) s=s+1/n; ( D) prind(“%6.4fn“,s); 23 若有语句: char*line5,以下叙述中正确的是 ( A)定义 line是一个数组,每个数组元素是一个基类型为 char的指针变量 ( B)定义 line是一个指针变量,该变量可以指向一个长度为 5的字符型数组 ( C)定义 line

6、是一个指针数组,语句中的 *号称为间址运算符 ( D)定义 line是一个指向字符型函数的指针 24 有以下程序 main() char a,b,C,*d; a=; b=xbc; c=0xab; d=“0127“; princf(“%c%c%c%cn“, a,b,c,*D) ; 编译时出现错误,以下叙述中正确的是 ( A)程序 中只有 a=;语句不正确 ( B) b=xbc;语句不正确 ( C) d=“0127“:语句不正确 ( D) a=;和 c=0xab;语句都不正确 25 有以下程序 int fl(int x.iht y) return x y?x: y; int f2(int x,in

7、t y) return x y?y: X; main() int a=4, b=3 c=5, d,e,f; d=fla,B) ; d=f1(d,C) : e=f2a, B) ; e=f2(e.C) ; f=a+b+c-d-e; printf(“%d,%d,%dn“,d,f,e); 执行后输出的结果是 ( A) 3,4,5 ( B) 13,4 ( C) 5, 4, 3 ( D) 3, 5, 4 26 有以下程序: void fun(char* a,char* B) ; a=b; (*A) +; main() char c1=A,c2=a,*p1,*p2; p1=p+) if(_)s=p; ret

8、urn(*S); main() int x5=12, 21, 13, 6, 18); printf(“%dn“, findmax(x5); 在下划线处应填入的是 ( A) p s ( B) *p *s ( C) ap as ( D) p-a p-s 32 以下程序的输出结果是 main() char cf35=“AAAA“, “BBB“, “CC“; printf(“%s“n“, cf1); ( A) AAAA ( B) BBB ( C) BBBCC ( D) CC 33 以下能正确定义一维数组的选项是 ( A) int a5=0,1, 2, 3, 4, 5); ( B) char a=0,1

9、, 2, 3, 4, 5); ( C) char a=ABC); ( D) int a5=“0123“; 34 有以下程序 main() char s=“ABCD“, *p; for( p=s+1; p s+4;p+) printf(“%sn“, p); 程序运行后的输出结果是 ( A) ABCD BCD CD ( B) A B C D ( C) B C D ( D) BCD CD D 35 已有定义: char a=“xyz“, b=x,y, z);,以下叙述中正确的是 ( A)数组 a和 b的长度相同 ( B) n数组长度小于 b数组长度 ( C) a数组长度大于 b数组长度 ( D)以述

10、说法都不对 36 若要打开 A盘上 user了目录下名为 abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是 ( A) fopen(“A:userabc.txt“,“,“r“) ( B) fopen(“A: userabc.txt“,“r+“) ( C) fopen(“A: userabc.txt“,“rb“) ( D) fopen(“A: userabc.txt“,“w“) 37 以下叙述中错误的是 ( A)二进制文件打开后可以先读文件的末尾,而顺序文件不可以 ( B)在程序结束时,应当用 fclose函数关闭已打开的文件 ( C)在利用 fread函数从二进制文件中读数据时

11、,可以用数组名给数组中所有元素读入数据 ( D)不可以用 FILE定义指向二进制文件的文件指针 38 有以下程序 #include string h main(int argc, char *argv) int i,len=0; for(i=1; i argc; i+)len+=strlen(argvi); printf(“%dn“, len); 程序 编译连接后生成的可执行文件是 exl.exe,若运行时输入带参数的命令行是: exl abcd efg 10回车 则运行的结果是: ( A) 22 ( B) 17 ( C) 12 ( D) 9 39 有以下程序 #define N 20 fun

12、(int a, int n,: Int m) int i,i; for(i=m; i n; i-) ai+1); ai; main() int i, aN=1, 2, 3, 4, 5,6, 7, 8, 9, 10; fuu(a, 2, 9); for(i=0; i 5; i+) printf(“%d“,ai); 程序运行后的输出结果是 ( A) 10234 ( B) 12344 ( C) 12334 ( D) 12234 40 有以下程序 main() int a32=0, (*ptr)2, i, i; for(i=0; i 2; i+) ptr=a+i; scanf(“%d“, ptr);

13、ptr+; for(i=0; i 3; i+) foil(j=0; j 2; j+) printf(“%2d“, aij); printf(“n“); 若运行时输入: 1 2 3回车,则输出结果为 ( A)产生错误信息 ( B) 1 0 2 0 0 0 ( C) 1 2 3 0 0 0 ( D) 1 0 2 0 3 0 41 有以下程序 main() int a3=(1, 2, 3, 4, 5, 0, (*pa) 3, i; pa=a; for(i=0; i 3; i+) if(i 2) pali=pa1 i-1; else pa1i=1; printf(“%dn“ a01+a11+a12);

14、 执行后输出结果是 ( A) 7 ( B) 6 ( C) 8 ( D)无确定值 42 有以下程序段: main) int a=5, *b, *C; c= fun(p); int fun(int *p) ints; p= ( B) main() int *p; fun( int fun(int *p) int s; *p=) ( C) #include main() int *p; fun( int fun(int *p) *p=(int*)malloc(2); ( D) #include main() iht *p; fun(p); iht fun(iht *p) p=(int*)malloc

15、(sizeof(int); 46 有以下程序: Void f(int a, iht i, int j) int t; if(i j) t=ai; ai=aj; aj=t; f(a, i+1, i-1); main() int i, aa5=1, 2,3, 4, 5; f(aa, 0, 4); for(i=0; i 5; i+) printf(“%d“ ,aai);printf(“n“); 执行后输出结果是 ( A) 5,4, 3, 2, 1, ( B) 5,2, 3, 4, 1, ( C) 1,2, 3, 4, 5, ( D) 1,5, 4, 3, 2, 47 不合法的 main函数命令行参数

16、表示形式是 ( A) main(inta,char *c) ( B) mmn(int arc,char *arv) ( C) main(int argc, char *argv) ( D) majn(int argv, char *atgc) 48 有以下程序 point(char *p) p+=3; main() char b4=a b,c, d, *p=b; point(p); printf(“%cn“, *p); 程序运行后的输出结果是 ( A) a ( B) b ( C) c ( D) d 49 程序中若有如下说明和定义语句 Char fun(char *); main() char

17、*s=“one“, a5=0 (*f1)()=fun, ch; 以下选项中对函数 fun的正确调用语句是 ( A) (*f1)(A) ; ( B) *fl(*s); ( C) fun( scanf (“%d“ , if (a 50) print f (“%d“ ,a); if (a 40) print f (“%d“ ,a); if (a 30) printf (“%d“ ,a); 57 以下程序运行后的输出结果是 _。 main ( ) char m; m = B + 32; printf (“%en“ ,m); 58 以下程序运行 后的输出结果是 _。 main inn a=b= c=5:

18、 if (c=a+b) printf ( “yesn); else printf (“non); 59 以下程序运行后的输出结果是 _。 main () int a.b,c; a=10; b=20; c=(a%b )|a/b 1); printf(“%d %d %d n“ ,a,b,c); 60 以下程序运行后的输出结果是 _。 main ( ) int a4 4=1,2,3,4,5,6,7,8,11,12,13,14,15,16,17,18; int i=0.j=0,s=0; while (i+ 4 if (i = 2 | i = 4)continue; j =0; do s += ai j

19、: j+; while (j 4); printf ( “%dn“, s); void fun(int x, int y) 61 以下程序运行后的输出结果是 _。 void fun(int x, int y) x=x+y; y=x-y; x=x-y; printf(“%d,%d,“,x,y); main ( ) int x=2,y=3; fun(x,y); printf(“%d,%dn“,x,y); 62 以下程序运行后的输出结果是 _。 main() char a=“123456789“,*p; int i=0; p=a; while(*p) if (i%2 = 0) *p=*; p+; i

20、+; puts(a); 63 以下程序运行后的输出结果是 _。 main() int i,n=0,0,0,0,0; for(i=1;i =4;i+) ni=ni-1*2+1; printf(“%d“,ni); 64 以下程序运行后的输出结果是 _。 main() / int i,j,a3=1,2,3,4,5,6,7,8,9; for (i=0;i 3;i+) for(j=i+1;j 3;j+) aji=0; for (i=0;i 3;i+) for (j=0;j 3;j+) printf(“%d “,aij); printf(“n“); 65 以下程序运行后的输出结果是 _。 int f(in

21、t a,int n) if(n =l) return f(a,n-1)+an-1; else return 0; main ) int aa5=1, 2, 3, 4, 5, s; s=f(aa,5); printf%dn“,s); 66 下列程序的运行结果是 _。 #include string.h char *ss(char *s) return s+strlen(s)/2; main() char *p,*str=“abcdefgh“; p=ss(str); printf(%sn“,p); 67 下面程序的运行结果是 _。 #define N 10 #define s(x) x*x #de

22、fine f(x) (xx) main() int i1,i2; i1-1000/s(N); i2=1000/f(N); printf(“%d %dn“,i1,i2); 68 以下程序的输出结果是 _。 #define MCRA (m) 2*m #define MCRB (n,m) 2*MCRA (n)+m main() int i-2,j=3; printf(“%dn“,MCRB(j,MCRA(i); 69 以下函数 rotate的功能是 :将 a所指 N行 N列的二维数组中的最后一行放到 b所指二维数组的第 0列中,把 a所指二维数组中的第 0行放到 b所指二维数组的最后一列中, b所指二

23、维数组中其他数据不变。 #define N 4 void rotate(int aN,int bN) int i,j; for(i=0; i N; i+) biN-1=_;_=aN-1i; 国家二级( C语言)笔试模拟试卷 10答案与解析 1 【正确答案】 C 【试题解析】 所谓满二叉树是指这样的一种二叉树:除最后一层外,每一层上的所有结点都有两个子结点。这就是说,在满二叉树中,每层上的结点数都达到最大值,即在满二叉树的第 k层上有 2k-1个结点,且深度为 m的满二叉树有 2m-1个结点。由此可知,本题中叶子结点的个数为 25-1=16。 2 【正确答案】 D 【试题解析】 前序遍历的第一个

24、结点 a为树的根结点;中序遍历中 a左边的结点为 a的左子树, a右边的结点为 a的右子树;再分别对 a的左右子树进行上述两步处理,直到每 个结点都找到正确的位置。 3 【正确答案】 A 【试题解析】 一些较流行的程序语言允许过程的递归调用。递归调用就是过程调用本身。递归实现的是:当过程每一次执行后,都能返回到最近一次调用它的过程中。这样各调用点之间形成一种后进先出关系,而栈结构正适合来存储这些调用点。 4 【正确答案】 B 【试题解析】 软件工程的目标是:在给定的成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求

25、的产品。基于这一目标,软件工程的 理论和技术性研究的内容主要包括软件开发技术和软件工程管理。 5 【正确答案】 B 【试题解析】 软件工程鼓励研制和采用各种先进的软件开发方法、工具和环境,工具和环境的使用又进一步提高了软件的开发效率、维护效率和软件质量。 6 【正确答案】 D 【试题解析】 使用人工或自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件测试是为了发现错误而执行程序的过程。测试要以查找错误为中心,而不是为了演示软件的正确功能。 7 【正确答案】 C 【试题解析】 数据处理的最小单位是数据项。由若干数据项组成数据元素,而数

26、据是指能够被计算机识别、存储和加工处理的信息载体,数据结构是指数据之间的相互关系和数据运算。故正确答案为选项 C)。 8 【正确答案】 B 【试题解析】 内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及 hash等存取方式与存取路径。 9 【正确答案】 A 【试题解析】 数据库系统的数据具有高共享性和低冗余性,但不能完全避免数据冗余;数据的一致性是指在系统中同一数据的不同出现应保持相同的值。 10 【正确答案】 B 【试题解析】 数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操作、数据维护、控制及保护和数据服务等,数

27、据库管理系统是数据库系统的核心。 11 【正确答案】 C 【试题解析】 C程序总是从 main函数开始执行,但 main函数在程序中的位置可以是任意的。 12 【正确答案】 C 【试题解析 】 在 C语言中,实数有两种表示形式。即十进制数形式和指数形式,在指数形式中,字母 e的前面必须有数字,且 e的后面必须是整数。 e3,2.1e3.5, e3, e等都是不合法的指数形式,而 123e3或 123E3都代表 123乘以 10的 3次方。 13 【正确答案】 C 【试题解析】 C语言规定的标识符只能由字母、数字和下划线三种字符组成,第一个字符必须为字母或下划线,并且不能使用 C语言中的关键字作

28、为标识符。选项 C) 中 goto和 int是关键字, b-a中的 “-“不是组成标识符的三种字符之一,所以,均是不合法用户标 识符的选项是 C) 。 14 【正确答案】 C 【试题解析】 根据混合运算规则,如果有一个数据是 double型,则其他数据类型先转化为 double型,运算的结果最终也是 double型。 15 【正确答案】 D 【试题解析】 本题考查 C语言的逻辑表达式及逻辑或 (“|”)运算符的用法。 “|”表示或的意思, “|”是按位或的意思, “&”表示且的意思, C语言中没有 “or”这种运算符。 16 【正确答案】 C 【试题解析】 本题考查逗号表达式的用法。 C语言中

29、逗号 “, ”也是一种运算符,称 为逗号运算符。其功能是把两个表达式连接起来组成一个表达式,称为逗号表达式。逗号表达式的一般形式为:表达式 1,表达式 2,表达式 3, ,表达式n,其值为表达式 n的值。 17 【正确答案】 D 【试题解析】 “&”是求址运算符, “*”是指针变量说明符。选项 A) , B) 应改为scanf(“%d“, p);选项 C) 中指针变量 p未指向一确定的内存单元,不能为其赋值,这样做很危险,建议不使用。 18 【正确答案】 C 【试题解析】 在 C语言中,对于不同类型的数据用不同的格式字符输出,其中, “%d”是按整型数据的实际长度输出,在 “%md”中, m为

30、指定的输出字段的宽度,如果实际数据的位数小于 m,则左端补以空格;若大于 m,则按实际位数输出。 19 【正确答案】 D 【试题解析】 字符 “A”要转换成相应的 ASCII码值,由于运算结果要赋值给 int型变量,所以对 1.6进行取整运算,最后 a的值应是 66。 20 【正确答案】 C 【试题解析】 if语句嵌套使用时, else总是与它上面最近的 if配对。因此,本题中先判断 (a b),因为表达式的值为 0,故不执行下面的 if语句,直接跳到 printf行, c值没有改变。 21 【正确答案】 A 【试题解析】 在本题中 k=n+,为后缀运算。根据其运算规则,首先 n先加一,但 n

31、+表达式的值依然 n原来的值,即 k的值没有改变。选项 A中先给 k赋值为n,然后 n再加 1, k值没有变化,所以这个表达式和本题中表达式等价;选项 B中先 n加 1,然后将 n加 1后的值赋给 k, k变化了比原来的值大 1,所以这个表达式和本题中表达式不等价;选项 C中先计算表达式左边的表达式 +n的值,执行 +n后,左边的表达式的值为 n的值加 1,然后将 n+1后的值赋给 k,所以这个表达式和本题中 的表达式不等价; 选项 D中表达式展开为 k=k/(n+1), k的值发生了变化,所以这个表达式和本题中的表达式不等价所以 4个选项中 A正确。 22 【正确答案】 C 【试题解析】 程

32、序中由于 n为整型,所以 1/n的结果始终为 0,故程序最后输出的结果为 0,其结果错误,原因为在表达式 1/n中 1和 n均为整型,所以应该将 1改为 1.0,这样表达式 1.0/n的值不为 0,为该数学表达式的值,因此我们可以知道导致程序运行后输出结果错误的行为 s=s+1/n;,所以, 4个选项中选项 C符合题意。 23 【正确答案】 A 【试题解析】 理解复杂定义要掌握两点:一、右结合原则本题中的定义char*line5;等价于 char*(line5);二、自外向内分解成 typedef语句。char*(line5);等价于 typedef char*A; A line5;其中 A被

33、 typedef定义成字符指针的别名,然后 line被定义成 A的一维数组,即字符指针的一维数组。再来看看行指针的定义 char(*line)5;它应该被分解成 typedef char B5; B*line;其中B被定义成包含 5个元素的一维 字符数组,然后 line被定义成指向 B的指针,即指向包含 5个元素的一维字符数组的指针。所以两者切不可混淆了,后者的括号不能省略。故本题应该选择 A。 24 【正确答案】 D 【试题解析】 给字符变量赋值只能赋一个字符,包括转义字符,语句 “a=”是错误的,因为 “”是转义字符,应该用 “”来表示,语句 “B=xbc; ”是正确的,它是将一个用十六进

34、制表示的转义字符赋给一个字符型变量,故选项 B不为所选;语句 “c=0xab; ”是正确的,反斜线后的十六进制只可由小写 x开头, 不能用 Ox。语句 “d=“0127“; ”是正确的,可以给字符型指针变量赋一个字符串,其作用是让该指针变量指向该字符串,故选项 C不正确。所以, D选项为所选。 25 【正确答案】 C 【试题解析】 本题考核的知识点是函数的定义与函数调用。函数 f1()的作用是返回形参 x和 y的较大值,函数 f2()的作用是返回形参 x和 y的较小值,在 main()函数中通过调用两次 f1()函数,求得 a、 b、 c的最大值并存放在变量 d中,通过调用两次 f2()函数,

35、求得 a、 b、 c的最小值并存放到变量 e中由程序可知 d值为 5, f的值为 4, e的值为 3,因此最后输出的 d, f、 e的值为 5、 4, 3。所以, C选项为所选。 26 【正确答案】 A 【试题解析】 经过分析得知 fun()函数的功能:将形参 9指向形参 b所指的存储空间,然后使形参 a指向变量的值加 1。在主函数中定义了字符型指针变量 p1和p2,并让它们分另别指向 c1和 c2然后将 p1、 p2作为实参传递给形参 a、 b在fun()函数中,首先让指针变量 p1向 p2,然后 p1指向的存储空间的值加 1,即让变量 c2加 1为 “b”,而 c1的值没有被改变,仍然是

36、“A”。所以, 4个选项中选项 A符合题意。 27 【正确答案】 D 【试题解析】 本题中定义了一个二维数组 c和一个指针数组 p并初始化让它指向c,显然此时 p中的各元素为地址,选项 A中 p+1,此时其中的 1代表的长度是整个;维数组 c的长度,故 p+1将让 p指向 c数组后面的元素,故不能引用 c数组中的成员,故选项 A错误; 同理选项 B和选项 C都不正确,选项 D中 p0指的是指针数组中的第一个元素的地址即 c的首地址,此时的 1的长度代表的是数组 c中一行的长度,故 p0+2代表的是第三行的首地址,而 *(p0+2)将代表第三行的第一个元素的地址,所以, 4个选 项中选项 D符合

37、题意。 28 【正确答案】 D 【试题解析】 C语言中规定:一个数组名代表它的起始地址本题中,定义了一个长度为 10的数组 a并赋初值,数组名 a就是数组的起始地址,由于数组下标是从。开始,因此 a0地址也是 a的值, a1的地址可以用 a+1表示,也就是说 a+1指向数组 a中下标为 1的元素,同样 a+1是 ai的地址, *p=&a3表明指针变量 p指向元素 a3,即 p指向数组 a的第 4个元素 4, p5的值应为数组 a中的第 9个元素的值即 a8的值,即 p5=9,所以 b=9。所以 , 4个选项中选项 D符合题意。 29 【正确答案】 D 【试题解析】 在计算由 &或 组成的逻辑表

38、达式时一定要注意 “短路 ”现象: &是逻辑与,要两边的运算分量同时为真的时候表达式的值才为真,否则为假,若&左边的运算分量为假的时候,无论 &右边的运算分量如何,整个 &表达式的结果都为假,因此 C语言会忽略 &右边的表达式; (逻辑或 )也有同样现象,当 左边为真时将忽略右边的表达式。本题的关键点在于逻辑表达式 i+=1&(+j)=3k+=3的计算。因为 的优先级最低, 所以先计算 左边 的于表达式 i+=1&(+j)=3, 而该表达式中 &的优先级最低,所以先计算i+=1, =的优先级低于 +,所以最先计算的表达式为 i+,该表达式的值为 i自增之前的值 1,因此子表达式 i+=1等价于

39、 1=1结果为 “真 ”,此时的 &运算没有被 “短路 ”继续运算右边的 (+j)=3子表达式,因为表达式 (+j)的值为 6自增之后的值 3,所以子表达式 (+j)=3等价于 3=3结果还是 “真 ”。 “真 ”&“真 ”的结果为 “真 ”,即 运算符的左边运算分量为 “真 ”!注意,此时满足了 “短路 ”的条件, C语言将忽略 |右边的表达式,而将整个 i+=1&(+j)=3k+=3表达式的结果判定为 “真 ”,子表达式 k+=3没有被计算,即变量 k没有自增 !而 i和 j在前面均有得到自增 1的机会,所以, 4个选项中选项 D符合题意。 30 【正确答案】 C 【试题解析】 本题考查的

40、是强制类型转换运算符。强制类型转换运算符的格式是: (类型名 )变量名 所以将浮点型变量 f转换为整型应写作 (int)f,故选项 C是错误的。 31 【正确答案】 B 【试题解析】 在 main()函数中定义了一个具有 5个元 素的 x数组并赋初值,然后调用 findmax()函数求数组中元素的最大值。调用时把数组元素 x的首地址,传给了形参指针变量 a,把 5传给形参 n。在函数 findmax()中定义了两种指针变量 p和 s,其中 s用来记录最大元素的地址, p作为循环控制变量,表示每个元素的地址求最大值的算法是先将第一个元素 (用 s记下它的地址 )做为最大值,然后用最大值 (*s)

41、与后面的每个元素比较 (*p),若后面的元素大,则用 s记下它的地址,所以下划线应填 “*s*s”。所以, 4个选项中 B为所选。 32 【正确答案】 B 【试题解析】 维字符数组可以看成由若干个一维字符数组组成,每行是一个一维字符数组。本题首先定义了一个数组 ch35并给它们按行赋初值,即相当于给ch0赋值 “AAAA”,给 ch1赋值 “BBB”,给 ch2赋值 “BBB”,最后输出转义字符“”、 ch1和转义字符 “”,因此输出为 “BBB”所以, 4个选项中 B为所选。 33 【正确答案】 B 【试题解析】 本题考查的是一维数组的定义及初始化。定义并初始化一维数组的一般形式如下: 类型

42、名 数组名 常量表达式 =初始化列表 ; 当使用初始化列表初始化数组时,需要注意以下几点:初始化列表项的个数必须小于等于常量表达式的值,因此选项 A是错误的;常量表达式可以省略,但不能省略其外面的中括号,因此选项 C是错误的;特殊的,当类型名为 char时, 初始化列表 可以用一个字符串常量来代替,由于字符串常量必须以 0,结尾,所以此时的初始化列表项的个数是字符串常量的长度加 1,选项 D的类型是 int,使用字符串常量来初始化数组是错误的。所以, 4个选项中选项 B符合题意。 34 【正确答案】 D 【试题解析】 本题中首先定义一个字符数组 s,并将字符串 “ABCD”存到数组 s中,定义

43、了一个字符指针变量 p,在接下来 for循环中,循环体共执行了三次,第一次 p指向 31,所以此时输出的 p所指的字符串的值为 BCD,第二次循环 p指向 s2,所以此时输出的 p所指的字符串的值为 CD,第三次循环 p指向 s3,因此此时输出的 p所指的字符串的值为 D。所以, 4个选项中选项 D符合题意。 35 【正确答案】 C 【试题解析】 对字符型一维数组在定义时初始化,既可以使用初始化列表,也可以使用字符串常量。不过由于字符串常量会自动在结尾添加 0字符做结 束标志,所以用字符串常量的初始化列表项个数是字符串的长度加 1。因此题目中的 char a=“xyz“;等价于 char a=

44、x, y, z, 0;,所以 a数组长度大于 b数组长度,应该选 C。 36 【正确答案】 B 【试题解析】 由于 “”是转义字符,所以在文件名中的 “ ”用 “”来表示,因此选项 A和选项 C不正确。要打开文本文件进行读写,应使用读写模式 “r+”,因此选项 D不正确。所以, 4个选项中 B为所选。 37 【正确答案】 D 【试题解析】 顺序文件只能从头读写 ,二进制文件可以随机读写,选项 A正确:文件在使用后应关闭,当程序结束时,应当把打开的文件关闭;用打 fread()函数可以一次性地读取同类型的很多数据,选项 C正确;在 C语言中指向各种文件的文件指针都是通过 FILE来定义的,故选项

45、 D是错误的。所以 4个选项中选D。 38 【正确答案】 D 【试题解析】 main()函数可以带参数,并且参数只能有两个,第一个参数 (argc)类型为整型用来记下命令行的参数个数,第二个参数 (argv)为一个字符型指针数组,其各个元素用来记下命令行各参数字符串的首地址。本题执 行时, argc的值为 4,在循环中依次求出 argv1、 argv2和 argv3指向的字符串 (“abcd“、 “efg“和 “10“)的长度,并把它们加到变量 len中,得到 len的值 9。所以最后输出的 len值为 9,所以 4个选项中 D正确。 39 【正确答案】 C 【试题解析】 数组名可以作为实参传

46、送,由于数组名本身是一个地址值,因此,在函数中对形参数组元素的修改也会相应改变实参数组的元素在本题中,函数fun()通过一个 for循环,将形参数组 a中下标为 n到 m之间的元素向后移动一位, an元素的 值不变。所以主函数调用 fun(a,2,9);之后,数组 a的内容变成1,2,3,3,4,5,5,6,7,8,9,10,最后通过 for循环输出数组前 5个元素为 12334。选项 C符合题意。 40 【正确答案】 D 【试题解析】 本题主要考查的是 scanf()函数的输入原理。 scanf()函数执行时,先从键盘缓冲区中读取用户输入的数据,若缓冲区为空或输入数据少于所需数据,则暂停程序等待用户的输入,直到用户敲入回车, scanf()将继续到键盘缓冲区中读取输入,如此反复直到满足

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

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

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