1、国家二级( C语言)笔试模拟试卷 43及答案与解析 1 循环链表的主要优点是 ( A)不再需要头指针了 ( B)从表中任一结点出发都能访问到整个链表 ( C)在进行插入、删除运算时,能更好的保证链表不断开 ( D)已知某个结点的位置后,能够容易的找到它的直接前件 2 栈底至栈顶依次存放元素 A、 B、 C、 D,在第五个元素 E入栈前,栈中元素可以出栈,则出栈序列可能是 ( A) ABCED ( B) DCBEA ( C) DBCEA ( D) CDABE 3 对长度为 n的线性表进行顺序查找,在最坏情况下所需要的比较 次数为 ( A) log2n ( B) n/2 ( C) n ( D) n
2、+1 4 在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率。与程序的效率相比,人们更重视程序的 ( A)安全性 ( B)一致性 ( C)可理解性 ( D)合理性 5 模块独立性是软件模块化所提出的要求,衡量模块独立性的度量标准则是模块的 ( A)抽象和信息隐蔽 ( B)局部化和封装化 ( C)内聚性和耦合性 ( D)激活机制和控制方法 6 软件开发的结构化生命周期方法将软件生命周期划分成 ( A)定义、开发、运行维护 ( B)设计阶段、编程阶段、测试阶段 ( C)总体设计、详细设计、编程调试 ( D)需求分析、功能定义、系统设计 7 在软件工程中,白箱测试法可用于测试程序的内部结构。
3、此方法将程序看做是 ( A)路径的集合 ( B)循环的集合 ( C)目标的集合 ( D)地址的集合 8 在数据管理技术发展过程中,文件系统与数据库系统的主要区别是数据库系统具有 ( A)特定的数据模型 ( B)数据无冗余 ( C)数据可共享 ( D)专门的数据管理软件 9 数据库设计包括两个方面的设计内容,它们是 ( A)概念设计和 逻辑设计 ( B)模式设计和内模式设计 ( C)内模式设计和物理设计 ( D)结构特性设计和行为特性设计 10 实体是信息世界中广泛使用的一个术语,它用于表示 ( A)有生命的事物 ( B)无生命的事物 ( C)实际存在的事物 ( D)一切事物 11 能将高级语言
4、程序转换成目标语言程序的是 _。 ( A)调试程序 ( B)解释程序 ( C)编译程序 ( D)编辑程序 12 _是构成 C语言程序的基本单位。 ( A)函数 ( B)过程 ( C)子程序 ( D)子例程 13 可以 在 C语言中用做用户标识符的是 _。 ( A) void define WORD ( B) as_b3 _123 If ( C) for -abc cas ( D) 2c Do SIG 14 若有以下类型说明语句: char w;int x;flooat y,z; 则表达式 w*x+z-y的结果为_类型。 ( A) float ( B) char ( C) int ( D) do
5、uble 15 main() float x=123.456; printf(“%-5.2fn“,x); 以上程序输出的结果是_。 ( A) 123.4 ( B) 123.5 ( C) 123.45 ( D) 123.46 16 下面语句的输出结果,是 _。 printh(“%dn“,strlen(“t“065xffn“); ( A) 14 ( B) 8 ( C) 5 ( D)输出项不合法,无正常输出 17 下列程序的输出结果,是 _。 main() int a=0,b=0,c=0; if(+a0|+b 0)+c; printf(“na=%d,b=%d,c=%d“,a,b,c); ( A) a
6、=0,b=0,c=0 ( B) a=1,b=1,c=1 ( C) a=1,b=0,c=1 ( D) a=0,b=1,c=1 18 下列程序的输出结果是 _。 main() int i; for(i=1;i+1;i+) if(i 4)printf(“%d“,i+);break; printf(“%d“,i+); ( A) 55 ( B) 56 ( C)程序错误,没有输出 ( D)循环条件永远为真,死循环 19 下列程序的输出结果是 _。 #define A 100 main() int i=0,sun=0; do if(i=(i/2)*2)continue; sum+i; while(+i A)
7、 ; printf(“%dn“,sun); ( A) 2500 ( B) 2050 ( C) 4 ( D) 0 20 下列程序的输出结果是 _。 main() int i=3; switch(i) case 1: case 2:printf(“%d“,i); case 3: case 4:break; default:printh(“OK“; ( A) 0 ( B) 3 ( C) OK ( D)没有任何输 出 21 设 x, y和 z都是 int型变量,且 x=3, y=4, z=5,则下面表达式中,值为 0的表达式是 ( A) x p= scanf(“%c, p=(char*)malloc(
8、1) scanf(“%c“,p); ( C) char *p *p=getchar( ); ( D) char *p,ch; p= *p=getchar( ); 23 下列函数的运行结果是 main ( ) int i=2,p; int j,k; j=i; k=+i; p=f(j,k); printf(“%d“,p); int f(int a, int b) int c; if(a b)c=1; else if(a=b)c=0; else c=-1; return(c); ( A) -1 ( B) 1 ( C) 2 ( D)编译出错,无法运行 24 现有格式化输入语句, scanf( “x=%
9、d ,sum y=%d,line z=%dL“,i M; i+) for(j=0;j N; j+) aij=i+j-(i-j); fun(a); ( A) 3 ( B) 4 ( C) 5 ( D) 6 35 若有说明: int a34=0;则下面正确的叙述是 ( A)只有元素 a00可得到初值 0 ( B)此说明语句不正确 ( C)数组 a中各元素都可得到初值,但其值不一定为 0 ( D)数组 a中每个元素均可得到初值 0 36 对以下说明语句的正确理解是 int a10=6, 7, 8, 9, 10; ( A)将 5个初值依次赋给 a1至 a5 ( B)将 5个初值依次赋给 a0至 a4 (
10、 C)将 5个初值依次赋给 a6至 a10 ( D)因为数组长度与初值的个数不相同,所以此语句不正确 37 设 p1和 p2是指向一个 int型一维数组的指针变量, k为 int型变量,则不能正确执行的语句是 ( A) k=*p1+*p2 ( B) p2=k; ( C) p1=p2; ( D) k=*p1*(*p2); 38 以下程序有错,错误原因是 main() int*p, i; char*q, ch; p= ( A)求字符串的长度 ( B)比较两个字符串的大小 ( C)将字符串 str1复制到字符串 str2中 ( D)将字符串 str1接续到字符串 str2中 48 已知各变量的类型说
11、明如下: int k, a, b; unsigned long w=5; double x=1.42; 则以下不符合 C语言语法的表达式是 ( A) x%(-3) ( B) w+=-2 ( C) k=(a=2, b=3, a+b) ( D) a+=a-=(b=4)*(a=3) 49 以下叙述中正确的是 ( A)预处理命令行必须位于源文件的开头脑 ( B)在源文件的一行上可以多条预处理命令 ( C)宏名必须用大写字母表示 ( D)宏替换不占用程序的运行时间 50 设有 如下定义: struct sk int n; float x; data, *p; 若要使 p指向data中的 n域,正确的赋值
12、语句是 ( A) p=&data.n; ( B) *p=data.n; ( C) p=(struct sk*)&data.n; ( D) p=(struct sk*)data.n: 51 在树形结构中,树根结点没有【 】。 52 Jackson结构化程序设计方法是英国的 M.Jackson提出的,它是一种面向【 】的设计方法。 53 面向对象的模型 中,最基本的概念是对象和【 】。 54 软件设计模块化的目的是【 】。 55 数据模型按不同应用层次分成 3种类型,它们是概念数据模型、【 】和物理数据模型。 56 以下程序的输出结果是【 】。 main() int i=010, j=10; pr
13、intf(“%d, %dn“, i, j); 57 若从键盘输入 58,则以下程序输出的结果是【 】。 main() int a; scanf(“%d“, &a); if(a 50)printf(“%d“, a); if(a 40)printf(“%d“, a); if(a 30)printf(“%d“, a); 58 现有如下定义: struct aaint a; float b; char c; *p;现需用 malloc函数动态的申请一个 struct aa类型大小的空间 (由 p指向 ),则定义的语句为:【 】。 59 下列程序的输出结果是 16.00,请填空。 main() int
14、a=9, b=2; float x=【 】, y=1, 1, z; z=a/2+b*x/y+1/2; printf(“%5.2fn“, z); 60 下面程序的功能是:计算 1 10之间的奇数之和与偶数之和,请填空。 #include stdio.h main() int a, b, c, i; a c 0; for(i 0; i 10; i+ 2) a+=i; 【 】; c+=b; printf(“偶数之和 =%dn“, a); printf(“奇数之和 =%dn“, c-11); 61 下面程序的运行结果是【 】。 #include stdio.h #define SIZE 12 main
15、() char sSIZE; int i; for(i=0; i SIZE; i+) si=A+i+321; sub(s, 7, SIZE-1); for(i=0; i SIZE; i+) printf(“%c“, si); printf(“n“); sub(char*a, int tl, int t2) char ch; while(t1 t2) ch=*(a+t1); *(a+t1)=*(a+t2); *(a+t2)=ch; t1+; t2-; 62 以下程序运行结果是【 】。 #include stdio.h long func(int x) long p; if(x=0x=1)retu
16、rn(2); p=x*func(x-1); return(p); main() printf(“%dn“,func(4); 63 下面函数的功能是将一个字符串的内容颠倒过来,请填空。 void fun(char str) int i, j, k; for(i=0, j=【 】; i j; i+, j-) k=stri; stri=strj; strj=k; 64 阅读下面程序,则程序的执行结果为【 】。 #include“stdio.h“ fun(int k, int*p) int a, b; if(k=1k=2) *p=1; else fun(k-1, &a); fun(k-2, &b);
17、*p=a+b; main() int x; fun(6, &x); printf(“%dn“, x); 65 设有定义 “structint a; float b; char c; abc, *p_abc=&abc; ”,则对结构体成员 a的引用方法可以是 abc.a和 p_abc 【 】 a。 66 以下程序是求矩阵 a, b的和,结果存入矩阵 c中,并按矩阵形式输出,请填空。 #include stdio.h main() int a34=13, -2, 7, 5, 1, 0, 4, -3, 6, 8, 0, 2; int b34=-2, 0, 1, 4, 5, -1, 7, 6, 6,
18、8, 0, 2; int i, j, c34; for(i=0; i 3; i+) for(j=0; j 4; j+) cij=【 】; for(i=0; i 3; i+) for(j=0; j 4; j+) printf(“%3d“, cij); printf(“n“); 67 下面程序是指从终端读入的 20个字符放入字符数组中,然后利用指针变量输出上述字符串,请填空。 #include stdio.h main() int i; char s21, *p; for(i=0; i 20; i+) si=getchar(); si=【 】; p=【 】; while(*p)putchar(*p
19、+); 68 以下涵数 rotate的功能是:将 a所指 N行 N列的二维数组中的最后一行放到 b所指二维数组的第 0列中,把 a所指 二维数组中的第 0行放到 b所指二维数组的最后一列中, b所指二维数组中其他数据不变。 #define N 4 void rotade(int aN, int bN) int i, j; for(i=0; i N; i+) biN-1=【 】;【 】 =aN-1i; 国家二级( C语言)笔试模拟试卷 43答案与解析 1 【正确答案】 B 【试题解析】 循环链表就是将单向链表中最后一个结点的指针指向头结点,使整个链表构成一个环形,这样的结构使得从表中的任一结点出
20、发都能访问到整个链表。 2 【正确答案】 B 【试题解析】 栈操作原则上 “后进先出 ”,栈底至栈顶依次存放元素 A、 B、 C、D,则表明这 4个元素中 D是最后进栈, B、 C处于中间, A最早进栈。所以出栈时一定是先出 D,再出 C,最后出 A。 3 【正确答案】 C 【试题解析】 对于长度为 n的有序线性表,在最坏情况下,二分查找只需要比较log2n次,而顺序查找需要比较 n次。 4 【正确答案】 C 【试题解析】 结构化程序设计方法设计出的程序具有 明显的优点。其一,程序易于理解、使用和维护;其二,提交了编程工作的效率,降低了软件开发成本。其中,人们更重视前者。 5 【正确答案】 C
21、 【试题解析】 模块的独立程序是评价设计好坏的重要度量标准。衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准。 6 【正确答案】 A 【试题解析】 通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。它可以分为软件定义、软件开发及软件运行维护 3个阶段。 7 【正确答案】 A 【试题解析】 软件的白盒测试方法是把测 试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。 8 【正确答案】 A 【试题解析】 在文件系统中,相互独立的记录其内部结构的最简单形式是等长同格式记录的集合,易造成存储空间大
22、量浪费,不方便使用。而在数据库系统中,数据是结构化的,这种结构化要求在描述数据时不仅描述数据本身,还要描述数据间的关系,这正是通过采用特定的数据模型来实现的。 9 【正确答案】 A 【试题解析】 数据库设计包括数据库概念设计和数据库逻辑设计两 个方面的设计内容。 10 【正确答案】 C 【试题解析】 实体是客观存在且可以相互区别的事物。实体可以是具体的对象,如一个学生,也可以是一个抽象的事件,如一次出门旅游等。因此,实体既可以是有生命的事物,也可以是无生命的事物,但它必须是客观存在的,而且可以相互区别。 11 【正确答案】 C 【试题解析】 用高级语言编写的程序称为 “源程序 ”,而计算机只能
23、识别和执行由0和 1组成的二进制指令,所以高级语言必须先用 种称为 “编译程序 ”的软件,把源程序翻译成二进制形式的 “目标程序 ”。 12 【正 确答案】 A 【试题解析】 C程序是由函数构成的。 个 C源程序至少包含 个 main函数,也可以包含 个 main函数和若干个其他函数,因此,函数是 C程序的基本单位。 13 【正确答案】 B 【试题解析】 C语言规定,标识符只能由字母、数字和下划线三种符号组成,而且第 个字符必须是字母或下划线。另外还需要注意的是关键字不能作标识符。选项 A中 void, C中 for都为关键字, D中 2c以字母开头。 14 【正确答案】 A 【试题解析】 在
24、进行运算时,不同类型的数据参加运算,需要先将其转换成同 类型的数据,然后再进行运算。转换的顺序由低到高为:char,shortintunsignedlongdoublefloat ,故结果为 float型。 15 【正确答案】 D 【试题解析】 f格式符,用来输出实数,以小数形式式输出。 “%-m.nf”的含义是:输出数据共占 m列,其中 n位小数,如果输出位数小于 m,则右端补空恪。如果总长度大于列数,则按实际情况四舍五入输出。 16 【正确答案】 C 【试题解析】 在 C语言中,以 “”开头的字符均为转义字符,其中 “”后可跟 1 3位八进制 熟或在 “”后跟字母 x及 1 2位十六进制数
25、,以此来代表 个特定的字符。 17 【正确答案】 C 【试题解析】 “|”是或运算,它有个 “短路 ”的特点需特别注意,当 “|”运算符左边的表达式的值为真时,则程序就不再对 “|”右边的表达式的值进行运算,而是使得整个表达式的值直接为真。 18 【正确答案】 B 【试题解析】 本程序中有个 for循环,但注意到 for循环的条件是 “i+1”,也就是只要 i+1的值为真 (非零值均为真 ),就执行循环。当 i=1的时候, i+1的值为真,判断 if条件不成立,执行 i+,输出 i的值为 5。 19 【正确答案】 A 【试题解析】 本题程序的功能是求 1到 99之间 (包括 1和 99)所有奇
26、数之和。程序中的 while循环的终止条件为 +i=100,在 while循环体内,如果 i是偶数,则执行 continue,跳过这一次循环,执行下 次循环,否则求和。最后输出的值是 1到 99之间 (包括 1和 99)所有奇数之和 (1+99)*50/2=2500。 20 【正确答案】 D 【试题解析】 在题中, i的值为 3,由于 “case 3:”后面没有 break语句,所以继续向下执行 “case 4:”后面的语句,由于 “case 4:”后面的语句为 break强行退出 switch语句,所以,本题没有任何输出。 21 【正确答案】 D 【试题解析】 该题考查逻辑与 “&”和逻辑或
27、 “|”以及逻辑非 “!”符号的用法。选项 A)即 3&4为真,选项 B)即 3 =4为真,选项 C)是一个逻辑或与逻辑与的混合运算,只要执行了逻辑或左半部分,程序将直接停止执行逻辑或右半部分程序,因为 x的值为真,此时选项 C)变为 1&-1为真。选项 D)不用计算,括号内逻辑或右边的值为 1,因而括号内的值为 1,再进行逻辑 非运算得 0。 22 【正确答案】 C 【试题解析】 本题考查了字符的输入函数 getchar和利用 scanf函数输入一个字符。用 scanf输入字符时,格式说明字符应该为 %c。本题选项 C)因为指针 p没有赋初值,所以是一个不定值,不能直接将 getchar读入
28、的字符赋给指针 p所指向的字符,所以选项 C错误。 23 【正确答案】 A 【试题解析】 函数调用相当于 f(2, 3),程序运算应得结果为 “-1”。 24 【正确答案】 D 【试题解析】 若在 scarf的格式化控制串中插入了其他字符, 则在输入时要求按一一对应的位置原样输入这些字符。格式化输入函数必须严格按照双引号里面的格式进行输入。在格式化输出函数中,格式控制串中除了合法的格式说明外,可以包含任意的合法字符。 25 【正确答案】 D 【试题解析】 该题中考查的是简单的单链表,下图就是赋完值后的示意图:容易看到 p- num=10,而 q- next就是 r,所以 q- next- nu
29、m=30,故答案为 40。26 【正确答案】 B 【试题解析】 本题中, struct ex是结构体类型名, example是结构体变量名。 27 【正确答案】 C 【试题解析】 EOF是文本文件的文件结束标志, NULL是打开文件错误的时候返回值。 foef(fp)用来判断文件位置指针是否在文件末尾,文本文件和二进制文件均可以使用此函数。如果遇到文件结束就返回 1,否则返回 0。 28 【正确答案】 B 【试题解析】 右移运算符 “ ”是双目运算符。其功能是把 “ ”左边的运算数的各二进位全部右移若干位, “ ”右边的数指定移动的位数。例如:设 a =15,a 2表示把 000001111右
30、移为 00000011(+进制 3)。应该说明的 是,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补 0,而为负数时,符号位为 1,最高位是补 0或是补 1取决于编译系统的规定。 Turbo C和很多系统规定为补 1,右移 1位相当于除以 2。 29 【正确答案】 C 【试题解析】 本题考查了对字符的输入、输出操作及算术和关系运算。因为 b=a并且 b =u,所以执行第一个 if语句, c=c+4, c的值为字符 f。 30 【正确答案】 C 【试题解析】 本题中,首先将 0赋给 k,表达式变为 0,跳出循环,没有执行循环体语句。解答本题的 关键是掌握 while语句。 31
31、【正确答案】 D 【试题解析】 解答本题时,先判断 if语句,因为 a=b+c不成立,则执行 else语句。 32 【正确答案】 B 【试题解析】 本题主要考查了循环语句中 break和 continue语句的使用。 break语句的作用是结束本层循环,而 continue语句的作用是结束本次循环直接进入到下次循环。 33 【正确答案】 A 【试题解析】 本题主要考查了函数的调用作为表达式来使用,同时函数调用是按值传递的,函数中对形参的操作并不能影响到实参 。函数 fun(1, 2)的返回值为5,而实参 a的值保持不变仍为 1,所以 c+=fun (1, 2)+1执行后, c=3+5+1=9。
32、 34 【正确答案】 B 【试题解析】 若有以下定义: int a34, i, j;且当 0 = i 3, 0 =j 4,则可以有以下几种方式来引用数组中的第 i行,第 j列的元素: aij, *(ai+j),*(*(a+i)+j), (*(a+i) j, *(&a00+4*i+j)。 35 【正确答案】 D 【试题解析】 二维数组初始化时允许只对部分元 素赋初值,其余自动为 0。 36 【正确答案】 B 【试题解析】 本题中,表达式将 5个初值赋给 a 0至 a4,后面的部分,将自动会被依次补零处理。 37 【正确答案】 B 【试题解析】 本题主要考查了一维数组指针的赋值和用指针引用数组元素
33、进行运算。选项 B)中 p2为指向 int型变量的指针。而 k为 int型变量,不能将 int型变量直接赋值给指向 int型变量的指针,所以选项 B)错误。 38 【正确答案】 D 【试题解析】 该程序的执行过程是:首先声明整型指针变量 p和整型变量 i,字符 型指针变量 q和字符型变量 ch,将 i的地址赋给指针变量 p,将 ch的地址赋给指针变量 q,将 40赋给 *p,此时, q已经指向了一个具体的存储单元,但 ch的值不确定,即 *p没有确定的值,所以不能执行 *p=*q语句。 39 【正确答案】 B 【试题解析】 本题考查函数的递归调用。 fib(3) =fib(2)+fib(1),
34、而 fib(2)的返回值为 2, fib(1)的返回值也为 2,故输出的 fib(3)的值为 4。 40 【正确答案】 C 【试题解析】 静态全局变量只限于本文件所使用。静态全局变量只限于本文 件所使用,不能被其他的文件所引用。 41 【正确答案】 A 【试题解析】 本题主要考查了结构体和共用体数据的存储形式。共用体的一个特点是所有数据成员共用一段存储单元,而结构体每个数据成员都单独占据一段存储单元。共用体所占存储单元的大小由长度最长的数据成员的长度决定。题中共用体变量 c占据 4个字节的长度,结构体 r所占存储空间的大小为 int(2个字节 )+long(4个字节 )+共用体 c(4个字节
35、)=10个字节,所以答案为 A)。 42 【正确答案】 B 【试题解析】 存放字符串的字符数组的名字就 是这个字符串的首地址。本题的功能是对于字符串 “tomeetme”进行选择式输出,从第一个字母开始,每输出一个字符即跳过一个。 43 【正确答案】 C 【试题解析】 本题中,最主要的是掌握几个有关文件的函数的应用。 函数名: fopen功能:打开一个文件调用方式 FILE *fp; fp=fopen(文件名,使用文件方式 ); 函数名: feof功能:检查文件是否结束调用方式: feof(FILE *fp); 函数名: fputc功能:把一个字符写到磁盘文件上去调用方式: fputc(ch,
36、 fp)(ch是要输出的字符, fp是从指定的文件读入一个字符,该文件必须是以读或读写方式打开的调用方式: ch=fgetc(fp)(ch是字符变量, fp是文件指针变量 ); 函数名: fclose功能:关闭一个文件调用方式: fclose(文件指针 )。 44 【正确答案】 C 【试题解析】 本题主要考查了 C程序编译、运行等基本概念。选项 A)、 C)程序的长度没有什么限制,所以不正确;选项 B)程序应该遵循结构化程序设计的理念,不能使程序流程任意的转移,这样不利于程序的理解和执行;选项 D)运行的程序是经过编译 后的二进制文件,而不是源程序。 45 【正确答案】 D 【试题解析】 本题
37、考查 C语言的基本基础知识。在 C程序中,注释用符号 “/*”开始,而以符号 “*/”结束。程序的注释可以放在程序的任何位置。通常将注释放在程序的开始,以说明本程序的功能;或者放在程序的某个语句后面,以对此语句的功能进行说明。无论将注释放有何处,在程序进行编译时,编译程序不会处理注释的内容,且注释内容也不会出现在目标程序中。 46 【正确答案】 C 【试题解析】 函数不一定有返回值 (void类型 ), C语言规定,在一个函数 的内部不能再定义函数,函数可以递归调用,一个 C程序允许由多个文件组成, C语言支持函数的外部调用,不一定有调用关系的所有函数都放在同一个源程序文件中。选项 A)函数不
38、一定有返回值,选项 B)函数不可以嵌套定义,选项 D)函数可以外部调用。 47 【正确答案】 C 【试题解析】 while语句的一般形式为: while(表达式 )语句;其中表达式是循环条件,语句为循环体, while语句的语义是:计算表达式的值,当值为真 (非 0)时,执行循环体语句。本题中逻辑与符号连接的表达式值为真, *str2+=*strl+语句是将 strl的内容逐个复制到 str2字符串。 48 【正确答案】 A 【试题解析】 “%”是求余运算符或模运算符, “%”两侧均应为整型数据,选项 A)中的 x是 double型数据。 49 【正确答案】 D 【试题解析】 选项 A)预处理
39、命令行通常位于源文件的开头,但不是必须的;选项 B)在源文件的一行上只能有一条预处理命令;选项 C)宏名一般习惯用大写字母表示,以与变量名相区别,但不是必须的;选项 D)宏替换不占用程序的运行时间,只占编译时间。 50 【正确答案】 C 【试题解析】 本题主要考查了结构体变量引用成员数据的方法,主要有以下几种:结构体变量名成员名或结构体指针 -成员名的方法来引用结构体成员。 51 【正确答案】 前件 【试题解析】 在树形结构中,每一个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点;每一个结点可以有多个后件,它们都称为该结点的子结点。没有后件的结点称为叶子结点。 52 【正
40、确答案】 数据结构 【试题解析】 结构化分析方法主要包括:面向数据流的结构化分析方法 (SA-Structured analysis),面向数据 结构的 Jackson方法 (JSD-Jackson system development method)和面向数据结构的结构化数据系统开发方法 (DSSD -Data structured system development method)。 53 【正确答案】 类 【试题解析】 面向对象模型中,最基本的概念是对象和类。对象是现实世界中实体的模型化;将属性集和方法集相同的所有对象组合在一起,可以构成一个类。 54 【正确答案】 降低复杂性 【试题
41、解析】 模块化是指解决一个复杂问题时自顶向下 逐层把软件系统划分成若干模块的过程,由此分解来降低复杂性。 55 【正确答案】 逻辑数据模型 【试题解析】 数据是现实世界符号的抽象,而数据模型 (data model)则是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束行为,为数据库系统的信息表示与操作提供一个抽象的框架。数据模型按不同的应用层次分成 3种类型,它们是概念数据模型 (conceptual data model)、逻辑数据模型 (logic data model)、物理数据模型 (physical data model)。 56 【正确答案】 8, 10 【试题解
42、析】 以 0开头的是八进制数,输出时将其转换成十进制数。 57 【正确答案】 585858 【试题解析】 本题考查对 if语句的掌握,当输入 58以后,程序中的 3个 if语句都成立,所以分别输出 58。 58 【正确答案】 p=(struct aa *)malloc(sizeof(struct aa); 【试题解析】 ANSI C标准规定 malloc函数的返回值类型为 void*,函数的调用形式为: malloc(size)要求 size的类型为 unsigned int。由于返回类型为 void*,所以在调用函数时,必须利用强制转换将其转换为所需要的类型。 59 【正确答案】 6.6 【
43、试题解析】 本题最后一条语句,表示以浮点格式输出 z的值,宽度为 5,其中包含 2位小数,应该注意的是,两个整型运算结果仍为整型,如 1/2的结果为 0,对本题可逐步求解: 16.00=9/2+2*x/1.1+1/2 16.00=4+2*x/1.1+0 12.00=2*x/1.1 所以, x的值为 6.6。 60 【正确答案】 b=i+1 【 试题解析】 本题考查了 for循环语句的执行过程。 i+ =2是修正表达式,执行一次循环体后 i的值就增加 2, i的初始值为 0,每次加 2之后和累加至 a,所以 a的值就是 1 10之间的偶数之后; b的值是 1 11之间的奇数和,但在输出 b值时
44、c去掉多加的 11,即为 1 10之间的奇数之和。 61 【正确答案】 a b c d e f g l k j i h 【试题解析】 本题主要考查了字符变量可参与的运算。因为字符在计算机中是以ASCII码的形式存放的,所以字符变量可看作整型变量来处理,如参与算术运算等,某字符的大 写字母的 ASCII码值比它对应的小写字母 ASCII码值小 32。 62 【正确答案】 48 【试题解析】 本题主要考查的是函数的递归调用,递归的终止条件是 x=0或x=1,然后用已知值逐步递推向上求未知值,直到得到最终的结果。 func(4)=4*func(3); func(3)=3*func(2); func(2)=2*func(1); func(1)=2; 所以 func(2)=2*2=4; func(3)=3*4=12; fune(4)=4*12=48。 63 【正确答案】 strlen(str)-1 【试题解析】 程序中的 for循环就是用来完成串反序的,所以应该对循环的条件进行初始化,所以在 18应该填入 strlen(str)-1。注意,在串反序的时候,不应该把串结束符 0也反序。 64 【正确答案】 8 【试题解析】 函数可以被递归调用,但是不能递归定义。有返回值的函数调用可以出现在表达式可以出现的任何地方。 65 【正确答案】 -