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

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

1、国家二级( C语言)笔试模拟试卷 150及答案与解析 1 算法的空间复杂度是指 ( A)算法程序的长度 ( B)算法程序中的指令条数 ( C)算法程序所占的存储空间 ( D)执行算法需要的内存空间 2 在结构化程序设计中,模块划分的原则是 ( A)各模块应包括尽量多的功能 ( B)各模块的规模应尽量大 ( C)各模块之间的联系应尽量紧密 ( D)模块内具有高内聚度、模块间具有低耦合度 3 下列叙述中,不属于测试的特征的是 ( A)测试的挑剔性 ( B)完全测试的不可能性 ( C)测试的可靠性 ( D)测试的经济性 4 下面关于对象概念的描述中,错误的是 ( A)对象就是 C语言中的结构体变量

2、( B)对象代表着正在创建的系统中的一个实体 ( C)对象是一个状态和操作 (或方法 )的封装体 ( D)对象之间的信息传递是通过消息进行的 5 下列关于队列的叙述中正确的是 ( A)在队列中只能插入数据 ( B)在队列中只能删除数据 ( C)队列是先进先出的线性表 ( D)队列是先进后出的线性表 6 已知二叉树后序遍历序列是 dabec,中序遍历序列是 debac,它的前序遍历序列是 ( A) acbed ( B) decab ( C) deabc ( D) cedba 7 某二叉树中有 n个度为 2的结点,则该二叉树中的叶子结点数为 ( A) n+1 ( B) n-1 ( C) 2n (

3、D) n/2 8 设有如下三个关系表 下列操作中正确的是 ( A) T=RS ( B) T=R S ( C) T=RS ( D) T=R/S 9 下列叙述中,正确的是 ( A)用 E-R图能够表示实体集间一对一的联系、一对多的联系和多对多的联系 ( B)用 E-R图只能表示实体集之间一对一的联系 ( C)用 E-R图只能表示实体集之间一对多的 联系 ( D)用 E-R图表示的概念数据模型只能转换为关系数据模型 10 下列有关数据库的描述,正确的是 ( A)数据处理是将信息转化为数据的过程 ( B)数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变 ( C)关系中的每一列称为元组,一

4、个元组就是一个字段 ( D)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字 11 下面各选项中,均是 C语言合法标识符的选项组是 ( A) 33 we auto ( B) _23 me _3ew ( C) _43 3e_ else ( D) ER -DF 32 12 下面四个选项中,均是不合法的用户标识符的选项是 ( A) A P_0 do ( B) float la0 _A ( C) b-a goto int ( D) _123 temp int 13 以下对 C语言函数的有关描述中,正确的是 ( A)在 C语言中调用函数时,只能把实参的值

5、传给形参,形参的值不能传送给实参 ( B) C函数既可以嵌套定义又可以递归调用 ( C)函数必须有返回值,否则不能使用函数 ( D)函数必须有返回值,返回值类型不定 14 设变量已正确定义并赋值,以下正确的表达式是 ( A) x=y*5=x+z ( B) int(15.8%5) ( C) x=y+z+5,+y ( D) x=25%5.0 15 现有定义 int a;double b;float c;char k;,则表达式 a/b+c-k值的类型为 ( A) int ( B) double ( C) float ( D) char 16 以下程序的运行结果是 int k=0; void fun

