1、国家二级( C语言)笔试模拟试卷 99及答案与解析 1 算法的空间复杂度是指 ( A)算法程序的长度 ( B)算法程序中的指令条数 ( C)执行算法程序所占的存储空间 ( D)算法执行过程中所需要的存储空间 2 线性表的链式存储结构是一种 ( A)随机结构 ( B)顺序结构 ( C)索引结构 ( D)散列结构 3 设有下列二叉树: 对此二叉树先序遍历的结果是 ( A) ABCDEF ( B) DBEAFC ( C) ABDECF ( D) DEBFCA 4 编制一个好的程序,首先要保证它的正确性和可靠性, 还应强调良好的编程风格,在书写功能性注释时应考虑 ( A)仅为整个程序作注释 ( B)仅
2、为每个模块作注释 ( C)为程序段作注释 ( D)为每个语句作注释 5 下列哪个面向对象程序设计不同于其他语言的主要特点 ( A)继承性 ( B)消息传递 ( C)多态性 ( D)静态联编 6 需求分析最终结果是产生 ( A)项目开发计划 ( B)需求规格说明书 ( C)设计说明书 ( D)可行性分析报告 7 在进行单元测试时,常用的方法是 ( A)采用白盒测试,辅之以黑盒测试 ( B)采用黑盒测试,辅之以白 盒测试 ( C)只使用白盒测试 ( D)只使用黑盒测试 8 数据库是 ()的集合,它具有统一的结构格式并存放于统一的存储介质,可被各个应用程序所共享 ( A)视图 ( B)消息 ( C)
3、数据 ( D)关系 9 下列叙述中,不正确的是 ( A)数据库技术的根本目标是要解决数据共享的问题 ( B)数据库系统中,数据的物理结构必须与逻辑结构一致 ( C)数据库设计是指设计一个能满足用户要求,性能良好的数据库 ( D)数据库系统是一个独立的系统,但是需要操作系统的支持 10 规范化理论中,分解 ()是消除其 中多余的数据相关性 ( A)关系运算 ( B)内模式 ( C)外模式 ( D)视图 11 以下叙述中正确的是 ( A)构成 C语言程序的基本单位是函数 ( B)可以在一个函数中定义另一个函数 ( C) main()函数必须放在其他函数之前 ( D)所有被调用的函数一定要在调用之前
4、进行定义 12 以下选项中合法的实型常数是 ( A) 5E2.0 ( B) E-3 ( C) 2.00E+00 ( D) 1.3E 13 以下选项中合法的用户标识符是 ( A) long ( B) _2Test ( C) 3Dmax ( D) A.dat 14 已知大写字母 A的 ASCII码值是 65,小写字母 a的 ASCII码是 97,则用八进制表示的字符常量 101是 ( A)字符 A ( B)字符 a ( C)字符 e ( D)非法的常量 15 以下非法的赋值语句是 ( A) n=(i=2, +i); ( B) j+; ( C) +(i+1); ( D) x=j 0; 16 设 a和
5、 b均为 double型变量,且 a=5.5、 b=2.5,则表达式 (int)a+b/b的值是 ( A) 6.5 ( B) 6 ( C) 5.5 ( D) 6 17 已知 i、 j、 k为 int型变量,若从键盘输入: 1, 2, 3回车,使 i的值为 1、 j的值为 2、 k的值为 3,以下选项中正确的输入语句是 ( A) scanf(“%2d%2d%2d”, printf(“%dn“, num); ( D) 1 1 1 1 2 2 2 3 3 4 23 下面的关键字中,不能够从循环体中跳到循环体外的是 _。 ( A) goto ( B) break ( C) return ( D) co
6、ntinue 24 以下各选项企图说明一种新的类型名,其中正确的是 _。 ( A) typedef vl int; ( B) typedef v2=int ( C) typedef int v3; ( D) typedef v4: int 25 为了避免嵌套的 if-else的二义性, C语言规定: else与 _配对。 ( A)缩排位置相同的 if ( B)其之前最近的 if ( C)其之后最近的 if ( D)同一行上的 if 26 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是 v。 ( A)地址传递 ( B)单向值传递 ( C)由实参传给形,再由形参传回实参 ( D
7、)传递方式由用户指定 27 以下函数值的类型是 _。 fun(float x) float y; y=3*x-4; return y; ( A) int ( B)不确定 ( C) void ( D) float 28 以下选项中,非法的字符常量是 _。 ( A) t ( B) 17 ( C) n ( D) xaa 29 以下程序的输出结果是 _。 #include stdio main() int a=200; #define a 100 printf(“%d“, a) ; #undefa printf(“%d“,a) ; ( A) 200 100 ( B) 100 100 ( C) 100
8、200 ( D) 200 200 30 若有说明 int i,j=2, *p= printf(“%s“str); ( A) xyzabcABC ( B) abcABC ( C) xyzabc ( D) xyzABC 35 以下数组定义中不正确的是 _。 ( A) int a23; ( B) int b3=0, 1,2; ( C) int c1001000; ( D) int d3=1,2, 1,2,3, 1,2, 3,; 36 以下程序的输出结果是 _。 main() int a44=1, 3, 5, 2, 4,6, 3, 5, 7; printf(“%d%d%d%dn“,a03,a12,a2
9、1,30); ( A) 650 ( B) 1470 ( C) 5430 ( D)输出值不定 37 在说明语句 int *f();中,标识符 f代表的是 _。 ( A)一个用于指向整型数据的指针变量 ( B)一个用于指向一维数组的行指针 ( C)一个用于指向函数的指针变量 ( D)一个返回值为指针型的函数名 38 以下程序的输出结果是 _。 main() char st20=“hello、 0t“; printf(“%d%dn“,strlen(st),sizeof(st); ( A) 99 ( B) 520 ( C) 1320 ( D) 2020 39 以下程序运行后的输出结果是 _。 int
10、d=1; fun(int p) static int d=5; d+=p; printf(“%d“, D) ; return d; main() int a=3; printf(“%dn,fun (a+fun(D) ); ( A) 699 ( B) 669 ( C) 61515 ( D) 6615 40 以下选项中,不能正确赋值的是 _。 ( A) char s110; s1=“chest“; ( B) char s2=C, t, e, s, t; ( C) char s3 20=“Chest“; ( D) char * s4=“Cestn“ 41 以下程序输出正确的是 _。 amovep(i
11、nt *P, int(*A) 3, int n) int i,j; for(i=0; i n;i+ for(j=0;j n;j+) *p=aij; p+; main() int *p,a33=1, 3, 5, 2, 4, 6; p=(int*)malloc(100); amovep(p,a, 3); printf(“%d%dn“, p2, p5); free(p); ( A) 56 ( B) 25 ( C) 34 ( D)程序错误 42 下面程序的输出结果是 _。 #define a 121 const b=12; enum ca1,a2; main() printf(“%d,%d,%d“,s
12、izeof(a) ,sizeof(b) ,sizeof(enum c) ); ( A) 121, 0, 4 ( B) 2,2,2 ( C) 0,2, 4 ( D) 0,2,2 43 以下程序的输出结果是 _。 struct HAR int x,y; struct HAR*p; h2; main() h0,x=1;h0.y=2; h1x=3; h1.y=4; h0 p、 h1 .p=h; printf(“%d%dn“, (h0 p)- x,(h1.p)- y; ( A) 12 ( B) 23 ( C) 14 ( D) 32 44 变量 a所占的内存字节数是 _。 ( A) 4 ( B) 5 (
13、C) 6 ( D) 8 union U char st4; int i; long l; ; Struct A int c; union U u; a; 45 以下程序的结果是 _ 。 int a,b; void fun() a=100; b=200; main() int a=5,b=7; fun() printf(“%d%dn“, a, b) ; ( A) 100200 ( B) 57 ( C) 200100 ( D) 75 46 以下程序的输出结果是 _。 #define M(x,y,z) x*y+z main() int a=1,b=2,c=3; printf(“%dn“,M(a+b,
14、b+c,c+a) ); ( A) 19 ( B) 17 ( C) 15 ( D) 12 47 若有以下说明和语句: struct stint n; char * ch;; struct st a3=5,“abc“, 7, “def“,9, “ghk“, *p=a; 则值为 6的表达式是 _。 ( A) p+- n ( B) p- n+ ( C) (*p).n+ ( D) +p- n 48 整型变量 X和 Y的值相等,且为非 0值,则以下选项中结果为 0的表达是 _。 ( A) X|Y ( B) X|Y ( C) X int i; myf=fopm(fname, “w“); for(i=0; i
15、 strlen(st); i+)fputc(sti,myf); fclose(myf); main()fun(“test.t“,“new world“);fun(“test.t“,“hello,“); ( A) hello, ( B) new worldhello ( C) new world ( D) hello.rld 51 栈的基本运 算有三种:入栈、退栈和【 】。 52 在面向对象方法中,信息隐蔽是通过对象的【 】性来实现的。 53 数据流的类型有【 】和事务型。 54 数据库系统中实现各种数据管理功能的核心软件称为【 】。 55 关系模型的数据操纵即是建立在关系上的数据操纵,一般有【
16、 】、增加、删除和修改四种操作。 56 表示 “整数 x的绝对值大于 5“时值为 “真 “的 C语言表达式是【 】。 57 以下程序的输出结果是【 】。 main() unsigned short a=65536; int b; printf(“%dn“, b=A) ; 58 若有定义 int a=10,b=9,c=8;,接着顺序执行下列语句,变量 b中的值是【 】。 c=(a-=(b-5); c=(a%11)+(b=3); 59 以下程序运行后的输出结果是 【 】 。 main() int p=30; printf(“%dn“,(p/3 0?p/10: p%3); 60 函数 pi的功能是根
17、据以下近似公式求 值: (*)/6=1+1/(2*2)+1/(3*3)+1(n*n) 现在请你在下面的函数中填空,完成求 的功能。 #include “math.h“ double s=0.0; long i; for(i=1; i =n; i+)s=s+ 【 】 ; return(sqrt(6*s); 61 函数 pi的功能是根据以下公式近似求得的: pi*pi/6=1+1/(2*2)+1/(3*3)+1/(n*n) 请在下面的函数中填空,完成求 pi的功能。 #include math.h double pi(long n) doubles=0.0,long i; for(i=1; i =
18、n; i+)s=s+ 【 】 ; return(sqrt(6*s); 62 若输入字符串: abcde,则以下 while循环体将执行【 】次。 while(ch=getchar()=e)printf(“*“); 63 以下函数用来求出两整数之和,并通过形参将结果传回,请填空。 void func(int x,int y, 【 】 z) *z=x+y; 64 若有以下定义,则不移动指针 p,且通过指针 p引用值为 98的数组元素的表达式是【 】。 int w10=23,54,10,33,47,98,72,80,61, *p=w; 65 设在主函数中有以下定义和函数调用语句,且 fun函数为 v
19、oid类型;请写出fun函数的首部 【 】 。要求形参名为 b。 main() double s1022; int n; fun(s); 66 有以下程序: int f(int n) if(n=1)return 1; else return f(n-1)+1; main() int i,j=0; for(i=1; i 3; i+)j+t(i); printf(“%dn“,j); 程序运行后的输出结果是 【 】 。 67 以下程序的输出结果是 【 】 。 void fun() static int a=0; a+=2; printf(“%d“, A) ; main() int cc; for(c
20、c=1; cc 4; cc+)fun(); printf(“n“); 68 以下程序的输出结果是 【 】 。 #define MAX(x, y) (x) (y)?(x): (y) main() int a=5, b=2, c=3, d=3, t; t=MAX(a+b, c+D) *10; printf(“%dn“,t); 69 实现程序可将磁盘中的一个文件复制到另一个文件中,两个文件的文件名在可执行命令的命令行中 (相当于 copy命令 ),假定文件在当前目录下。请补全程序。 #include stdio.h void main(int argc,char*argv) FILE*f1, *f2
21、; if(argc 【 】 ) printf(“parameter error!n“); exit(0); f1=fopen(argv1, “r“); f2=fopen(argv2,“w“); while( 【 】 )fputc(fgetc(f1), f2); fclose(f1); fclose(f2); 国家二级( C语言)笔试模拟试卷 99答案与解析 1 【正确答案】 D 【试题解析】 算法的空间复杂度一般是指这个算法执行时所需要的内存空间,其中包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间,其中额外空间还包括算法程序执行过程的工作 单元以及某种数
22、据结构所需要的附加存储空间。 2 【正确答案】 B 【试题解析】 线性表的链式存储结构中的每一个存储结点不仅含有一个数据元素,还包括指针,每一个指针指向一个与本结点有逻辑关系的结点。此类存储方式属于顺序存储。 3 【正确答案】 C 【试题解析】 二叉树的遍历分为先序、中序、后序三种不同方式。本题要求先序遍历;遍历顺序应该为:访问根结点 -先序遍历左子树 -先序遍历右子树。按照定义,先序遍历序列是 ABDECF。 4 【正确答案】 C 【试题解析】 功能性注释是嵌在源程序体中的,用以描述其后的语句或程序段是在做什么工作,或者执行了下面的语句会怎么样。所以它描述的是一段程序,是为程序段做注释,而不
23、是每条语句。 5 【正确答案】 A 【试题解析】 继承是一个子类直接使用父类的所有属性和方法。它可以减少相似的类的重复说明,从而体现出一般性与特殊性的原则,这使得面向对象程序设计语言有了良好的重用性,也是其不同于其他语言的主要特点。 6 【正确答案】 B 【试题解析】 需求分析应交付的主要文档就是需求规格说明书。 7 【 正确答案】 A 【试题解析】 白盒测试是测试程序内部逻辑结构,黑盒测试只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。从程序内部的逻辑结构对系统进行测试才是测试的根本,更容易发现和解决程序中的问题,因此单元测试时应该以白盒测试为主,而黑盒测试为辅。 8 【正确
24、答案】 C 【试题解析】 数据库是数据的集合,其中的数据是按数据所提供的数据模式存放的,它能构造复杂的数据结构,以建立数据之间的内在联系与复杂的关系。 9 【正确答案】 B 【试题解析】 数据库应该具有物理独立 性和逻辑独立性,改变其 而不影响另一个。 10 【正确答案】 A 【试题解析】 数据库规范化的基本思想是逐步消除数据依赖中不合适的部分,根本思想是通过分解关系运算来消除多余的数据相关性。 11 【正确答案】 A 【试题解析】 根据函数的定义语法规定,在 C语言程序中,不能嵌套定义,即不能在函数中再定义函数; main()函数在 C语言程序中是必须的,但函数可以放在程序中的任意位置;当在
25、所有函数的外部、被调用之前说明函数时,在函数说明后面的任何位置上都可以对函数进行调用。函数说明也可以放在调用函 数的说明部分,如在 main函数内部进行说明,则只能在 main函数内部才能识别函数。 12 【正确答案】 C 【试题解析】 在 C语言中,实数有两种表示形式:十进制数形式与指数形式。 1)一般形式的实数:小数形式的实数由整数部分、小数点和小数部分组成 (必须要有小数点 )。 2)指数形式的小数:指数形式的实数由尾数部分、 e(E)和指数部分组成 (字母 e或E的前后必须要有数字,且其后面的指数必须为整数 )。选项 A中, 5E2.0中 E后面的 2.0不是整数;选项 B中, E前面
26、没有数字;选项 D中, E后面没有数 字。 13 【正确答案】 B 【试题解析】 在 C语言中,合法的标识符由字母、数字和下划线组成,并且第一个字符必须为字母或者下划线, long为 C语言的保留字,不能作为用户标识符。 3Dmax开头的第一个字符为数字,而 C语言规定,第一个字符必须为字母或者下划线; A.dat中的字符 “.”不符合 C语言中用户标识符规定。 14 【正确答案】 A 【试题解析】 题目中的关键是八进制 101的十进制是多少。八进制的 101转换为十进制为 65,也就是字符 A的 ASCII码。 15 【正确答案】 C 【试题解析】 在表达式的运算中,双目赋值运算符的格式为
27、“变量 =表达式 ”,单目运算符一般形式为 “运算符表达式 ”或 “表达式运算符 ”。常量和表达式是不能被赋值的。选项 A为复合表达式,首先计算 (i=2, +i)的值,然后赋值给 n;选项 B为简单自加运算;选项 C在表达式 +(i+1);中, (i+1)不是变量,该表达式的值为常量,而在 +运算中,其运算对象必须为变量;选项 D中为复合赋值表达式。 16 【正确答案】 D 【试题解析】 在这个表达式中,优先级最高的是 (int)a,也就是对 5.5取整,结果是 5,其次是 b/b,即 2.5/2.5,结果是 1.000000,最后相加结果为 6.000000(表达式的最终结果为实型 )。
28、17 【正确答案】 C 【试题解析】 输入函数 scanf使用该语句时,要求除格式控制符以外的字符都要原样输入, “, ”为非格式符,要原样输入。选项 A,输入格式描述为“%2d%2d%2d”,输入要用空格隔开,不满足键盘输入 1, 2, 3的条件;选项 B中,输入格式描述符为 “%d %。 d %d”,输入也要用空格隔开;选项 D中,输入格式描述符为 “i=%d, j=%d, k=%d”,应该从键盘输入 i=1, j=2, k=3,才能使得 i, j, k的值为 1, 2, 3。 18 【正确答案】 C 【试题解析】 在该题中, x的 n次方应该调用函数 pow(x, n)计算, pow(x
29、, n)的参数写反了。 19 【正确答案】 B 【试题解析】 x为一个长整型的变量,而且是一个十进制的数,它的输出控制符是 “%1d”;由于 C语言中是区分大小写的, “1d”中的 “d”不能为大写。 20 【正确答案】 C 【试题解析】 在复合赋值语句中,应该由右向左依次赋值,在表达式中,右端由i* =k得 i=2*2为 4, k=k+i,即 k值为 6, m=k故 m=6。 21 【正确答案】 A 【试题解析】 C语言中比较表式的运算结果为 0或 1。 0代表不成立, 1表示成立。 22 【正确答案】 2 【试题解析】 while的执行过程是:先计算条件表达式的值,若成立则执行循环体,重复
30、上述过程,直到条件表达式的值为 “假 ” (值为零 )时,退出循环,并转下一语句去执行。本题在输出 num的值为 3之后,再判断 while的循环条件 3=2,不成立,所以不再输出 num的值,故本题的答案选 B。 23 【正确答案】 B 【试题解析】 在 C语言中,可以用 break语句和 continue语句跳出本层循环和结束本次循环。 goto语句可跳出多层循环,如果在函数的循环体内使用 return语句,就会直接结束循环返回函数值。 24 【正确答案】 C 【试题解析】 C语言中可以使用 typedef来重新定义已有的数据类型,相当于为数据类型取个别名。 25 【正确答案】 B 【试题
31、解析】 在 if语句中又包含一个或多个 if语句称为 if语句的嵌套。应当注意 if与 else的配对关系,在 C语言中,从最内层开始, else总是与它上面最近的(未曾配 对的 )if配对。 26 【正确答案】 B 【试题解析】 C语言函数中的参数传递方式有传值与传址两种方式,传值方式是指将实参的值复制一份传递给形参,而传址方式是指将实参的变量地址传递给形参,也就是实参的引用。 27 【正确答案】 A 【试题解析】 C语言中如果函数前不加任何数据类型时,默认函数的类型为整型,函数的类型就是函数返回值的类型。 28 【正确答案】 C 【试题解析】 C语言中字符常量是以单引号括起来的单个字符,或
32、为以 “”与三位八进制数或两位十六进制数值代替单个字符。 29 【正确答案】 C 【试题解析】 #define宏名的有效范围为定义命令之后到本源文件结束,可以在程序中使用 #undef命令终止宏定义的作用域。本题由于 #undef的作用,使 a的作用范围在 #define a 100到 #undef a之间,故答案为 C。 30 【正确答案】 B 【试题解析】 指针是一种用宋存放变量地址的特殊变量。本题中指针变量 p用于存放整型变量 i的地址,改变 *p的值即为改变 i的值。又因为 “&”和 “*”两个运算符的优先级别相同,按自右而左的方向结合,所以 *&j运算,得 j的地址,再进行*运算,取
33、所得地址里面的值,故 *&j与 i等价。 31 【正确答案】 D 【试题解析】 当数组定义后,系统就为其分配内存空间,而不论其中有没有内容。因此,本题中数组 x(10)不论是否为其元素初始化,它所分配的存储空间仍为2*10=20个字节。 32 【正确答案】 B 【试题解析】 程序中定义了一个指向整型变量的指针变量,并对其赋值为二维整型数组 a的首元素的地址。 p4等价于 *(p+4),即二维数组 a中第四个元素的值,而 a是一个 2*3的二维数组,其第四个元素为 a11, 即 5。 33 【正确答案】 C 【试题解析】 在本题运行时主要注意的是当 i=9时, ai=10-9=1; i=8时,a
34、i=10-8=2; i=7时, ai=10-7=3; 依此类推,直到 i=0时, ai=10-0=10;此时, i的值已变为 -1,判断 for的循环条件,不成立,然后输出 a2, a5, a8分别为 8, 5, 2。 34 【正确答案】 B 【试题解析】 strcpy(strl, s1) -作用是将字符串 s1拷贝到字符数组 strl中去。strcat(字符数组 1,字符数组 2):把字符串 2接到字符串 1的后面,结果放在字符数组 1中,函数调用后返回字符数组 1的地址。本题定义了三个字符数组p1,p2,str, strcat(p1,p2)函数的作用是将字符串数组 p2接到符串 p1的后面
35、,结,果放在字符数组 P1,再通过 strcpy()函数将该字符串拷贝到 str数组中,原 str数组中的字符串 xyz被覆盖,因此打印输出字符串 str即可得到 abcABC。 35 【正确答案】 D 【试题解析】 一维数组的定义方式为: 类型说明符数组名 常量表达式 ; 选项 A符合此定义形式,正确; C语言中 多维数组赋初值时可以部分赋值,也可以不指定除第一维以外的其他维的大小,故选项 C正确;另外,如果对全部数组元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省,所以选项 B正确,而选项 D是错误的。 36 【正确答案】 A 【试题解析】 对未给出初始值的整数数组
36、元素,被默认初始化为零。 37 【正确答案】 D 【试题解析】 带回指针值的函数,其一般定义形式为:类型标识符 *函数名 (参数表 ); 例如: int *f(x,y); 其中, f是函数名,调用它以后能得到一个指向整型数 据的指针 (地址 ), x,y是函数(的形参。在 f的两侧分别为 *运算符和 ()运算符,而 ()优先级高于 *,因此 f先与 ()结合,显然是函数形式。这个函数前面有一个 *,表示此函数是指针型函数 (函数值是指针 )。前面的 int表示返回的指针指向整型变量。 38 【正确答案】 B 【试题解析】 C语言中字符串是以 0字符结束的,且 strlen()函数计算的是 0字
37、符前的所有字符的个数。本题中 strlen(st)应为 5。数组定义以后系统就为其分配相应大小的内存空间,而不论其中有投有内容。 sizeof()函数是计算变 量或数组的所分配到的内存空间的大小。所以本题的 sizeof(st)为 20。 39 【正确答案】 C 【试题解析】 静态局部变量在编译时赋初值,即只赋初值一次,在程序运行时它已有初值。以后每次调用时不再重新赋初值而只是保留上次函数调用结束时的值,而对自动变量赋初值,不是在编译时进行的,而在函数调用时进行,每调用一次函数重新给一次初值,相当于执行一次赋值语句。本题在程序开头定义了全局变量 d并赋初值 1,在被调函数 fun()中,定义了
38、静态局部变量 d,初值为 5。在第一次调用函数 fun时, d初值为 5, p由主函 数传递过来的值为 1,则d=d+p=5+1=6,由于 d是静态局部变量,在函数调用结束后,它仍保留 d=6。再次调用 fun函数, d的初值为 6,而由主函数传递的 p的值为 9,则此时d=d+p=6+9=15,最后打印输出 d的值并返回主函数。 40 【正确答案】 A 【试题解析】 C语言中不能将字符串常量直接赋给数组。但在赋初值时可以。 41 【正确答案】 A 【试题解析】 本题 main函数中定义了指针 p和二维数组 a,通过函数 amovep将数组的值存入指针 p所指向的存储单元中, a的各各元素分别
39、为: a00=1,a01=3, a02=5, a10=2, a11=4, a12=6, a20=0, a21=0,a22=0。通过 malloc()函数绐指针分配内存空间, free()函数用于释放指针变量所用内存空间。在主函数中通过 amovep(p,a,3)调用函数 amovep,使得实参 p与形参 p,实参数组 a与形参中指向数组的指针变量共用同一存储空间。最后输出p2, p5为 56。 42 【正确答案】 B 【试题解析】 sizeof函数是取变量所 占的存储空间的字节数,标识 a代表常量121; const b=12;,其中数据类型可以缺省,默认为整型; enum ca1,a2;定义
40、了一个枚举类型 enum c, a1,a2为枚举元素,在 C编译时,对枚举元素按常量处理,它们的值按定义顺序依次为 0, 1。因此它们的字节数均为 2,2,2。 43 【正确答案】 D 【试题解析】 本题中是一个含有两个结点的循环链表。 C语言中结构体的定义为: struct结构体类型名 成员项表; ; 44 【正确答案】 C 【试题解析】 结构体变量所占内存长度是各成员占内存长度之和,而共用体变量所占的内存长度等于最长的成员的长度。本题结构体变量 a中成员 c为整型占 2个字节,共用体变量 u最大长度为 4个字节,故选 C。 45 【正确答案】 B 【试题解析】 全程变量是可以在子函数中对其
41、值作改变,且它也可作为函数间的值传递。但当函数或子函数中定义了与全程变量名称相同的局部变量,则全程变量将被屏蔽。 46 【正确答案】 D 【试题解析】 C语言的宏定义包括不带参数的宏定义与带参数的宏定义。本题为带参数的宏定义,其形 式为: #define宏名 (形参表 )字符串 本题的 M(a+b, b+c,c+a)被字符串 a+b*b+c+c+a代替。 47 【正确答案】 D 【试题解析】 根据结构变量的存储特点, p+1意味着增加地址值为结构体数组 a的一个元素所占的字节数,即 p+使 p由 a0指向 a1起始地址。本题 +p- n得到 p指向的结构体变量中成员 n的值使之加 1。因为 p
42、指向数组 a起始地址, p-n的值为 5,再执行自加 1运行,结果为 6。 48 【正确答案】 D 【试题解析】 “|”为或运算符,当其 左右表达式中只要一个为非零则整个表达式的值 1。是按位或, &是按位与, 是按位异或,这三位运算符是按值的二进制位来比较的。 49 【正确答案】 D 【试题解析】 C语言中的文件是流式文件。流式文件是一种无结构文件,即整个文件是一串字符流或二进制流。文件的存取以字符或字节为单位。 50 【正确答案】 A 【试题解析】 C语言中文件有文本文件与二进制文件,对文件的使用前必须先打开,打开方式有只读、写入、读写等方式。 51 【正确答案】 读栈顶元素 【试题解析】
43、 栈的基本运算有三种:入 栈、退栈和读栈顶元素。入栈运算是指在栈顶位置插入一个新元素。这个运算有两个基本操作:首先将栈顶指针进一 (即top加 1),然后将新元素插入到栈顶指针指向的位置。 退栈运算是指取出栈顶元素并赋给一个指定的变量。这个运算有两个基本操作:首先将栈顶元素 (栈顶指针指向的元素 )赋给一个指定的变量,然后将栈顶指针退一(即 top减 1)。 读栈顶元素是指将栈顶元素赋给一个指定的变量。这个运算不删除栈顶元素,只是将它的值赋给一个变量。 52 【正确答案】 封装 【试题解析】 软件工程的基本原则包括抽象、信息隐蔽、模 块化、局部化、确定性、一致性、完备性和可验证性。信息隐蔽是指
44、采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单。 53 【正确答案】 变换型 【试题解析】 典型的数据流类型有两种:变换型和事务型。变换型:是指信息沿输入通路进入系统,同时由外部形式变换为内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。事务型:在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能,这种数据流就叫做事务。 54 【正确 答案】 数据库管理系统或 DBMS 【试题解析】 数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服
45、务等。数据库管理系统是数据库系统的核心。 55 【正确答案】 查询 【试题解析】 关系模型的数据操纵即是建立在关系上的数据操纵,一股有查询、增加、删除和修改四种操作。 数据查询:用户可以查询关系数据库中的数据,它包括一个关系内的查询以及多个关系间的查询。 数据删除的基本单位是一个关系内的元组,它的功能是将指定关系内的指定元组删除。 数据 插入仅对一个关系而言,在指定关系中插入一个或多个元组。 数据修改是在一个关系中修改指定的元组和属性。 56 【正确答案】 x 5|x -5 或 x -5|x 5 【试题解析】 要使整数 x的绝对值大于 5,则 x大于 5或 x小于 5,用 C语言表示即为: x
46、 5|x -5或者 x -5|x 5。故本题答案为: x 5|x -5或者 x -5|x5。 57 【正确答案】 0 【试题解析】 对于一个 unsigned short来说,它能取的最大值是 65535。这里给a赋值 65536,已经超出了它的 取值范围,这样它的高位将被截掉,只把低位赋给它 (全零 )。所以 a的值实际为 0。 58 【正确答案】 3 【试题解析】 这里: b-5=4, a=4之后 a的值为 6,并把它赋给 c。此时 b的值并未被改变。在第 2千表达式中,也只有赋值表达式 b=3改变了 b的值。所以两行语句执行完毕, b的值应该为 3。 59 【正确答案】 3 【试题解析】
47、 条件表达式的一般形式为:表达式 1?表达式 2:表达式 3条件运算符的执行顺序:先求解表达式 1,若为非 0(真 )则求解表达式 2,此时表达式 2的值就作为整个条件表达式的值;若表达 式 1的值为 0(假 ),则求解表达式 3,表达式 3的值就是整个条件表达式的值。 30/3=10 0,所以执行 p/10,结果为 3。 60 【正确答案】 1.0(i*i)或 (double)1/(i*i) 【试题解析】 表达式 1+1/(2*2)+1/(3*3)+1(n*n) 可写为1/(1*1)+1/(2*2)+1/(3*3)+1(n*n) n 即: 1(ii) i=1 对应的 C语言的表达式 s=s+1.0/(i*i)。注:必须要写成 1.0的形式,否则 1/(i*i)返回值为其值截尾取整,即 恒为 0。 61 【正确答案】 1.0/i/i或 1.0/(i*i) 【试