1、国家二级( C语言)笔试模拟试卷 210 及答案与解析 1 在深度为 5的满二叉树叶中,叶子结点的个数为 ( )。 ( A) 32 ( B) 31 ( C) 16 ( D) 15 2 软件生命周期中,花赞最多的阶段是 ( )。 ( A)详细设计 ( B)软件编码 ( C)软件测试 ( D)软件维护 3 视图设汁一般有 3种设计次序,下列不属于视图设计次序的是 ( )。 ( A)自顶而下 ( B)由内向外 ( C)由外向内 ( D)自底向上 4 下列数据结构中,能用二分法进行查找的是 ( )。 ( A)顺序存储的有序线性表 ( B)结性链表 ( C)二叉链表 ( D)有序线性链表 5 以下叙述中
2、错误的是 ( )。 ( A)对于 double类型数组,不可以直接用数组名对数组进行整体输入或输出 ( B)数组名代表的是数组所占存储区的首地址,其值不可改变 ( C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出 “下标越界 ”的出错信息 ( D)可以通过赋初值的方式确定数组元素的个数 6 以下只有在使用时才为该类型变量分配内存的存储类型说明是 ( )。 ( A) auto和 static ( B) auto和 register ( C) register和 static ( D) extern和 register 7 下列可作为 C语言赋值的语句的是 ( )。 ( A) x
3、=3, y=5 ( B) a=b=6 ( C) i-; ( D) a, c 8 若整型变量 a、 b、 c、 d中的值依次为 2、 2、 3、 4,则条件表达式 a b?a: cd?c: d的值是 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 4 9 下列叙述中错误的是 ( )。 ( A)线性表是由 n个元素组成的一个有限序列 ( B)线性表是一种线性结构 ( C)线性表的所有结点有且仅有一个前件和后件 ( D)线性表可以是空表 10 以下程序执行后 sum的值是 ( )。 main() int i, sum; for(i=1; i 26; i+)sum+=i; printf(
4、“ d n“, sum); ( A) 15 ( B) 14 ( C)不确定 ( D) 0 11 以下程序的输出结果是 ( )。 main() int i; for(i=0; i 3; i+) switch(i) case 0: printf(“ d“, i); case 2: printf(“ d“, i); default: printf(“ d“, i); ( A) 000102 ( B) 000020 ( C) 000122 ( D) 000111 12 下列程序执行后的输出结果是 ( )。 main() int x=f; printf(“ c n“, A+(x-a+1); ( A) G
5、 ( B) H ( C) I ( D) J 13 有如下程序: main() int a=2, b=-1, c=2; if(a 0)if(b 0)c=0; else c+; printf(“ d n“, c); 该程序的输出结果是 ( )。 ( A) 0 ( B) 1 ( C) 2 ( D) 3 14 在 C语言中,函数返回值的类型最终取决于 ( )。 ( A)函数定义时在函数首部所说明的函数类型 ( B) return语句中 表达式值的类型 ( C)调用函数时主调函数所传递的实参类型 ( D)函数定义时形参的类型 15 以下程序的输出结果是 ( )。 main() int i=0, s=0:
6、 for(; ) if(i=3i=5) continue; if(i=6) break; 1+; s+=i; ; printf(” d n“, s); ( A) 10 ( B) 13 ( C) 21 ( D)程序陷入死循环 16 假设 a和 b为 int型变量,则执行以下语句后 b的值为 ( )。 a=1; b=10; do b-=a; a+; while(b- 0); ( A) 9 ( B) -2 ( C) -1 ( D) 8 17 下列程序执行后的输出结果是 ( )。 main() int a33, *p, i p=&a00; for(i=p; i 9; i+)pi=i+1; printf
7、(“ d n”, a12); ( A) 3 ( B) 6 ( C) 9 ( D)随机数 18 以下程序的输出结果是 ( )。 int f(int A) return a 2; main() int s8=1, 3, 5, 2, 4, 6), i, d=0; for(i=0; f(s8); i+)d+=si; printf(“ d n“, d); ( A) 9 ( B) 11 ( C) 19 ( D) 21 19 s1和 s2已正确定义并分别指向两个 字符串。若要求:当 s1所指串大于 s2所指串时,执行语句 S;则以下选项中正确的是 ( )。 ( A) if(s1 s2)S; ( B) if(
8、strcmp(s1, s2)S; ( C) if(strcmp(s2, s1) 0)S; ( D) if(strcmp(s1, s2) 0)S; 20 有以下函数: char fun(char*p) return p; ) 该函数的返回值是 ( )。 ( A)无确切的值 ( B)形参 p中存放的地址值 ( C)一个临时存储单元的地址 ( D)形参 p自身的地址值 21 下列程序的运行结果为 ( )。 #inelude main() struet date int year, month, day; today; printf(“ d n“, sizeof(struct date); ( A)
9、8 ( B) 6 ( C) 10 ( D) 12 22 有以下程序: #include struct stu int nUN; char name10; int age; void fun(struct stu*p) printf(“ s n“, (*p) name); main() struct stu students3=9801, “Zhang“, 20, 9802, “Wang“, 19), 9803,“Zhao“, 18 fun(students+2); 输出的结果是 ( )。 ( A) Zhang ( B) Zhao ( C) Wang ( D) 18 23 有以下程序: viod
10、 fun(int a, int b, int c) a=456; b=567; c=678; main() int x=10, y=20, z=30; fun(x, y, z); printf(“ d, d, d n“, x, y, z); 输出的结果是 ( )。 ( A) 30, 20, 10 ( B) 10, 20, 30 ( C) 456, 567, 678 ( D) 678, 567, 456 24 有以下结构说明和变量定义,指针 p、 q、 r分别指向链表中的 3个连续结点。 struct node int data; struct node*next; *p, *q, *r; 现要
11、将 q所指结点从链表中删除,同时要保持链表的连续 ,以下不能按要求完成操作的语句是 ( )。 ( A) p- next=q- next; ( B) p-next=p- next-next; ( C) p- next=r; ( D) p=q- next; 25 有定义: “int a=2, b=3, c=4; ”,则下列选项中值为 0的表达式是 ( )。 ( A) (!a=1)&(!b=0) ( B) (a b)&!c 1 ( C) a&b ( D) a (b+b)&(ca) 26 设 fun()函数的定义形式为 void fun(char ch, float x) 则下列对函数 fun的调用语
12、句中,正确的是 ( )。 ( A) fun(“abc“, 3 0); ( B) t=fun(D, 16 5); ( C) fun(65, 2 8); ( D) fun(32 32); 27 有下列程序: main() char pa, b, c, q=“abe“; printf(“ d d n“, sizeof(p), sizeof(q); 程序运行后的输出结果是 ( )。 ( A) 4 4 ( B) 3 3 ( C) 3 4 ( D) 4 3 28 有下列程序: main() int k=5, n=0; while(k 0) switch(k) default: break; case 1:
13、 n=n+k; case 2: case 3: n+=k; k-; printf(“ d n“, n); 程序运行后的输出结果是 ( )。 ( A) 0 ( B) 4 ( C) 6 ( D) 7 29 有以下程序: main() int a=2, 4, 6, 8, 10, y=0, x, *p; p=&a1; for(x=1; x 3; x+) y+=px; printf(“ d n, y“); 程序运行后的输出结果是 ( )。 ( A) 10 ( B) 11 ( C) 14 ( D) 15 30 有下列程序: void sort(int a, int n) int i, j, t; for(
14、i=0; i n1; i+) for(j=i+1; j n; j+) if(ai aj)t=ai; ai=aj; aj=t; main() int aa10=1, 2, 3, 4, 5, 6, 7, 8, 9, 10), i; sort(aa+2, 5); for(i=0; i 10; i+)printf(“ d, “, aai); printf(“ n“); 程序运行后的输出结果是 ( )。 ( A) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ( B) 1, 2, 7, 6, 3, 4, 5, 8, 9, 10, ( C) 1, 2, 7, 6, 5, 4, 3, 8,
15、9, 10, ( D) 1, 2, 9, 8, 7, 6, 5, 4, 3, 10 31 有以下程序: #include int abc(int u, int v); main() int a=24, b=16, c; c=abc(a, b); printf(“ d n“, c); int abc(int u, int v) int w; while(v) w=u v; u=v; v=w; return; 输出结果是 ( )。 ( A) 6 ( B) 7 ( C) 8 ( D) 9 32 下列程序的输出结果是 ( )。 int f1(int x, int y)return x y?x: Y;
16、int f2(int x, int y)freturn x y?y: x; main() int a=4, b=3, c=5, d=2, e, f, g; e=f2(f1(a, b), f1(c, d); f=f1(f2(a, b), f2(c, d); g=a+b+c+d-e-f; printf(“ d, d, d n“, e, f, g); ( A) 4, 3, 7 ( B) 3, 4, 7 ( C) 5, 2, 7 ( D) 2, 5, 7 33 语句 int(*ptr)()的含义是 ( )。 ( A) ptr是一个返回值为 int的函数 ( B) ptr是指向 int型数据的指针变量
17、( C) ptr是指向函数的指针,该函数返回一个 int型数据 ( D) ptr是一个函数名,该函数的返回值 是指向 int型数据的指针 34 下述程序的输出结果是 ( )。 #include main() char ch25=“1234“, “5678“, *p2; int i, j, s=0; for(i=0; i 2; i+) pi=chi; for(i=0; i 2; i+) s=pij-0; printf(“ d“, s); ( A) 6357 ( B) 6135 ( C) 1357 ( D) 691357 35 下述程序的输出结果是 ( )。 #inelude main() int
18、 a23=1, 2, 3, 4, 5, 6。 (*p)3, i; p=a; for(i=0; i 3; i+) if(i 2) p1i=p1i-1; else p1i=1; printf(“ d n“, a01+a11十 a12); ( A) 8 ( B) 7 ( C) 12 ( D) 9 36 若有以下说明,则 ( )不是对 strcpy库函数正确的调用。 strcpy库函数用于复制一个字符串: char*strl=“abcd“, str210, *str3= “hijklmn“。 *str42, *str5=“aaaa“; ( A) strcpy(str2, str1) ( B) strc
19、py(str3, str1) ( C) strcpy(str1, str2) ( D) strcpy(str5, str1) 37 执行下述程序后,输出的结果是 ( )。 #incl ude #define S(X) X*X void main() int a=9, k=3, m-2; a =S(k+m) S(k+m); printf(“ d“, a); ( A) 1 ( B) 4 ( C) 9 ( D) 0 38 已知有如下结构体: struct sk int a; float b; data, *p; 若有 p=&data,则对 data的成员 a引用正确的是 ( )。 ( A) (*p)
20、 data a ( B) (*p) a; ( C) p- data a ( D) p data a 39 下述程序的输出结果是 ( )。 #include void main() int b6=2, 4, 6, 8, 10, 12; int *p=b, *q=&p; printf(“ d, “, *(p+); printf(“ d, “, *q); ( A) 4, 4 ( B) 2, 2 ( C) 4, 5 ( D) 2, 4 40 以下程序的输出结果是 ( )。 main() int i, k, a10, p3; k=5: for(i=0; i 10; i+)ai=i; for(i=0; i
21、 3; i+)pi=ai*(i+1); for(i=0; i 3; i+)k+=pi*2; printf(“ d n“, k); ( A) 20 ( B) 21 ( C) 22 ( D) 23 41 若希望下列的程序运行后输出 25,程序空白处的正确选项是 ( )。 main() int id=50, a=7, 4, 10, 5, 8; for( ) j+=ai; printf(“ d“, j-40); ( A) i=1; i 4; +i ( B) i=1; i 3; +i ( C) i=4; i 2; i- ( D) i=2; i 4; +i 42 树中度 为零的结点称为 _。 43 在面向
22、对象方法中,类之间共享属性和方法的机制称为 _。 44 软件是程序、数据和 _的集合。 45 若 x和 a均是 int型变量,则计算 x=(a=4, 6*2)后的 x值为 _。 46 下列程序段是从键盘输入的字符中统计小写字母的个数,用换行符结束循环。请填空。 int n=0, c; c=getchar(); while(C!= n) if(_) n+: 47 顺序存储方法是把逻辑上相邻的结点存储在物理位置 _的存储单元中。 48 在关系模型中,把数据看成是二维表,每一个二维表称为一个 _。 49 下列程序的输出结果是 _。 #include main() int x=1, y=1, a=1,
23、 b=1; switch(x) case 1: switch(y) case 0: a+; break; case 1: b+; break; case 2: a+: b+; break; printf(“a= d, b= d n“, a, b); 50 C语言用于结构化程序设计的 3种基本结构是 _、选择结构和循环结构。 51 以下程序运行后的输出结果是 _。 int fun(int a) int b=0; static int c=3; b+: c+; return(a+b+c); main() int i, a=5; for(i=0; i 3; i+)printf(“ d d“, i,
24、fun(a); prinff(“n“); 52 下述程序的输出结果是 _。 long fun5(int n) long s; if(n=1)(n=2) s=2; else s=n+fun5(n-1); return(s); main() long x; x=fun5(4); printf(“ 1d n“, x); 53 下述程序的输出结果是 _。 main() int a=2, b=4, c=6; int*p1=&a, *p2=&b, *p; *(p=&c)=*p1*(*p2); printf(“ d n“, c); 54 下列循环的循环次数是 _。 int k=2; while(k=0) p
25、rintf(“ d“, k); k-; printf(“ n“); 55 若有定义 “float b15, *p=b; ”,且数组 b的首地址为 200H,则 p+13所指向的数组元素的地址为 _。 56 下列程序的功能是将字符串 s中所有的字符 C删除。请填空。 #include stdio h main() char s80; int i, j; gets(s); for(i=j=0; si!=“ 0“; i+) if(i!=C_; sj= 0; puts(s); 57 以下 isprime函数的功能是判断形参 a是否为素数。是素数,函数返回 1,否则返回 0。请填空。 int ispri
26、me(int a) int i; for(i=2; i =a 2; i+) if(a i=0)_; _; 国家二级( C语言)笔试模拟试卷 210 答案与解析 1 【正确答案】 C 【试题解析】 根据二叉树的性质及定义,一棵凝度为 k且有 2k-1个结点的二叉树为满二叉树。满二叉树的叶子结点为最后一层的结点数,叉根据满二叉树的性质,在满二叉树的第 i层上至多有 2i-1个结点。因此深度为 5的满二叉树的叶子结点数为 25-1=16个。 2 【正确答案】 D 【试题解析】 本题考查对软件生命周期的理解,软件生命周期整体上可分为定义阶段,开发阶段和维护阶段。其中定义阶段包括可行性研究与计划制订和需
27、求好祈;开发阶段包括概要设计、详细设计、开发和测试;维护阶段是一个单独阶段 ,不包含在开发阶段内,它是所花费用最多的一个阶段。 3 【正确答案】 C 【试题解析】 视图设计的设计次序分 3种:自顶向下、自底向上和由内向外。它们为视图设计提供了具体的操作方法,设计者可根据买际情况灵活掌握。 4 【正确答案】 A 【试题解析】 二分法查找只用于顺序存储的有序线性表,面顺序查找用在顺序存储的非有序线性表和线性链表。 5 【正确答案】 C 【试题解析】 数组下标从 0开始,当数组元素的下标超出了定义的范围时,系统不会出 “下标越界 ”的信息,运行会出错,因此在编程时务 必检查下标是否越界。 6 【正确
28、答案】 B 【试题解析】 在用静态 static与外部 extern 定义变量时,系统立刻给其分配内存,而定义自动类 auto与强制放入寄存器 register类型变量时,只有当使用时才分配内存。 7 【正确答案】 C 【试题解析】 本题考查赋值语句,而选项 A、 B 是表达式,不合题意,进项 D中强制类型转换,应把类型名用括号括起水。选项 C中 i-也可写成 i=i-1,故选择 C选项。 8 【正确答案】 C 【试题解析】 本题考查三目运算符 a b?a: c d?c: d也可写成 a b?a: (cd?c: d),所以根据优先级,先算括号内的, C小于 d 为真取 c的简,再看 a小于b
29、为假,所以取 c的值。 9 【正确答案】 C 【试题解析】 线性表可以是空表,在线性表中,第一个结点没有前驱结点 (前件 ),最后一个结点没有后继结点,其他结点有且只有一个前驱点 (后继点 )。 10 【正确答案】 C 【试题解析】 sum+=i 等价于 sum i,在本题中 sum没有赋初值,而题中只输出sum的值,固此整个结果为不确定值。 11 【正确答案】 C 【试题解析】 当 i=0时 ,执行 switch 语句,对应的执行 case 0,输出 0,因为没有 break,接着执行 case 2的话句,叉输出一个 0,接着执行 default语句,再输出一个 0。返回 i+; i=1时,
30、没有 case语句,执行 default语句,输出一个 1,接着又返回 i+;当 i=2时执行 case 2和 default语句分别输出一个 2,此时又退回i+, i变为 3, for循环不成立,终止,最后输出 000122。 12 【正确答案】 D 【试题解析】 因为 x=f,所以写成 A+(x-a+1)=A+(f-a+1)=A+6=J,故选择 D选项。 13 【正确答案】 C 【试题解析】 else与离它最近的 if构成 ifelse 语句,而当 a为 2时,第一个 if语可不成立,因此什么也不做,即 c的值仍然为 2,故选择 C选项。 14 【正确答案】 A 【试题解析】 在 C语言中
31、,函数返回的类型最终取决于函数定义时在函数首都所说明的函数类型,与调用函数时主调函数所传递的实参类型和函数定义时形参的类型无关,而 return语句表达式的值将强制转换为函数定义时在函数首部所说明曲函数类型返回。 15 【 正确答案】 D 【试题解析】 当 i=0时,两个 if 都不满足,所以都不执行,直接执行 i+语句,此时 i为 1, s为 1,返回 for循环中;当 i=1时,同样不执行两个 if语句,执行i+后, i=2, s=3,返回 for返回中; j=2对也不执行 if 语句,执行 i+后, i=3,s=6,接着又执行 for循环,此时符合第一个 if语句,执行到 continu
32、e时不再执行i+了, continue是跳出本次循环,接着下次循环。永远这样执行下去, i的值永远为 3,故选降 D选顼。 16 【正确答案】 D 【试题解析】 当 b为 10时,执行 b-=a,此时 b 为 9,接着 b-表达式值为 9, b的值为 8,大于 0, while不成立,退出循环,故选择 D选项。 17 【正确答案】 D 【试题解析】 程序执行在 for循环,当 i=p,时 i中放的是 p的地址,类型不符合,因此输出随机数,故选择 D选项。 18 【正确答案】 A 【试题解析】 在程序中当 i=0时, s0=1, f(s0)为 1,执行 d+=s0, d 的值为1, i+也变为
33、1。当 i=1时, s1=3, f(s1)为 1,也为非 0,继续执行后面的表达式,此时 d的值 为 1+3=4继续着 i+变为 2,接着执行 for循环,可知 for循环的目的是把 s数组中的奇数相加,因此最后 d 的值为 1+3+5为 9,故选择 A选项。 19 【正确答案】 D 【试题解析】 在 C语言中不能直接比较两个字符串的太小,必须用特定的函数来完成,选项 A错误;选顽 B 不管大干还是小于都执行 S,不符台题意;选项C正好相反,当 s2大干 s1时,执行话句 S,可知选项 D正确。 20 【正确答案】 A 【试题解析】 在程序中因为 fun 函数的返回值为 char,而 p 是指
34、向 char的指针变量,因此类型不匹 配,故选择 A选项。 21 【正确答案】 B 【试题解析】 struct date中包含 year、 month、 day这 3个整型变量,一个整型变置占 2个字节; sizeof 是求所占字节数的运算符。 22 【正确答案】 B 【试题解析】 从实参传递过去的是结构体系数组的第 3个元素,所以输出的name为 Zhao。 23 【正确答案】 B 【试题解析】 本题考查实参与形参调用,从实参传递到形参时,只是数值的传递,调用函数中值的改变不会影响主函数中的值,因此原样输出。 24 【正确答案】 D 【试题解析】 本题考查链表结点的删除, q- next中存
35、放的是 r所指结点的首地址,将 r所指结点的茵地址存于 p- next中,则实现删除 q所指点的功能,并保持链表连续, p 所指点与 r所指结点相连。 25 【正确答案】 A 【试题解析】 本题考查逻辑与运算 “&”与逻辑或运算 “”。在选项 A中,因为 !a=0所以关系表达式 !a=1为 0,又因为逻辑与运算符 “&”两边的表达式只要一个等于零,则整个袭达武为零所以选项 A正确。在选项 B 中,关系表达式 a b 为真,表达式 (a b)&! c为假,而表 达式 (a b)&! I为真,所以整卜表达式的值为真。进项 C中, a&b 的结果为真。在选项 D中, a (b+b)&(c-a)昀结果
36、为真。 26 【正确答案】 C 【试题解析】 由题目的已知条件函数 fun的定义形式 void fun(char ch, float x) 可知第一个形参为字符型,所以 A不符合,第二个彤参为精度型,所以 D不符合,函数 fun 定义为 void 型 (无论返回值型 ),故其没有返回值,所以选项 B错误。选项 C的第一个实参的类型为字符型,篱二个实参的类型为单精度型,与函数 fun的形式参 数的类型相符合,所以选项 C为正确答案。 27 【正确答案】 C 【试题解析】 语句 char p=a, b, c;定让了一个一维字符数组 p。并用3个字符 a, b, c进行了初始化;而语句 q=“abc
37、“表示定义了一个一维字符数组,并用一个字符串常量 “abc“进行了初始化。在 C语言中系统在每个字符串常量的最后自动加入一个字符 0作为字符串的结束符。所以函数 sizeof(q)-4,而sizeof(p)=3,因而选项 C为正确答案。 28 【正确答案】 D 【试 题解析】 本题主要考查 while循环语句和 switch case语句的使用万法。其执行步骤为: k=5时,跳出 switch 语句,然后 k自减 1;当 k=4 时,跳出 switch 语句然后 k自减 1;当 k=3时, n=n+k=0+3=3,跳出 switch 语句,然后 k 自减 1;当 k=2时, n=n+k=3+2
38、=5,跳出 switch 语句,然后 k 自减 1;当 k=1时, case 1:n=n+k=5 十 1=6,没有 break 继续执竹 case 3; n=n+k=6+1=7,跳出 switch 语句,然后 k自减 1;当 k=0对,退出循环,所以输出结果 为 7。 29 【正确答案】 C 【试题解析】 由题目的语句 p=&a1可知, p 指向 a数组中下标为 1的元素 “4”,又因为 p 为指针变量,所以 px与 *(p+x)等价,因而在 for循环语句中,第一坎循环 p1:指向 a数组中下标为 2的元素 “6”,第二次循环 p2指向 a数组中下标为3的元素 “8”所以 y=6+8=14,
39、因而选项 C为正确答案。 30 【正确答案】 C 【试题解析】 本题考查排序的使用由 sort()函数的两层 for循环语句可知,其功能是把数组 a中的元素按照从大到小的顺序进行 排列。在 mam()函数中首先定义了一维整型数组 aa10,然后调用 sort(aa+2 5)实现从数组 aa 中下标为 2的元素“3”开始,其后连续的 5个素从大到小进行排列,其余元素不变。 31 【正确答案】 C 【试题解析】 abc函数是求 u、 v的最大公约数,当 v=16时,循环成立,执行其后的语句,即 w=u v, u=v; v=w; w=24 16=8, u=16, v=8,接翥返回到 while中,当
40、 v=8时,循环成立执行其后的语句,即 w=u v; u=v; v=w; w=168=0 u=8, v=0,接着再返回到 while中,当 v=0时,循环不成立,退出循环。 32 【正确答案】 A 【试题解析】 根据函数的定义可知,如果 x y成立,则函数 f1返回 x的值,函数 f2返回 y的值。所以 f1(a b)=4 f1 (c, d)=5, f2(a b)=3, f2(c, d)=2故e=f2(4, 5)=4 f=f1(3, 2)=3, g=4+3+5+2-4-3=7。 33 【正确答案】 C 【试题解析】 本题考查的是指向函数的指针。函数指针定义的基本格式为:类型标识符 (*指针变量
41、名 )( )。 “类型标识符 ”为函数返回 值的类型。 34 【正确答案】 C 【试题解析】 本题先将指针 p 指向二维数组 ch25 ,相当于 p0=”1231” ,p1=”5678”;通过双重 for循环,将 p 中的字符隔一个输出一个,通过“s=pij() ; ”语句将所要输出的字符转换成相应的十进制数。 35 【正确答案】 B 【试题解析】 根据判断本题共进行三次 for循环第一次执行 for循环 p10=piljio-1=3:第 2次执行 for循环、 p11=p11-1=4;第 3次执行for循环, p12=1。最后输出的是 a01+a11+a12=2+4+1=7。 36 【正确答
42、案】 C 【试题解析】 strcpy(s1 s2)函数的功能是将字符串 s2复制到字符串 s1中。要保证 s1存储区能容纳下 s2 字符串。 37 【正确答案】 D 【试题解析】 本题主要是考查带参数的宏的定义,过程如下: int a=a/S(k+m)S(k+m)= (k+m*k+m k+m)=9 (3+2*3+2/3+2*3+2)=0。 38 【正确答案】 B 【试题 解析】 本题主要考查结构指针: p=&data,访问结构体的成员。它可以通过结构变最访问,即 data,可以用等价的指针形式: (*p) a和 p- a来访问结构体变量中的成员。 39 【正确答案】 D 【试题解析】 首先定义
43、了一个指向一维数组 b 的指针 p,一个指向指针 p 的指针变量 q;输出 *(p+)是先输出 *p,即 b0的值,再将指针 p指向数组的下一个元素b1:输出 *q 是输出指针 p所指单元的内容。 40 【正确答案】 B 【试题解析】 第一个循环的作用是把从 0 9的数赋给 a数组;第二个循 环的作用是把 a数组中的部分元素放到数组 p 中,即 p0=a0=0, p1=a2=2,p2=a6=6;第三个循环的作用是把 p 中的各个元素的两倍之和放到 k 中,即k=5+0+4+12=21。 41 【正确答案】 D 【试题解析】 要想使程序翰出 25,则 j-40=25, j=65,而 j初值是 5
44、0,所以填入for循环的语句,使引用的数组元素累加 6550=15即可, D选项中, i下标从 0开始, 1=2指向第 3个数 50+a2=50+10=60,继续循环 60+a3=60+5=65,此时i=4跳出,循环结束。 42 【正确答案】 叶子结点。 【试题解析】 树中度为零的结点,也就是没有后继点的结点,称为叶子结点。 43 【正确答案】 继承。 【试题解析】 在 C语言中,在面向对象的程序设计方法中,子类从父类中继承了一些方法和属性。 44 【正确答案】 相关文档。 【试题解析】 所谓计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及相关文档的完整集合。 45 【正确
45、答案】 12。 【试题解析】 本题考查逗号表达式, x=5(表达式 1,表达式 2, )的形式,结果为最后一个表达式的值: x=(a-4, 6*2)=2*6=12。 46 【正确答案】 c z。 【试题解析】 小写字母在内存中以 ASCII 的形式存入,且从 a到 z依次递增,所以可以直接用 c =z判断字符在 “a“与 “z“之间为小写字母, c!= n判断用换行符结束循环。 47 【正确答案】 相邻。 【试题解析】 顺序存储属于数据的存储结构的一种,它是指数 (数据的逻辑结构 )在计算机中的表示,是把逻辑上相邻的结点存储在物理位置的相邻的存储单元中。 48 【正确答案】 关系 。 【试题解析】 在关系模型中,把数据看成是二维表。 (1)二维表中元组个