6、(int m) m+=k;k+=m;printf(“m=%d k=%d“,m,k+); main( ) int i=4; fun(i+); printf(“i=%d k=%dn“,i,k); ( A) m=4 k=5 i=5 k=5 ( B) m=4 k=4 i=5 k=5 ( C) m=4 k=4 i=4 k=5 ( D) m=4 k=5 i=4 k=5 17 有以下程序段 int j;float y;char name50; scanf(“%2d%f%s“, j, 当执行上述程序段,从键盘上输入 55566 7777abe后, y的值为 ( A) 55566.0 ( B) 566.0 (

7、C) 7777.0 ( D) 566777.0 18 设有: int a=1,b=2,c=3,d=4,m=2,n=2; 执行 (m=a b) if(x y) if(y 0) z=0; else z+=1; printf(“%dn“,z); ( A) 6 ( B) 7 ( C) 8 ( D) 9 20 若有定义 :float x=1.5;int a=1,b=3,c=2;,则正确的 switch语句是 ( A) switch(x) case 1.0:printf(“*n“); case 2.0:printf(“*n“); ( B) switch(int)x); case 1:printf(“*n“

8、); case 2:printf(“*n“); ( C) switch(a+b) case 1:printf(“*n“); case 2+1:printf(“*n“); ( D) switch(a+b) case 1:printf(“*n“); case c:printf(“*n“); 21 以下程序的输出结果是 main( ) int a,i;a=0; for(i=1;i 5;i+) switch(i) case 0: case 3:a+=2; case 1: case 2:a+=3; default:a+=5; printf(“%dn“,a); ( A) 31 ( B) 13 ( C) 1

9、0 ( D) 20 22 以下描述中正确的是 ( A)由于 do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句 ( B) do-while循环由 d。开始,用 while结束,在 while(表 达式 )后面不能写分号 ( C)在 do-while循环体中,是先执行一次循环,再进行判断 ( D) do-while循环中,根据情况可以省略 while 23 若有以下程序 #include stdio.h int a =2,4,6,8; main( ) int i; int *p=a; for(i=0;i 4;i+) ai=*p; printf(“%dn“,a2);

10、 上面程序的输出结果是 ( A) 6 ( B) 8 ( C) 4 ( D) 2 24 以下数组定义中错误的是 ( A) int x 3=0; ( B) int x23=1,2,3,4,5,6; ( C) int x 3=1,2,3,4,5,6; ( D) int x23=1,2,3,4,5,6; 25 已知字符 A的 ASCII码值是 65,字符变量 c1的值是 A, c2的值是 D。执行语句 printf(“%d,%d“,c1,c2-2) ;后,输出结果是 ( A) A,B ( B) A,68 ( C) 65,66 ( D) 65,68 26 若有定义: int a23;,以下选项中对 a数

11、组元素正确引用的是 ( A) a2!1 ( B) a23 ( C) a03 ( D) a1 2!1 27 下面程序的文件名为 t.exe,在 DOS下输入的命令行参数为 :t to meet me回车 则程序输出的结果是 #include “stdio.h“ main(argc,argv) int argc;char *argv ; int i; printf(“%dn“,argc); ( A) 3 ( B) 4 ( C) 2 ( D)以上答案都不正确 28 阅读下列程序段,则程序的输出结果为 #include “stdio.h“ #define M(X,Y)(X)*(Y) #define N

12、(X,Y)(X)/(Y) main( ) int a=5,b=6,c=8,k; k=N(M(a,b),c); printf(“%dn“,k); ( A) 3 ( B) 5 ( C) 6 ( D) 8 29 以下叙述中错误的是 ( A)改变函数形参的值,不会改变对应实参的值 ( B)函数可以返回地址值 ( C)可以给指针变量赋一个整数作为地址值 ( D)当在程序的开头包含头文件 stdio.h时,可以给指针变量赋 NULL 30 有以下程序 #include stdio.h main( ) FILE *fp;int i,a6=1,2,3,4,5,6; fp=fopen(“d3.dat“,“w+b

13、“); fwrite(a,sizeof(int),6,fp); fseek(fp,sizeof(int)*3,SEEK_SET);/*该语句使读文件的位置指针从文件头向后移动 3个 int型数据 */ fread(a,sizeof(int),3,fp);fclose(fp); for(i=0;i 6;i+)printf(“%d,“,ai); 程序运行后的输出结果是 ( A) 4,5,6,4,5,6, ( B) 1,2,3,4,5,6, ( C) 4,5,6,1,2,3, ( D) 6,5,4,3,2,1, 31 有下面 程序段 #include “stdio.h“ #include “stri

