1、国家二级( C语言)笔试模拟试卷 169及答案与解析 1 软件是指 ( A)程序 ( B)程序和文档 ( C)算法加数据结构 ( D)程序、数据与相关文档的完整集合 2 检查软件产品是否符合需求定义的过程称为 ( A)确认测试 ( B)集成测试 ( C)验证测试 ( D)验收测试 3 以下不属于对象的基本特点的是 ( A)分类性 ( B)多态性 ( C)继承性 ( D)封装性 4 在设计程序时,应采纳的原则之一是 ( A)不限制 goto语句的使用 ( B)减少或取消注解行 ( C)程序越短越好 ( D)程序结构应有助于读者理解 5 下列叙述中正确的是 ( A)程序执行的效率与数据的存储结构密
2、切相关 ( B)程序执行的效率只取决于程序的控制结构 ( C)程序执行的效率只取决于所处理的数据量 ( D)以上三种说法都不对 6 数据结构中,与所使用的计算机无关的是数据的 ( A)存储结构 ( B)物理结构 ( C)逻辑结构 ( D)物理和存储结构 7 线性表的顺序存储结构和线性表的链式存储结构分别是 ( A)顺序存取的存储结构、顺序存取的存储结构 ( B)随机存取的存储结构、顺序存取的存储结构 ( C)随机存取的存储结构、随机存取的存储结构 ( D)任意存取的存储结构、任意存取的存储结构 8 树是结点的集合,它的根结点数目是 ( A)有且只有 1 ( B) 1或多于 1 ( C) 0或
3、1 ( D)至少 2 9 下列有关数据库的描述,正确的是 ( A)数据库是一个 DBF文件 ( B)数据库是一个关系 ( C)数据库是一个结构化的数据集合 ( D)数据库是一组文件 10 数据库、数据库系统和数据库管理系统之间的关系是 ( A)数据库包括数据库系统和数据库管理系统 ( B)数据库系统包括数据库和数据库管理系统 ( C)数据库管理系统包括数据库和数据库系统 ( D)三者没有明显的包含关系 11 以下 4个选项中,不能看成一条语句的是 ( A); ( B) a=5, b=2.5, c=3.6; ( C) if(a 5); ( D) if(b!=5)x=2; y=6; 12 下面四个
4、选项中,均是不合法的用户标识符的选项是 ( A) AP_0 do ( B) float 1a0_A ( C) b-a goto int ( D) 123 temp int 13 以下选项中不属于字符常量的是 ( A) C ( B) C ( C) xCC ( D) 072 14 设变量已正确定义并赋值,以下正确的表达式是 ( A) x=y*5=x+Z ( B) int(15.8%5) ( C) x=y+z+5, +y ( D) x=25%5.0 15 若变量已正确定义并赋值,以下符合 C语言语法的表达式是 ( A) a: =b+1 ( B) a=b=c+2 ( C) int 18.5%3 ( D
5、) a=a+7=c+b 16 以下程序的运行结果是 int k=0; void fun(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 已有定义: char c;,程序前面已在命令行中包含 ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是 ( A) isup
6、per(C) ( B) A =c =Z ( C) A =c&c =Z ( D) c =(z-32)&(a-32) =c 18 设有: int a=1, b=2, c=3, d=4, m=2, n=2; 执行 (m=a b)&( n=c d)后, n的值是 ( A) 1 ( B) 2 ( C) 3 ( D) 4 19 若变量已正确定义,有以下程序段 int a=3, b=5, c=7; if(a B) a=b; c=a; if(c! =a)c=b; printf(“%d, %d, %dn“, a, b, c); 其输出结果是 ( A)程序 段有语法错 ( B) 3, 5, 3 ( C) 3, 5
7、, 5 ( D) 3, 5, 7 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“); 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“)
8、; case c: printf(“*n“); 21 有以 F程序 #include stdio.h main() int y=9; for( ; y 0; y-) if(y%3=0) printf(“%d“, -y); 程序的运行结果是 ( A) 741 ( B) 963 ( C) 852 ( D) 875421 22 以下描述中正确的是 ( A)由于 do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句 ( B) do-while循环由 do开始,用 while结束,在 while(表达式 )后面不能写分号 ( C)在 do-while循环体中,是先执行一次循
9、环,再进行判断 ( D) do-while循环中,根据情况可以省略 while 23 有以下程序 #include stdio.h main() int a=1, 2, 3, 4, y,*p=&a3; -p; y=*p; printf(“y=%dn“, y); 程序的运行结果是 ( A) y=0 ( B) y=1 ( C) y=2 ( D) y=3 24 以下数组定义中错误的是 ( A) intx3=0; ( B) intx23=1, 2, 3, 4, 5, 6; ( C) intx3=1, 2, 3, 4, 5, 6; ( D) intx23=1, 2, 3, 4, 5, 6; 25 下面说
10、明不正确的是 ( A) char a10=“china“; ( B) char a10, *p=a; p=“china“ ( C) char*a; a=“china“; ( D) chara10, *P; P=a=“china“ 26 若有定义: int a23;,以下选项中对 a数组元素正确引用的是 ( A) a2!1 ( B) a23 ( C) a03 ( D) a1 2!1 27 若要求从键盘读入含有空格字符的字符串,应使用函数 ( A) getc() ( B) gets() ( C) getchar() ( D) scanf() 28 阅读下列程序段,则程序的输出结果为 #includ
11、e“stdio.h“ #defineM(X,Y)(X)*(Y) #defineN(X, Y)(X)/(Y) main() f 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 在 16位 IBM-PC机上使用 C语言,若有如下定义 stmct data inti; char ch; double f b; 则结构变量 b占用内存的字节数是 ( A) 1 ( B) 2 ( C) 7 ( D) 11 30 有以下程序 #include stdio.h main() FILE
12、*fp; int i, a6=1, 2, 3,4, 5, 6; fp=fopen(“d3 dat“, “w+b“); 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 ( 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
13、, 1, 31 有以下程序 #include stdio.h main() int s12=1, 2, 3, 4, 4, 3,2, 1, 1, 1, 2, 3, c5=0, i; for(i=0; i 12; i+) csi+; for(i=1; i 5; i+) printf(“%d“, ci); printf(“n“); 程序的运行结果是 ( A) 1 2 3 4 ( B) 2 3 4 4 ( C) 4 3 3 2 ( D) 1 1 2 3 32 有以下程序 #include stdio.h void fun(int *a, int n)/*fun函数的功能是将 a所指数组元素从大到小排序
14、 */ int t, i, j; for(i=0; i n-1; j+) for(j=i+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 ( 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 下面程序的输出结果是 #inc
15、lude stdio.h #include string.h main() char *pl=“abc“, *p2=“ABC“, str50=“xyz“; strcpy(str+2, strcat(p1, p2); printf(“%sn“, str); ( A) xyzabcABC ( B) zabcABC ( C) xyabcABC ( D) yzabcABC 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); 在横线处应填入的是
16、( A) i=p ( B) ap=ai ( C) p=j ( D) p=i 35 下列程序的运行结果为 #include stdio.h void abc(char*str) int a, b; for(a=b=0; stra!=0; a+) if(stra!=c) strb+=stra; strb=0; void main() char str=“abcdef“; abc(str); printf(“str)=%s“, str); ( A) str=abdef ( B) str=abcdef ( C) str=a ( D) str=ab 36 有以下程序 #include stdio.h #
17、include string.h typedef strtlct char name9; char sex; floatscore2; STU; void f(STU A) STU b=“Zhao“, m, 85.0, 90.0; int i; strcpy(a.name, b name); a sex b.sex; for(i=0; i 2; i+) a.scorei=b ( A) Qian, f,95, 92 ( B) Qian, m, 85, 90 ( C) Zhao, f,95, 92 ( D) Zhao, m, 85, 90 37 有以下程序 #include stdio.h mai
18、n() FILE *fp; int a10=1, 2,3, i, n; fp=fopen(“d1.daf“, “w“); for(i=0; i 3; i+) fprintf(fp, “%d“,ai); fprintf(fp, “n“); fclose(fp); fp=fopen(“d1.dat“, “r“); fscanf(fp,“%d“, &n); fclose(fp); ( A) 12300 ( B) 123 ( C) 1 ( D) 321 38 已知 int a=1, b=3则 ab的值为 ( A) 3 ( B) 1 ( C) 2 ( D) 4 39 阅读下列程序,则运行结果为 #inc
19、lude“stdio.h“ fun() static int x=5; x+; return x; main() int i, x; for(i=0; i 3; i+) x=fun(); printf(“%dn“, x); ( A) 5 ( B) 6 ( C) 7 ( D) 8 40 有以下程序 #include stdio.h voidfun(char*t, char*s) while(*t!=0) t+; while(*t+=*s+)!=0); main() char ss10=“acc“,aa10=“bbxxyy“; fun(ss, aa); printf(“%s, %sn“, ss,
20、aa); 程序的运行结果是 ( A) accxyy, bbxxyy ( B) acc, bbxxyy ( C) accxxyy, bbxxyy ( D) accbbxxyy, bbxxyy 40 在树形结构中,树根结点没有 _。 40 数据结构分为逻辑结构与存储结构,线性链表属于 _。 40 一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体 “项目主管 ”与实体 “项目 ”的联系属于 _的联系。 40 数据库设计分为以下 6个设计阶段:需求分析阶段、 _、逻辑设计阶段、物理设计阶段、实施阶段、 运行和维护阶段。 40 阅读下面程序段,则执行后输出的结果是 _。 #include“s
21、tdio.h“ main() char fun(char, int); char a=A; int b=13; a=fun(a, b); putchar(a); charfun(char a, int b) char k; k=a+b; return k; 40 函数 fun的返回值是 _ fun(char*a, char*b) int num=0, n=0; while(*(a+num)!=0)num+; while(bn)*(a+num)=bn; num+; n+; return num; 40 以下程序的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,
22、函数返回删除后数组中数据的个数。 例如,若一维数组中的数据是: 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10 删除后,数组中的内容应该是: 2 3 4 5 6 7 8 9 10。 请填空。 #include stdio.h #define N 80 intfun(int a, int n) int i, j=1; for(i=1; i n; i+) if(aj-1 40 以下程序的运行结果是 _。 #include stdio.h main() int x=1, y=0, a=0, b=0; switch(x) case 1: switch(y) case
23、0: a+; break; case 1: b+; break; case 2: a+; b+; break; case 3: a+; b+; printf(“a=%d, b=%dn“, a, b); 40 以下程序的输出结果是 _。 fun(int x, inty, int z) z=x*x+y*y; main() int a=31; fun(6, 3, a) printf(“%d“, a) 40 函数 my_cmp()的功能是比较字符串 s和 t的大小,当 s等于 t时返回 0,否则返回 s和 t的第一个不同字符的 ASCII码差值,即 s t时返回 正值,当 s t时返回负值。请填空。
24、my_cmp(char *s, char*t) while(*s=*t) if(*s=0)return 0; +s; +t; return_; 40 以下程序的输出结果是 _。 void reverse(int a, int n) int i, t; for(i=0; i n/2; i+) t=ai; ai=an+1+i; an-1-i=t; main() int b10=1, 2, 3, 4, 5, 6, 7, 8, 9, 10; int i, s=0; reverse(b, 8); for(i=6; i 10; i+)s+=bi; printf(“%dn“, s); 40 以下说明语句中,
25、 _是结构体类型名。 typedef struct int n; char ch8; PER; 40 以下程序的作用是:从名为 filea dat的文本文件中逐个读入字符并显示在屏幕上。请填空。 #include stdio.h main() FILE *fp; char ch; fp=fopen(_); ch=fSetc(fp); while(!feof(fp) putchar(ch); ch=fSetc(fp); putchar(n); fclose(fp); 国家二级( C语言)笔试模拟试卷 169答案与解析 1 【正确答案】 D 【试题解析】 软件是程序、数据与相关文档的集合,相对于计
26、算机硬件而言,软件是逻辑产品而不是物理产品,是计算机的无形部分。 2 【正确答案】 A 【试题解析】 确认测试的 任务是验证软件的功能和性能,以及其他特性是否满足需求规格说明中确定的各种需求;集成测试的主要目的是发现与接口有关的错误。 3 【正确答案】 C 【试题解析】 对象的基本特点:标志唯一性、分类性、多态性、封装性和模块独立性。 4 【正确答案】 D 【试题解析】 滥用 goto语句将使程序流程无规律,可读性差,因此 A)不选;注解行有利于对程序的理解,不应减少或取消, B)也不选;程序的长短要依照实际情况而论,而不是越短越好, C)也不选。 5 【正确答案】 A 【试题解析】 程序执
27、行的效率与很多因素有关,如数据的存储结构、程序所处理的数据量、程序所采用的算法等。顺序存储结构在数据插入和删除操作上的效率比链式存储结构的效率低。 6 【正确答案】 C 【试题解析】 数据结构概念一般包括数据的逻辑结构、存储结构及数据上的运算集合等。数据的逻辑结构只抽象地反映数据元素之间的逻辑关系,而不管它在计算机中的存储形式。 7 【正确答案】 B 【试题解析】 顺序存储结构中,数据元素存放在一组地址连续的存储单元中,每个数据元素地址可通过公式 LOC(ai)=LOC(a1)+(i-1)L计算得到,从而实现了随机存取。对于链式存储结构,要对某结点进行存取,都得从链的头指针指向的结点开始,这是
28、一种顺序存取的存储结构。 8 【正确答案】 C 【试题解析】 树是 N(N0)个结点的有限集合,当 N=0,时称为空树,对于空树没有根结点,即根结点的个数为 0,对于非空树有且只有一个根结点,所以树的根结点数目为 0或 1。 9 【正确答案】 C 【试题解析】 数据库 (DataBase,简称 DB)是数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,可被各 个应用程序所共享。数据库中的数据具有 “集成 ”、 “共享 ”的特点。 10 【正确答案】 B 【试题解析】 数据库系统 (Database System,简称 DBS),包括数据库(Database,简称
29、DB)和数据库管理系统 (Da-tabase Management System,简称DBMS)。 11 【正确答案】 D 【试题解析】 选项 D)为两条语句。 12 【正确答案】 C 【试题解析】 C语言规定的标识符只能由字母、数字和下划线 3种字符组成,第一个字符必须为字母或下划线 ,并且不能使用 C语言中的关键字作为标识符。选项 C)中 goto和 int是关键字, b-a中 -不是组成标识符的 3种字符之一;选项 D)中 int是关键字,所以,均是不合法用户标识符的选项是 C)。 13 【正确答案】 B 【试题解析】 在 C语言程序中,用单引号把一个字符或反斜线后跟一个特定的字符括起来
30、表示一个字符常量。选项 A)、 C)和 D)为正确的字符常量,而选项 B)是用双引号括起来的字符,表示一个字符串常量。 14 【正确答案】 C 【试题解析】 求余运算符 “%“两边的运算对象必须是整型, 而选项 B)和 D)中“%“两边的运算对象有浮点整数据,所以选项 B)和 D)是错误的表达式。在选项 A)中赋值表达式的两边出现相同的变量 x,也是错误的。选项 C)是一个逗号表达式,所以正确答案为 C)。 15 【正确答案】 B 【试题解析】 选项 A)中包含一个不合法的运算符 “: =”;选项 C)应改为(int)18.5%3;选项 D)可理解为两个表达式: a+7=c+b和 a=a+7,
31、其中第一个是错的,因为 C语言规定赋值号的左边只能是单个变量,不能是表达式或常量等。因此,正确答案是选项 B),它实际上相当于 a=(b=c+2),进而可分解为两个表达式:b=c+2和 a=b。 16 【正确答案】 B 【试题解析】 由于在 main()函数中,变量 i=4,所以就调用 fun(4),则输出“m=4k=4”。然后变量 k增 1等于 5,变量 i增 1等于 5,所以 main()函数的“pdntf(“i=%d k=%d n“, i, k); ”语句输出 “i=5 k=5”。 17 【正确答案】 B 【试题解析】 在本题中,选项 B)实际是先计算关系表达式 “A =c”的值是 0还
32、是 1再比较该值与字符 z之间的大小关系,显然不能实现题目 所要求的功能,而选项 A)、 C)、 D)都可以。 18 【正确答案】 B 【试题解析】 本题考查逻辑与运算的运算规则。其规则是:当运算符前后两个条件表达式都满足时,其最终结果才为真。当发现第一个表达式的值为假,计算机将不再执行后面表达式的运算。 本题中;由于前一个表达式的值为 “假 ”,所以,后面的表达式不再进行运算,因而 n的值保持不变,仍为 2。 19 【正确答案】 B 【试题解析】 两个 if语句的判断条件都不满足,程序只执行了 c=a这条语句,所以变量 c的值等于 3,变量 b的值没有变化,程序 输出的结果为 3, 5, 3
33、。 20 【正确答案】 C 【试题解析】 C语言中, switch语句专用于实现多分支结构程序,其特点是各分支清晰而直观。 switch后面括号中可以是任何表达式,取其整数部分与各常量表达式进行比较。常量表达式中不能出现变量,且类型必须是整型、字符型或枚举型,各常量表达式各不相同。 21 【正确答案】 C 【试题解析】 本题考查变量的自加 “+”和自减 “-”问题。当 y的值为 9、 6或 3时, if语句的条件成立,执行输出语句,输出表达式 -y的值, y的自减要先于输出语句 执行,故输出结果为 8 5 2。 22 【正确答案】 C 【试题解析】 do-while语句的一般形式为: do循环
34、体语句 while(表达式 );,其中循环体语句可以是复合型语句,但必须用花括号括起来。 while后必须要有分号作为语句的结束,在 do-while循环中,不可以省略 while。 23 【正确答案】 D 【试题解析】 在程序中指针变量 P初始指向 a3,执行 p减 1后, P指向 a2,语句 y=*p的作用是把 a2的值赋给变量 y,所以输出为 y=3。 24 【正确答案】 B 【试题解析】 二维数组的初始化有以下几种形式: 分行进行初始化; 不分行进行初始化; 部分数组元素进行初始化; 省略第一维的定义,不省略第二维的定义。选顷 B)等号右边分了 3行,大于等号左边数组的行数 2。 25
35、 【正确答案】 D 【试题解析】 C语言中操作一个字符串常量的方法有: 将字符串常量存放在一个字符数组之中; 用字符指针指向字符串,然后通过字符指针来防问字符串存储区域。当字符串常量在表达式中出现时,根据数组的类型转换规则,将其转换成字符指针。 本题 D)项中错误的关键是对数组初始化时, 可以在变量定义时整体赋初值,但不能在赋值语句中整体赋值。 26 【正确答案】 D 【试题解析】 C语言中数组下标是从 0开始的,所以二维数组 a23的第一维下标取值为 0、 1;第二维的下标取值为 0、 1、 2,因而选项 A)、 B)、 C)都是错误的,选项 D)表示数组元素 a00。 27 【正确答案】
36、B 【试题解析】 scanf()语句用 “空格 ”区别不同的字符串; getc()与 getchar()语句不能用于字符串的读入。 28 【正确答案】 A 【试题解析】 带参数的宏定 义命令行形式如下: #de-fine宏名 (形参表 )替换文本。首先进行 M的宏替换,之后再进行 N的宏替换,替换后的表达式为(a)*(b)/(c)。 29 【正确答案】 D 【试题解析】 结构体变量所占用内存的字节数是其所有成员所占用内存字节数之和。本题中整型变量 i所占用的内存是 2字节,字符型变量 ch所占用的内存是1字节,双精度型变量 f所占用的内存是 8字节,三者相加即可。 30 【正确答案】 A 【试
37、题解析】 首先利用 fwrite函数将数组 a中的数据写到文件中,接着 fseek函数的功能是读文 件的位置,指针从文件头向后移动 3个 int型数据,这时文件位置指针指向的是文件中的第 4个 int数据 “4”,然后 fread函数将文件 fp中的后 3个数据 4, 5, 6读到数组 a中,这样就覆盖了数组中原来的前 3项数据。最后数组中的数据就成了 4, 5, 6, 4, 5, 6。 31 【正确答案】 C 【试题解析】 在 br(i=0; i 12; i+)csi)+中,数组元素 si的值作为数组 c的下标,当退出循环时,数组 c的 4个元素的值分别为 4、 3、 3、 2。 32 【正
38、确答案】 D 【试题解析】 在本题中,主函数在调用 fun()函数进行排序时,传递的参数是c+4和 6, fun()函数实现的功能是将数组 c的第 5个元素开始的 6个元素依次进行从大到小的顺序排列。排序之后,数组 c的内容变为 1, 2, 3, 4, 9, 8, 7, 6,5, 0。 33 【正确答案】 C 【试题解析】 本题考查的重点是拷贝字符串 使用 strcpy()函数,该函数的调用方式是: strcpy(字符数组,字符串 ),其中 ”字符串 ”可以是字符串常量,也可以是字符数组。函数的功能是:将 “字符串 ”完整地复制到 “字符数组 ”中,字符数组中原 有的内容被覆盖。 使用该函数时
39、注意: 字符数组必须定义得足够大,以便容纳复制过来的字符串。复制时,连同结束标志 0一起复制; 不能用赋值运算符 “: ”将一个字符串直接赋值给一个字符数组,只能用 strcpy()函数处理。 另外,本题还考查连接字符串的 strcat()函数,其调用方 34 【正确答案】 D 【试题解析】 该程序先判断 ai ap,如果条件为真,则 ai比当前设定的最小值小 (p保留的当前最小元素的下标 ),那么将 i赋给 p,即将比较过的最小元素下标保留在 p中,作为下面判断的标准 。 35 【正确答案】 A 【试题解析】 本题考查了用字符指针引用字符数组中的字符及对字符的操作。函数 abc()的 for
40、语句执行过程是:从字符指针 str所指向的字符数组的第一个元素开始,逐一判断字符是否为 c,若不是就执行一次数组元素的赋值过程,若字符为 c就不执行。 36 【正确答案】 A 【试题解析】 本题考查的是函数调用时的参数传递问题。程序在调用函数 f时,传给函数 f的参数只是结构变量 c在栈中的一个拷贝,函数 f的所有操作只是针对这个数据拷贝进行的修改,这些都不会影响变量 c的 值。 37 【正确答案】 B 【试题解析】 在函数中首先把整型数组 a10中的每个元素写入文件 d1.dat中,然后再次打开这个文件,把文件 d1.dat中的内容读入到整型变量 n中,最后输出变量 n的值。 38 【正确答
41、案】 C 【试题解析】 是按位异或运算,如果对应位不同则结果为 1,相同则为 0。 39 【正确答案】 D 【试题解析】 在整个程序运行期间,静态局部变量在内存的静态存储区中占据着永久的存储单元,即使退出函数以后,下次再进入该函数时,静态局部变量仍使用原来的存储 单元,静态局部变量的初值是在编译的时候赋予的,在程序执行期间不再赋予初值。本题由于连续三次调用函数 fun(),三次对静态变量 x进行操作, x的值应依次为 6, 7, 8。 40 【正确答案】 D 【试题解析】 本题中 fun函数实现丁字符串函数 str-eat的功能,将字符串 aa连接到字符串 ss的末尾。调用 fun函数时,形参
42、 t和 s分别指向了字符串 ss和 aa,然后通过一个 while循环使 t指向字符串 ss的结束符的位置,第二个 while循环将字符串 aa中的字符 (包括结束符 0)逐个复制到字符串 ss的末尾处。 40 【试题解析】 在树形结构中,每一个结点只有一个前件,称为父结点;没有前件的结点只有一个,称为树的根结点;每一个结点可以有多个后件,它们都称为该结点的子结点;没有后件的结点称为叶子结点。 40 【试题解析】 数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构;数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式。在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元
43、素之间前后件关系的信息。 40 【试题解析】 两个实体集间的联系实际上是实体集间的函数系,这种函数 关系可以有 3种,即一对一 (1:1)的联系、一对多 (1:N)或多对一 (N:1)的联系和多对多(N:N)的联系。 40 【试题解析】 数据库设计分为以下 6个设计阶段:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、实施阶段及数据库运行和维护阶段。 40 【试题解析】 函数说明语句中的类型名必须与函数返回值的类型一致。本题实现的是在字符 A的 ASCII码值上加上一个常数,使之变成另一个 ASCII码值,从而输出字符。 40 【试题解析】 本题首先通过第一个 while循环计算字符串
44、 a的长度 ,再通过第二个循环,将字符串 a和 b相连,最后返回连接后的总长度。 40 【试题解析】 本题程序的流程是:让 i; j都从 1开始,其中 j用于控制删除后剩下的数中的下标, i用于搜索原数组中的元素。 j始终是新数组已有元素中最后一个元素的下一个元素的下标,所以 if()中的条件是 aj-1!=ai,其中 aj-1就是新数组中的最后一个元素,若条件成立则表示出现了不同的值,所以 si要留到新数组中。注本题中 i、 j的初值都要从 1开始,该算法只能用于数组已排序的题目中。 40 【试题解析】 本题考查了 switch结构的内容。 C语言中,程序执行完一个 case标号的内容后,如
45、果没有 break语句,控制结构会转移到下一个 case继续执行,因为 case常量表达式只是起语句标号作用,并不是在该处进行条件判断。本题程序在执行完内部 switch结构后,继续执行了外部 switch结构的 case2:分支,最后 a和 b的值分别为 2和 1。 40 【试题解析】 在函数调用时,形参值的改变,不会改变实参值。 40 【试题解析】 两字符串大小比较必须从它们的首字符开始,在对应字符相等情况下循环,直至不相等结束。相等时,若字符 串已到了字符串的结束标记符,则两字符串相同,函数返回。值;如还有后继字符,则准备比较下一对字符。对应字符不相同,循环结束。循环结束时,就以两个当前
46、字符的差返回,所以在空框处应填入 *s-*t,保证在 t时,返回正值,当 s t时,返回负值。 40 【试题解析】 在 main函数中,调用 reverse函数将 b数组中的前 8个成员进行互置,执行完毕后, b数组中的成员为 8, 7, 6, 5, 4, 3,2, 1, 9, 10,然后再执行 for循环结构,将 b6, b7b9 的值相加,结果为盟。 40 【试题解析 】 本题中, typedef声明新的类型名 PER来代替已有的类型名,PER代表上面指定的一个结构体类型,此时,也可以用 PER来定义变量。 40 【试题解析】 fopen函数的调用方式通常为 fopen(文件名,使用文件方式 )。本题中要求程序可