14、ng.h“ main( ) char a320=“china“,“isa“,“bigcountry!“; char k100=0,*p=k; int i; for(i=0;i 3;i+) p=strcat(p,ai); i=strlen(p) ; printf(“%dn“,i); 则程序段的输出结 果是 ( A) 18 ( B) 19 ( C) 20 ( D) 21 32 有以下程序 #include stdio.h void fun(int *a,int n)/*fun函数的功能是将 a所指数组元素从大到小排序 */ int t,i,j; for(i=0;i n-1;j+) for(j=i+

15、1;j n;j+) if(ai aj) t=ai;ai=aj;aj=t; main( ) int c10=1,2,3,4,5,6,7,8,9,0,i; fun(c+4,6); for(i=0;i 10;i+) printf(“%d,“,ci); printf(“n“); 程序的运行结果是 ( A) 1,2,3,4,5,6,7,8,9,0, ( B) 0,9,8,7,6,5,1,2,3,4, ( C) 0,9,8,7,6,5,4,3,2,1, ( D) 1,2,3,4,9,8,7,6,5,0, 33 有以下程序 #include stdio.h int fun(char s ) int n=0;

16、 while(*s =9s+; retum(n); main( ) char s10=6,1,*,4,*,9,*,0,*; printf(“%dn“,fun(s); 程序的运行结果是 ( A) 9 ( B) 61490 ( C) 61 ( D) 5 34 以下函 数返回 a所指数组中最小的值所在的下标值 fun(int *a,int n) int i,j=0,p; p=j; for(i=j;i n;i+) if(ai ap) _; return(p); 在横线处应填入的是 ( A) i=p ( B) ap=ai ( C) p=j ( D) p=i 35 有以下函数 int aaa(char *

17、s) char *t=s; while(*t+); t-; return(t-s); 以下关于 aaa函数的功能的叙述正确的是 ( A)求字符串 s的长度 ( B)比较两个串的大小 ( C)将串 s复制到串 t ( D)求字符串 s所占字节数 36 有以下程序 #include stdio.h #include string.h typedef stmct char name9;char sex;float score2;STU; void f(STU a) STU b=“Zhao“,m,85.0,90.0; int i; strcpy(a.name,b.name) ; a.sex=b.sex

18、; for(i=0;i 2;i+) a.scorei=b.scorei; main( ) STU c=“Qian“,f,95.0,92.0; f(c);printf(“%s,%c,%2.0f,%2.0fn“,c.name,c.sex,c.score0,c.score1) ; 程序的运行结果是 ( A) Qian,f,95,92 ( B) Qian,m,85,90 ( C) Zhao,f,95,92 ( D) Zhao,m,85,90 37 下列选项中错误的说明语句是 ( A) char a =t,o,y,o,u,0; ( B) char a =“toyou0“; ( C) char a =“t

19、oyou0“; ( D) char a =toyou0; 38 已知 int a=1,b=3则 a b的值为 ( A) 3 ( B) 1 ( C) 2 ( D) 4 39 下列程序的输出结果是 #include “stdio.h“ #define M(x,y) x%y main( ) int a,m=12,n=100; a=M(n,m); printf(“%dn“,a-); ( A) 2 ( B) 3 ( C) 4 ( D) 5 40 有以下程序 #include stdio.h void fun(char *t,char *s) while(*t!=0) t+; while(*t+=*s+)

20、!=0); main( ) char ss10=“acc“,aa10=“bbxxyy“; fun(ss,aa); printf(“%s,%sn“,ss,aa); 程序的运行结果是 ( A) accxyy,bbxxyy ( B) acc,bbxxyy ( C) accxxyy,bbxxyy ( D) accbbxxyy,bbxxyy 41 在结构化设计方法中,数据流图表达了问题中的数据流与加工间的关系,并且每一个 _实 际上对应一个处理模块。 42 结构化程序设计的 3种基本结构分别是顺序、选择和 _。 43 二分法查找仅限于这样的表:表中的数据元素必须有序,其存储结构必须是 44 一个模块直接

21、调用的其他模块的模块个数称为 _。 45 数据库系统中实现各种数据管理功能的核心软件是 _。 46 x、 y、 x均为 int型变量,描述 “x、 y和 z中至少有两个为正数 ”的表达式是_。 47 与表达式 a+=b等价的另一书写形式是 _。 48 下列程序的输出结果是 _。 #include stdio.h main0 intx 1,y 1,a 1,b 1; switch(x) case1: switch(y) case 0:a+;break; case 1:b+;break; case2: a+;b+;break; printf(“a %d,b %dn“,a,B); 49 C语言用于结构

22、化程序设计的 3种基本结构是 _、选择结构和循环结构。 50 下列循环的循环次数是 _。 ihtk 2; while(k 0) printf(“%d“,k); k-; printf(“n“); 51 若有定义 floatb15,*p b;,且数组 b的首地址为 200H,则 p/13所指向的数组元素的地址为 _。 52 “printf(“%dn“,strlen(“t“023xABCn“);“语句的输出结果是 _。 53 设有下列宏定义: #define A2 #define B A+3 则执行赋值语句: t b*2; t为血型变量后的值是 _。 54 下列程序的功能是将字符串 s中所有的字符

23、c删除。请填空。 #include stdio.h main() char s80; int i,j; gets(S); for(i j0;si!0;i+) if(si! c)_; sj 0; puts(S); 55 下列程序的运行结果是 _。 #include stdio.h func(a,B) static int m 0,i 2; i+ m+1; m i+a+b; return(m); main0 intk 5,m 3,p; p func(k,m); printf(“%d“,p); p func(k,m); printf(“%dn“,p); 国家二级( C语言)笔试模拟试卷 150答案与

24、解析 1 【正确答案】 D 【试题解析】 算法的 复杂度主要包括算法的时间复杂度和空间复杂度。所谓算法的时间复杂度是指执行算法所需要的计算工作量;算法的空间复杂度是指执行这个算法所需要的内存空间。 2 【正确答案】 D 【试题解析】 在结构化程序设计中,一般较优秀的软件设计尽量做到高内聚、低耦合,这样有利于提高软件模块的独立性,也是模块划分的原则。 3 【正确答案】 C 【试题解析】 软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。它有 3个方面的重要特征,即测试的挑剔性、完全测试的不可能性及测试的经 济性。其中,没有测试的可靠性这一说法。 4 【正确答案

25、】 A 【试题解析】 对象是由数据和容许的操作组成的封装体,与客观实体有直接的对应关系,对象之间通过传递消息互相联系,来模拟现实世界中不同事物彼此之间的联系, B)、 C)、 D)是正确的,对象的思想广泛应用于 C+、 Java等语言中,因此 A)错误。 5 【正确答案】 C 【试题解析】 队列是一种操作受限的线性表。它只允许在线性表的一端进行插入操作,另一端进行删除操作。其中,允许插入的一端称为队尾 (rear),允许删除的一端称为队首 (front)。队列具有先进先出的特点,它是按 “先进先出 ”的原则组织数据的。 6 【正确答案】 D 【试题解析】 依据后序遍历序列可确定根结点为 c;再

26、依据中序遍历序列可知其左子树由 deba构成,右子树为空;又由左子树的后序遍历序列可知其根结点为e,由中序遍历序列可知其左子树为 d,右子树由 ba构成,如下图所示,求得该二叉树的前序遍历序列为选项 D)。 7 【正确答案】 A 【试题解析】 对于任何一棵二叉树 T,如果其终端结点 (叶子 )数为 n1,度为 2的结点数为 n2,则 n1=n2+1,所以该二叉树的叶子结点 数等于 n+1。 8 【正确答案】 C 【试题解析】 对于两个关系的合并操作可以用笛卡尔积表示。设有 n元关系 R和 m元关系 S,它们分别有 p和 g个元组,则 R与 S的笛卡尔积记为 RS,它是一个 m+n元关系,元组个

27、数是 pq,由题意可得,关系 T是由关系 R与关系 S进行笛卡尔积运算得到的。 9 【正确答案】 A 【试题解析】 两个实体之间的联系实际上是实体集间的函数关系,这种函数关系可以有下面几种,即一对一的联系、一对多 (或多对一 )的联系和多对多的联系;概念模型便于向各种模型转换。由于概念模型不依赖于 具体的数据库管理系统,因此,容易向关系模型、网状模型和层次模型等各种模型转换。 10 【正确答案】 D 【试题解析】 数据处理是指将数据转换成信息的过程,故选项 A)叙述错误;数据的物理独立性是指数据的物理结构的改变,不会影响数据库的逻辑结构,故选项 B)叙述错误;关系中的行称为元组,对应存储文件中

28、的记录,关系中的列称为属性,对应存储文件中的字段,故选项 C)叙述错误。 11 【正确答案】 B 【试题解析】 合法的标识符是由字母、数字和下画线组成,并且第一个字符必须为字母或下画线,用户定义的标 识符不能与关键字相同。选项 A),数字不能为第一个字母, auto为关键字;选项 C)中,也是数字不能为第一个字母, else为关键字;选项 D)中负号不合法。 12 【正确答案】 C 【试题解析】 C语言规定的标识符只能由字母、数字和下画线 3种字符组成,第一个字符必须为字母或下画线,并且不能使用 C语言中的关键字作为标识符。选项 C)中 goto和 int是关键字, b-a中 “-”不是组成标

29、识符的 3种字符之一;选项 D)中 int是关键字,所以,均是不合法用户标识符的选项是 C)。 13 【正确答案】 A 【 试题解析】 C语言中的函数可以进行递归调用,但是不能在函数中定义函数,函数可以没有返回值,若有返回值,则返回值类型必确定。 14 【正确答案】 C 【试题解析】 求余运算符 “%” 两边的运算对象必须是整型;而选项 B)和 D)中“%” 两边的运算对象有浮点整数据,所以选项 B)和 D)是错误的表达式。在选项 A)中赋值表达式的两边出现相同的变量 x,也是错误的;选项 C)是一个逗号表达式,所以正确答案为 C)。 15 【正确答案】 B 【试题解析】 双目运算中两边运算量

30、类型转换规律: 运算数 1 运算数 2 转换结果类型 短整型 长整型 短整型 -长整型 整型 长整型 整型 -长整型 字符型 整型 字符型 -整型 有符号整型 无符号整型 有符号整型 -无符号整型 整型 浮点型 整型 -浮点型 在 a/b的时候, a、 b的类型不一致,根据类型转换规则,把整型转换成 double类型,之后的加、减类似。转化规则为 char,shortintunsignedlongd oublefloat 。 16 【正确答案】 B 【试题解析】 由于在 main( )函数中,变量 i=4,所以就调用 fun(4),则输出“m=4 k=4”。然后变量 k增 1等于 5,变量 i

31、增 1等于 5,所以 main( )函数的 “printf(“i=%dk=%d n“,i,k);”语句输出 “i=5 k=5”。 17 【正确答案】 B 【试题解析】 本题考查通过 scanf函数输入数据时的格式控制问题。变量 j的格式控制为 “%2d” ,即只接收输入数据的前两位,从第三位开始直到空格之间的输入都会被保存到 变量 y中,因为 y为浮点型数据,所以输出结果为选项 B)。 18 【正确答案】 B 【试题解析】 本题考查逻辑与运算的运算规则。其规则是:当运算符前后两个条件表达式都满足时,其最终结果才为真。当发现第一个表达式的值为假时,计算机将不再执行后面表达式的运算。本题中,由于前

32、一个表达式的值为 “假 ”,所以后面的表达式不再进行运算,因而 n的值保持不变,仍为 2。 19 【正确答案】 D 【试题解析】 ifelse 语句的执行过程如下,首先计算 if后面一对圆括号内表达式的值,若表达式的值为非 0,执行 if子 句,然后跳过 else子句,去执行 if语句后的下一条语句;若表达式的值为 0,跳过 if子句,去执行 else子句,接着去执行if语句后的下一条语句。 C语言的语法规定, else子句总是与前面最近的不带 else的 if匹配,与书写格式无关,本题目的后一个 if-else相当于嵌套在第一个 if子句里,相当于 x=0时, z=z+1。 20 【正确答案

33、】 C 【试题解析】 C语言中, switch语句专用于实现多分支结构程序,其特点是各分支清晰而直观。 switch后面括号中可以是任何表达式,取其整数部分与各常量表达式进行 比较。常量表达式中不能出现变量,且类型必须是整型、字符型或枚举型,各常量表达式各不相同。 21 【正确答案】 A 【试题解析】 本题考查用于多分支选择的 switch语句,其一般形式为: switch(表达式 ) case常量表达式 1:语句 1; case常量表达式 2:语句 2; case常量表达式 n:语句 n; default:语句 n+1; 其语义是:计算表达式的值,并逐个与其后的常量表达式值进行比较,当表达式

34、的值与某个 常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有 case后的语句;如表达式的值与所有 case后的常量表达式均不相等时,则执行 default后的语句。 22 【正确答案】 C 【试题解析】 do-while语句的一般形式为: do循环体语句 while(表达式 );,其中循环体语句可以是复合型语句,但必须用花括号括起来。 while后必须要有分号作为语句的结束,在 do-while循环中,不可以省略 while。 23 【正确答案】 D 【试题解析】 在 C语言中,数组元素下标 是从 0开始的;指针变量 p指向数组的首地址。 for循环语句中,指针变量

35、 p始终指向数组的首地址,因而执行循环赋值语句后数组各元素的值均变为 2。 24 【正确答案】 B 【试题解析】 二维数组的初始化有以下几种形式: 分行进行初始化; 不分行进行初始化; 部分数组元素进行初始化; 省略第一维的定义,不省略第二维的定义。选项 B) 等号右边分了 3行,大于等号左边数组的行数 2。 25 【正确答案】 C 【试题解析】 在 C语言中,字符型数据在内存中的存储形式是 ASCII码值。当需要以整型格式输出字符 时,输出的也是 ASCII码值。字符 “A”和 “D”的 ASCII码值分别为 65和 68。 26 【正确答案】 D 【试题解析】 C语言中数组下标是从 0开始

36、的,所以二维数组 a23的第一维下标取值为 0、 1;第二维的下标取值为 0、 1、 2,因而选项 A)、 B)、 C)都是错误的,选项 D)表示数组元素 a00。 27 【正确答案】 B 【试题解析】 argc中存入的是命令行中字符串的个数。 argv是一个指向字符型的指针数组的指针。 28 【正确答案】 A 【试题解析】 带参数的宏定义 命令行形式如下: #define宏名 (形参表 ) 替换文本。首先进行 M的宏替换,之后再进行 N的宏替换,替换后的表达式为 (a)*(b)/(C)。 29 【正确答案】 C 【试题解析】 函数形参和实参分别占用不同的内存单元,改变形参的值不会影响对应实参

37、的值,选项 A) 正确。指针类型的函数可以返回地址值,选项 B)正确。在文件 stdio.h中, NULL被定义为 void型的指针,选项 D)也正确。指针变量的值只能是存储单元地址,而不能是一个整数,选项 C)错误。 30 【正确答案】 A 【试题解析】 首 先利用 fwrite函数将数组 a中的数据写到文件中,接着 fseek函数的功能是读文件的位置,指针从文件头向后移动 3个 int型数据,这时文件位置指针指向的是文件中的第 4个 int数据 “4”,然后 fread函数将文件 fp中的后 3个数据 4,5,6读到数组 a中,这样就覆盖了数组中原来的前 3项数据。最后数组中的数据就成了

38、4,5,6,4,5,6。 31 【正确答案】 B 【试题解析】 字符串连接函数 strcat的调用形式如下: strcat(s1,s2)。此函数将s2所指字符串的内容连接到 s1所指的字符串后面, 并自动覆盖 s1串末尾的尾标,函数返回 s1的地址值。 32 【正确答案】 D 【试题解析】 在本题中,主函数在调用 fun( )函数进行排序时,传递的参数是c+4和 6, fun( )函数实现的功能是将数组 c的第 5个元素开始的 6个元素依次进行从大到小的顺序排列。排序之后,数组 c的内容变为 1,2,3,4,9,8,7,6,5,0。 33 【正确答案】 C 【试题解析】 在 fin函数中, w

39、hile循环的功能是:逐个取字符数组 s的字符判断其是否是数字。若是则将其作为个位数字保存到变量 n中, n的原数据 的各个数位将相应左移一个十进制位。当指针 s指向数组的第 3位时,循环条件不成立,循环结束,返回 n的值,输出 n的值为 61。 34 【正确答案】 D 【试题解析】 该程序先判断 ai ap,如果条件为真,则 ai比当前设定的最小值小 (p保留的当前最小元素的下标 ),那么将 i赋给 p,即将比较过的最小元素下标保留在 p中,作为下面判断的标准。 35 【正确答案】 A 【试题解析】 循环开始前,指针 t和 s都指向字符串的起始位置,然后通过while循环判断 t指向的位置是

40、否为空,同时让 t向右移动一位 。 while循环结束时, t自减 1,此时 t指向的位置是字符串的结束标志 “0”处,故 t-s的值是字符串的长度,并不包括结束标志。 36 【正确答案】 A 【试题解析】 本题考查的是函数调用时的参数传递问题。程序在调用函数 f时,传给函数 f的参数只是结构变量 c在栈中的一个副本,函数 f的所有操作只是针对这个数据副本进行的修改,这些都不会影响变量 c的值。 37 【正确答案】 D 【试题解析】 通过赋初值的方式给一维数组赋字符串,可以用给一般数组赋初值的相同方式给一维字符数组赋字符串,也可以在赋值时 直接赋字符串常量。选项B)和 C)后面的 “0”是多余

41、的,在 C语言中,系统会自动在字符串的结尾处加上一个字符 “0”作为串的结束标记。 38 【正确答案】 C 【试题解析】 是按位异或运算,如果对应位不同则结果为 1,相同则为 0。 39 【正确答案】 C 【试题解析】 带参数的宏定义命令行形式如下: #define宏名 (形参表 )替换文本 在编译的时候编译预处理程序用 “替换文本 ”来替换宏,即 M(n,m)被替换为n%m,之后计算,将计算的结果赋给 a。注意,宏替换是在编译时由预处理程序完成的,宏替换不占用运行的时间,而函数调用是在程序运行时进行的,在函数的调用过程中需要占用一些处理时间。 40 【正确答案】 D 【试题解析】 本题中 f

42、un函数实现了字符串函数 strcat的功能,将字符串 aa连接到字符串 ss的末尾。调用 fun函数时,形参 t和 s分别指向了字符串 ss和 aa,然后通过一个 while循环使 t指向字符串 ss的结束符的位置,第二个 while循环将字符串 aa中的字符 (包括结束符 “0”)逐个复制到字符串 ss的末尾处。 41 【正确答案】 加工 【试题解析】 数据流图是 从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。其中的每一个加工对应一个处理模块。 42 【正确答案】 重复或循环 【试题解析】 结构化程序设计包括 3种基本的结构:顺序结构、选择结构和重复结构 (循环结构 ),

43、利用这 3种结构就足以表达出其他各种形式结构的程序设计方法。利用循环结构,可以简化大量的程序执行。 43 【正确答案】 顺序存储 (顺序方式存储 ) 【试题解析】 二分法查找对表的要求是有序的顺序表,即第一要求是数据元素有序,第二要求是按顺序方式存储。 44 【正确答案 】 扇出 【试题解析】 在结构图中,调用一个给定模块的模块个数称为扇入,一个模块直接调用的其他模块个数称为扇出。 45 【正确答案】 数据库管理系统 【试题解析】 数据库管理系统是数据库的管理机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等。 46 【正确答案】 (x 0)&(y 0)

44、(x 0)&(z 0)(y 0)&(z 0) 【试题解析】 题目要求 “x、 y和 z中至少有两个为正数 ”,即 x、 y和 z这 3个数中必须有两个是正数, 且这 3个数中的哪两个数都有可能是正数,所以它们之间是或的关系。 47 【正确答案】 a a+b 【试题解析】 a+ b与 a a+b等价,作用是把变量 a的值加 b后再赋给变量a。 48 【正确答案】 a 2,b 3 【试题解析】 分析程序,程序从 x l语句开始执行,之后执行第一个 switch语句, switch(x) switch(1),所以执行 case1,casel语句中包含一个复合 switch语句;这时执行第二个 swi

45、tch语句,此时 y 1,所以 switch(y) switch(1),因 此执行 case1,将 b加 1,得到 b 2,遇到 break语句,退出第二个 switch语句,则整个 case 1的复合语句执行完毕,由于在这个 case 1的后面没有 break语句使其退出第一个 switch语句,所以接着执行下列的 case 2后面的语句,即将 a、 b各加1,得到 a 2,b 3。 49 【正确答案】 顺序结构 【试题解析】 结构化程序有 3种基本结构,即顺序结构、选择结构 (包括 if语句和 switch语句 )和循环结构 (包括 for语句、 while语句、 dowhile 语句 )

46、。 50 【正确答案】 0 【试题解析】 解答本题需要注意表达式 “k 0”,它是赋值表达式而不是关系表达式,不论 k为何值,表达式 k 0总会使 k为 0,所以不能进入循环。 51 【正确答案】 252H 【试题解析】 要解答本题,首先要明白在对指针进行加、减运算时,数字 “1“不是十进制数的 “1“,而是指 “1“个存储单元长度。 1个存储单元长度占存储空间的多少,应该视具体情况而定,如果存储单元的基类型是 int型,则移动 1个存储单元的长度就是位移 2个字节;如果存储单元基类型是 float型,则移动 1个存储单元的长度就是位移 4个字节。所以旷 13所指向的数组元素的地址为:200H

47、+(13*4)H 252H。 52 【正确答案】 6 【试题解析】 strlen()函数的作用是计算字符串的长度并作为函数的返回值,这里的长度不包括串尾的结束标志 0。 t是转义字符,代表横向跳若干格: “是转义字符,代表双引号: 023只代表一个字符,而不管转义字符后面有几个字符; xAB是以两位十六进制数 AB表示的 ASCII码字符,只代表一个字符; n是转义字符,代表回车换行。 5个字符常量各代表一个字符 ,再加上字母 C,所以返回的长度是 6。 53 【正确答案】 8 【试题解析】 本题考查带参数的宏定义及相关运算。运算过程为: t -B*2A+3*2 2+3*2 8。 54 【正确答案】 sj+ si 【试题解析】 循环开始后如果数组 s中储存值与字符 c相同,则 i+直接跳过当前值;如果不相同,则将当前值赋予数组指定位置,并通过 j+将下标加 1,指向下一元素要存储的位置。 55 【正确答案】 11 23 【试题解析】 在主函数中第一次调用 func子函数时, m 0,i 2,i i+m+1 3,m i+a+b 3+5+3 11。因为在子函数中将 m和 i定义成了 static类型,所以在子函

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

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

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