1、2008 年 4月国家二级( C语言)笔试真题试卷及答案与解析 1 程序流程图中带有箭头的线段表示的是 ( )。 ( A)图元关系 ( B)数据流 ( C)控制流 ( D)调用关系 2 结构化程序设计的基本原则不包括 ( )。 ( A)多态性 ( B)自顶向下 ( C)模块化 ( D)逐步求精 3 软件设计中模块划分应遵循的准则是 ( )。 ( A)低内聚低耦合 ( B)高内聚低耦合 ( C)低内聚高耦合 ( D)高内聚高耦合 4 在软件开发中,需求分析阶段产生的主要文档是 ( )。 ( A)可行 性分析报告 ( B)软件需求规格说明书 ( C)概要设计说明书 ( D)集成设计计划 5 算法的
2、有穷性是指 ( )。 ( A)算法程序的运行时间是有限的 ( B)算法程序所处理的数据量是有限的 ( C)算法程序的长度是有限的 ( D)算法只能被有限的用户使用 6 对长度为 n的线性表排序,在最坏情况下,比较次数不是 n(n-1)/2的排序方法是( )。 ( A)快速排序 ( B)冒泡排序 ( C)直接插入排序 ( D)堆排序 7 下列关于栈的叙述正确的是 ( )。 ( A)栈按 “先进先出 ”组织数据 ( B)栈按 “先进后出 ”组织数据 ( C)只能在栈底插入数据 ( D)不能删除数据 8 在数据库设计中,将 E-R图转换成关系数据模型的过程属于 ( )。 ( A)需求分析阶段 ( B
3、)概念设计阶段 ( C)逻辑设计阶段 ( D)物理设计阶段 9 有三个关系 R、 S和如下;由关系 R和 S通过运算得到关系 T,则所使用的运算为 ( )。 ( A)并 ( B)自然连接 ( C)笛卡尔积 ( D)交 10 设有表示学生选课的三张表,学生 S(学号,姓名,性别,年龄,身份证号 ),课程 C(课号,课名 ), Q选课 SC(学号,课号,成绩 ),则表 SC的关键字 (键或码 )为( )。 ( A)课号,成绩 ( B)学号,成绩 ( C)学号,课号 ( D)学号,姓名,成绩 11 下列叙述中正确的是 ( )。 ( A) C程序中的注释只能出现在程序的开始位置和语句的后面 ( B)
4、C程序书写格式严格,要求一行内只能写一个语句 ( C) C程序书写格式自由,一个语句可以写在多行上 ( D)用 C语言编写的程序只能放在一个程序文件中 12 下列选项中不合法的标识符是 ( )。 ( A) print ( B) FOR ( C) b=1.1; 16 有下列程序段: char ch;int k; ch=a; k=12; printf(“%c,%d,“,ch,ch,k); printf(“k=%dn“,k); 已知字符 a的ASCII十进制代码为 97,则执行上述程序段后输出结果是 ( )。 ( A)因变量类型与格式描述符的类型不匹配输出无定值 ( B)输出项与格式描述符个数不符,
5、输出为零值或不定值 ( C) a,97,12k=12 ( D) a,97,k=12 17 已知字母 A的 ASCII代码值 为 65,若变量 kk为 char型,下列不能正确判断出比中的值为大写字母的表达式是 ( )。 ( A) kk =A 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,5 ( D) 3,5,7 20 有下列程序: #include stdio.h main() int x=1,y=0,a=0,b=0; switch(x
6、) case 1: switch(y) case 0:a+;break; case 1:b+;break; case 2: a+;b+;break; case 3: a+;b+; printf(“a=%d,b=%dn“,a,B) ; 程序的运行结果是 ( )。 ( A) a=1, b=0 ( B) a=2, b=2 ( C) a=1, b=1 ( D) a=2, b=1 21 有下列程序: #inelude stdio.h main() int x=8; for(;x 0;x-) if(x%3) printf(“%d,“,x-);continue; printf(“%d,“,-x); 程序的运
7、行结果是 ( )。 ( A) 7,4,2 ( B) 8,7,5,2 ( C) 9,7,6,4 ( D) 8,5,4,2 22 下列不构成无限循环的语句或语句组是 ( )。 ( A) n=0; do +n; while (n =0); ( B) n=0; while (1) n+; ( C) n=10; While (n); n-; ( D) for(n=0, i=1; ;i+)n+=i 23 有下列程序: #include stdio.h main() int a=1,2,3,4,y,*p= -p; y=*p; printf(“y=%dn“,y); 程序的运行结果是 ( )。 ( A) y=0
8、 ( B) y=1 ( C) y=2 ( D) y=3 24 下列错误的定义语句是 ( )。 ( A) int x 3=0,1,1,2,3; ( B) int x43=1,2,3,1,2,3,1,2,3,1,2,3; ( C) int x4 =1,2,3,1,2,3,1,2,3,1,2,3; ( D) int x 3=1,2,3,4; 25 设有下列程序段: char s20=“Beijing“,*p; p=s; 则执行 p=s;语句后,下列叙述正确的是 ( )。 ( A)可以用 *p表示 s0 ( B) s数组中元素的个数和 p所指字符串长度 相等 ( C) s和 p都是指针变量 ( D)数
9、组 s中的内容和指针变量 p中的内容相同 26 若有定义: int a233;,下列选项中对 a数组元素正确引用的是 ( )。 ( A) a2!1 ( B) a23 ( C) a03 ( D) a1 2!1 27 有定义语句: char s10;, 若要从终端给 s输入 5个字符,错误的输入语句是( )。 ( A) gets( char c;REC; REC t1,t2; ( B) struct REC; int n; char c; REC t1,t2; ( C) typedef struct REC; int n=0; char c=A; t1,t2; ( D) stmct int n;
10、char c; REC; REC t1,t2; 30 下列叙述中错误的是 ( )。 ( A) gets函数用于从终端读入字符串 ( B) getchar函数用于从磁盘文件读入字符 ( C) fputs函数用于把字符串输出到文件 ( D) fwrite函数用于以二进制形式输出数据到文件 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“); 程序的 运行结果是 ( )。 (
11、 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 * s,int n1,int n2) int i,j,t; i=n1;j=n2; while(i j)t=si;si=sj;sj=t;i+;j-; main() int a10=1,2,3,4,5,6,7,8,9,0,k; fun(a,0,3); fun(a,4,9);fun(a,0,9); for(k=0;k10;k+)printf(“%d“,ak);printf(“n“); 程序的运行结果是 ( )。 ( A)
12、 987654321 ( B) 4321098765 ( C) 5678901234 ( D) 987651234 33 有下列程序: #include stdio.h #include “string.h“ void tim(char *s,int n) char *t;int i,j; for(i=0;i n-1;i+) for(j=i+1;j n;j+) if(strlen(si) strlen(sj) t=si;si=sj;sj=t; main() char *ss= “bcc“,“bbcc“,“xy“,“aaaacc“,“aabcc“; fun(ss,5);printf(“%s,%s
13、n“,ss0,ss4); 程序的运行结果是 ( )。 ( A) xy,aaaacc ( B) aaaacc,xy ( C) bcc,aabcc ( D) aabcc,bcc 34 有下列程序: #include stdio.h int f(int x) int y; if(x=0x=1)return(3); y=x*x-f(x-2); return y; main() int z; z=f(3);printf(“%dn“,z); 程序的运行结果是 ( )。 ( A) 0 ( B) 9 ( C) 6 ( D) 8 35 有下列程序: #include stdio.h void fun(char
14、*a, char *B) while(*a=*)a+; while(*b=*A) b+;a+; main() char *s=“*a*b*“,t80; fun(s,t);puts(t); 程序的运行结果是 ( )。 ( A) *a*b ( B) a*b ( C) a*b* ( D) ab 36 有下列程序: #include stdio.h #include “string.h“ typedef structchar name9; char sex;float score2;STU; void f(STU A) STU b=“Zhao“,m,85.0,90.0; int i; strcpy(a
15、.name,b.name); a.sex=b.sex; 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 有下列程序: #include stdio.h main() FILE *fp; int a
16、10=1,2,3,i,n; fp=fopen(“d1.dat“,“w“); for(i=0;i 3;i+) fprintf(fp,“%d“,ai); fprintf(fp,“n“); fclose(fp); fp=open(“d1.dat“,“r“); fscanf(fp,“%d“, fclose(fp); prinff(“%dn“,n); 程序的运行结果是 ( )。 ( A) 12300 ( B) 123 ( C) 1 ( D) 321 38 变量 a中的数据用二进制进表示的形式是 01011101,变量 b中的数据用二进制表示的形式是 11110000,若要求将 a的高 4位取反,低 4位
17、不变,所要执行的运算是 ( )。 ( A) a*b ( B) a b ( C) a,则下列叙述正确的是 ( )。 ( A) f是基类型为 int的指针变量 ( B) f是指向函数的指针变量,该函数具有一个 int类型的形态 ( C) f是指向 int类型一维数组的指针变量 ( D) f是函数名,该函数的返回值是其类型为 int类型的地址 41 测试用例包括输入值集和【 】值集。 42 深度为 5的满二叉树有【 】个叶子结点。 43 设某循环队列的容量为 50,头指针 front=5(指向队头元素的前一位置 ),尾指针rear=29(指向队尾元素 ),则该循环队列中共有【 】个元素。 44 在关
18、系数据库中,用来表示实体之间联系的是【 】。 45 在数据库管理系统提供的数据定义语言、数据操纵语言和数据控制语言中,【 】负责数据的模式定义与数据的物理存取构建。 46 已有定义; char c= ;int a=1, b; (此处 c的初值为空格字符 ),执行b=!c ,下列程序段的输出结果是【 】。 for(k=2;k 6;k+,k+)printf(“+%d“k); 49 下列程序的输出结果是【 】。 #include stdio.h void swap(int *a, int *B) int *t; t=a;a=b;b=t; main() int i=3,j=5,*p= swap(p,q
19、);printf(“%d %dn“,*p,*q); 50 下列程序舶输出结果是【 】。 #include stdio.h main() int a5=2,4,6,8,10,*p; p=a;p+; printf(“%d“,*p); 51 下列程序的输出结果是【 】。 #include stdio.h void fun(int x) if(x/2 0) fun(x/2); printf(“%d“,x); main() fun(3);printf(“n“); 52 下列程序中函数 fun的功能是:统计 person所指结构体数组中所有性别 (sex)为M的记录的个数,存入变量 n中,并作为函数值返回
20、。请填空。 #include stdio.h #define N 3 typedef struct int num; char nam10; char sex; SS; int fun(SS person) int i,n=0; for(i=0; i N; i+) if(【 】 =M) n+; return n; main() SS WN=1,“AA“,F,2,“BB“,M,3,“CC“,M; int n; n=fun(W); printf(“n=%dn“, n); 53 下列程序从名为 filea.dat的文本文件中逐个读入字符并显示在屏幕上。请填空。 #include stdio.h ma
21、in() FILE *fp; char ch; fp = fopen(【 】 ); ch = fgetc(fp); while(!feof(fp) putchar(ch); ch=fgetc(fp); putchar(“n“); fclose(fp); 54 下列程序的定义语句中, x1的初值是【 】,程序运行后输出的内容是【 】。 #include stdio.h main() int x=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,*p4,i; for(i=0;i 4;i+) pi= printf(“%d“,pi0); printf(“n“); 2008
22、年 4月国家二级( C语言)笔试真题试卷答案与解析 1 【正确答案】 C 【试题解析】 程序流程图是一种传统的、应用广 泛的软件过程设计工具,通常也称为程序框图。其中,用带箭头的线段表示控制流,用矩形表示加工步骤,用菱形表示逻辑条件, 2 【正确答案】 A 【试题解析】 结构化程序设计方法的主要原则可以概括为:自顶向下,逐步求精,模块化和限制使用 GOTO 语句,其中不包括多态性。 3 【正确答案】 B 【试题解析】 耦合性和内聚性是模块独立性的两个定性标准,各模块的内聚性越强,则耦合性越弱。软件设计应该遵循高内聚低耦合。 4 【正确答案】 B 【试题解析】 需求分析的最终结果是生成软件需要规
23、格说明 书,可以为用户、分析人员和设计人员之间的交流提供方便,可以直接支持目标确认,又可以作为控制软件开发进程的依据。 5 【正确答案】 A 【试题解析】 算法的有穷性,是指算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。 6 【正确答案】 D 【试题解析】 各种排序方法中最坏情况下需要比较的次数分别为:冒泡排序 n(n-1)/2,快速排序 n(n-1)/2、简单插入排序 n(n-1)/2、希尔排序 O(n1.5),简单选择排序 n(n-1)/2、堆排序 O(nlog2n), 7 【正确 答案】 B 【试题解析】 栈是限定在一端进行插入和删除的线性表,允许进行插入和删除元素
24、的一端称为栈顶,另一端称为栈底。栈是按照 “先进后出 ”的原则组织数据的。 8 【正确答案】 C 【试题解析】 数据库的设计阶段包括需要分析、概念设计、逻辑设计和物理设计,其中将 E-R图转换成关系数据模型的过程属于逻辑 9V阶段。 9 【正确答案】 D 【试题解析】 关系 R与 S 经交运算后所得到的关系是由那些既在 R内又在 S 内的有序组组成的,记为 RS。 10 【正确答案】 C 【试题解析】 关键 字是指属性或属性的组合,其值能够唯一地标识一个元组,而在 SC中学号和课号的组合可以对元组进行唯一的标识。 11 【正确答案】 C 【试题解析】 本题主要考查的是 C语言结构中的源程序书写
25、格式这个知识点,在 C语言中注释部分对程序的运行结果不产生任何影响,它可以出现在任意位置; C语言书写自由,一行内可以写多个语句,一个语句可以写在多行上;由于C语言编写的程序有很好的移植性,可以放在多个程序文件中。 12 【正确答案】 C 【试题解析】 本题考查的是数据类型及其运算中标识符的定义,标识符只能由数字、字母和下画线组成,并且只能以字母和下画线开头,所以选项 C)不合法。 13 【正确答案】 B 【试题解析】 字符常量是括在一对单引号内的一个字符,选项 A)中 C是字符常量;选项 B)中 “C“是字符串常量;选项 C)中 xCC是十六进制表示的转义字符:选项 D)中中 072是八进制
26、表示的转义字符。 14 【正确答案】 C 【试题解析】 在赋值表达式中,赋值符号 “=”的左边只能为要赋值的变量,不能为表达式,右边可以为常量或者是表达式,故选项 A)错误,选项 C)正确:在取余运算中,运算符 “%”两边都必须是整型数据,所以选项 B)、 D)错误。 15 【正确答案】 B 【试题解析】 本题考查的是数据类型的定义并赋值,选项 A)中对变量声明类型且赋值的情况是不允许出现的,必须单独定义其类型。选项 B)给实型变量赋值时不用引号,也不能将地址赋予实型变量: C语言允许在一个类型说明符后说明多个相同类型的变量,各变量之间要用逗号 (,)隔开,而不是用分号 (;)隔开;在计算机存
27、储字符时将字符相应的 ASCII码以其对应的二进制进行存放,选项 B)中的定义是合法的,故选项 B)正确。 16 【正确答案】 D 【试题解析】 在用基本输出语句 printf 时,格式说明与输出项的个数应该相同。如果格式说明的个数少于输出项的个数 (正如本题的情况 ),多余的输出项不予输出,如果格式说明个数多于输出项个数,则对于多余的格式项输出不定值或 0。故本题选项 D)是正确的输出结果。 17 【正确答案】 B 【试题解析】 选项 A)用逻辑与运算符来连接关系表达式 A =kk和 kk =Z,以此来判断 kk的字母是否是大写字母。选项 C)用逻辑与运算符来连接关系表达式 (kk+32)
28、=a和 (kk+32) =z,以此来判 断 kk的字母是否是大写字母。选项 D)调用函数 isalpha(),首先判断 kk是否为字母,接着通过与运算 (kk =91)来判断比是否为大写字母;而选项 B)中首先判断语句 (kk A),假如为真时,就不进行 (kk =Z)的判断,直接进入非运算,故不能正确判断 kk是否为大写字母,故选项 B)符合题意。 18 【正确答案】 B 【试题解析】 逻辑或运算中,只要有一项为真,表达式的值就为真,故选项 B)中 c的值不为 2、 4、 6时,表达式的值也为真。 19 【正确答案】 B 【试题解析】 本题考查 的是程序结构设计中 if语句的应用,当 if
29、判断条件成立时就执行其后的相关语句,否则不执行,本题中第一个 if 条件不成立,故不执行“a=b”,接着执行 “c=a”,此时第二个 if条件也不成立,故不执行其后语句,最终c的值为 3。 20 【正确答案】 D 【试题解析】 本题考查的是用 switch 语句实现多分支选择结构,首先进入第一个 switch(x)判断,进入 case 1中进行嵌套判断,如果 switch(y)也成立, a自加 1,遇到 break,退出嵌套,接着执行 case 2, a自加为 2, b自加为 1,遇到 break,结束循环,此时 a=2, b=1,故选项 D)正确 21 【正确答案】 D 【试题解析】 “x-
30、”表示先执行程序,再令 x的值减 1;而 “-x”表示令 x的值减1,再执行程序。 x=8时, x%2为非 0值,执行语句 printtr(“%d,“, x-); continue;),输出 “8,”,此时经过 x-, x的值变为 7,跳出此次循环;执行 x-,x=6, x%3=0,后面语句不执行,执行语句 print(“%d,“,-x);,输出 “5,”:执行 for语句中的 x-,得到 x=5,输出 “5,”判断 x%3,输出 “4,”,执行两次 x-后, x=2,执行 printf(“ d,“,x-); continue; 后,输出 “2,”;然后执行两次 x-后, x=0,不符合 “x
31、 0”,循环全部结束。 22 【正确答案】 A 【试题解析】 选项 B)中 while(1)永远为真所以进入死循环,选项 C)中while(n=10)同理,选项 D)中 for循环没有循环限定条件也将进入无限循环,只有选项 A)中 while(n =0)循环判定成立,循环将不进入无限循环。 23 【正确答案】 D 【试题解析】 首先定义了一个一维数组 和指针,接着将数组第四个元素的地址赋予 *p,进行 -p 使指针 p 指向了数组的第三个元素,通过 y=*p:将数组第三个元素的值 3赋予 y,所以选项 D)正确。 24 【正确答案】 C 【试题解析】 一维数组定义和初始化是允许省略行下标,不允
32、许省略列下标,故选项 C)定义错误。 25 【正确答案】 A 【试题解析】 程序定义了字符数组 s和字符型指针变量 p,并且使得 p 指向数组,执行 p=s;语句后, *p 即表示 s0; s数组中元素的个数和 p所指字符串长度不相等,因为 s数组中元素的个数包括字符串结束标志 “0”,而 p所指字符串长度不包括 “0”; s是字符型数组, p是指针变量;数组 s中的内容和指针变量 p中的内容不相同,数组中存放的是字符串,而指针变量 p 存放的是数组的首地址。 26 【正确答案】 D 【试题解析】 数组 a23包括元素 a00, a01, a02, a10, a11,a12,只有选项 D)是正
33、确的引用,即引用元素 a00,其他选项的引用均是下标越界。 27 【正确答案】 D 【试题解析】 选项 A)调用函数 gets()使得 s数组 从 s0开始得到输入的字符;选项 B)使得数组从元素 s1开始得到输入的 5个字符;选项 C)使得 s数组从 s0开始得到输入的字符:而选项 D)scanf(“%s“,s1);错误调用,应为scanf(“%s“,,输入项部分应该是一个地址值。 28 【正确答案】 C 【试题解析】 预处理命令行是以 “#”开始的语句,预处理命令行的最后不能以分号表示结束,预处理命令行。其中宏定义的字符替换的定义格式为: #define标识符字符串,预处理命令行是在系统对
34、源程序进行编译之前进行处理的,不是在 程序执行的过程中。 29 【正确答案】 A 【试题解析】 定义结构体类型的一般形式为: struct结构体名 成员列表 : struct结构体名后不能加 “: ”号,所以选项 B)、 C)错误,选项 D)中定义无名称的结构体类型同时定义结构体变量形式应为 struet t1, t2;选项 A)为用户自定义类型,其为正确的定义形式。 30 【正确答案】 B 【试题解析】 本题考查的是输入输出函数的使用, gets和 getchar 函数用于从标准输入设备终端读八字符串和字符,并非从磁盘文件读入, fputs用于把字符 串输出到文件, fwrite用于以二进制
35、形式输出数据到文件,故选项 B)描述错误。 31 【正确答案】 C 【试题解析】 本题考查 for语句的循环控制,首先定义了两个数组并赋予了初始值,第一个 for循环语句循环 12次遍历 s数组的各个元素,将 s中的元素值作为c数组中的下标,使相应的值自加。例如当 i=0, cs0)+为 c1+,其值变为1,当执行 i=1,2,.11 后, c1、 c2、 c3、 c4分别为 4、 3、 3, 2,故选项 C)为正确的运行结果。 32 【正确答案】 C 【试题解析】 从题目的主函数入手,定义了一个一维数组并赋韧值,接着调用函数 fun(), fun()函数的功能为使数组中的元素逆序,当调用 f
36、un(a,0,3),将实参传递给形参实现数组 a中 a0-a3这 4个元素逆序;同理调用 fun(a,4,9)是将上步排列好的 a数组中 a4-a9这 6个元素逆序;调用 fun(a,0,9)是将数组中 a0-a9这 10个元素在逆序,再用 printf()函数输出结果为 5678901234,故选项 C)正确。 33 【正确答案】 A 【试题解析】 从 main函数入手,定义了指向字符串的指针数组,并赋予了初始值,调用 fun()函数,函数的功能是:比较数组中各个元素的长度,按元素长度从小到大排列数组元素,所以执行 fun(ss,5)函数后,*ss=“xy“,“bcc“,“bbcc“,“aa
37、bcc“,“aaaacc“,所以调用 printf 函数输出 ss0,ss4的值分别为 xy,aaaacc。 34 【正确答案】 C 【试题解析】 主函数调用 f()函数,将实参 3传递给 x,进行 if 条件语句的判断不成立,接着执行 y=3*3-f(1),再执行 f(1)而 f(1)满足 if 条件语句,所以 f(1)的值为3,那么代入 y=3*3-f(1)=9-3=6,故选项 C)为正确的运行结果。 35 【正确答案】 C 【试题解析】 主函数 main()定义了指向字符串的指针和一个字符数组,接着调用fun(s,t)函数,进行实参向形参传递,函数 fun()第一个 while语句判断
38、*a中的值为“*”时继续扫描,当遇到不是 “*”时结束,接着第二个 while循环语句,将 *a中从“a”开始的后续所有字符都赋予 *b,也就是 t80中的内容为 “a*b*”,所以此题的运行结果 为选项 C)。 36 【正确答案】 A 【试题解析】 本题考查在结构体中函数的实参和形参的传递,调用 f(C)后,实参传向形参,进行 f()函数功能的实现,但程序中没有返回语句,故形参不能将值传回实参,它们值的传递具有不可逆性,所与 printf 输出的还是 c中实参的值,故选项 A)正确。 37 【正确答案】 B 【试题解析】 本题考查以读和写的方式打开文件对文件内容操作的不同,fp=fopen(
39、“d1.dat“,“w“);以可写的方式为输出建立新文本文件,调用 printf输出“123”, fp=fopen(“d1,dat“,“r“);以只读的方式打开文本文件,不能对文件内容进行操作,故运行结果为选项 B)。 38 【正确答案】 A 【试题解析】 本题目要求 a高 4位取反,低 4位不变,则 a变为 10101101,再看选项中对位运算的操作,选项 A)中 a*b=10101101,选项 B)中 a b=1111101,选项 C)中 a&b=01010000,选项 D)中 a 4=11010000,故选项 A)正确。 39 【正确答案】 A 【试题解析】 在 C语言中,动态变量 (a
40、uto)存储在内存中的动态存储 区,在程序运行中,只有当调用变量所在的函数时,系统才临时给变量分配内存单元;全局变量 (extern)一经定义,系统为其分配固定的内存单元;静态变量 (static),编译系统为其分配固定的存储空间;寄存器变量 (register)不保存在内存上,而是直接存储在 CPU的寄存器中。 40 【正确答案】 B 【试题解析】 定义语句 int(*f(int)中 f 是指向函数的指针变量,该函数中也只有一个 int型的形参。 41 【正确答案】 输出 【试题解析】 测试用例曲测试输入数据 (输入值集 )和与之对应的 预期输出结果 (输出值集 )两部分组成。 42 【正确
41、答案】 16 【试题解析】 在二叉树中,深度为 N的满二叉树的叶子结点的数目为: 2N-1。 43 【正确答案】 24 【试题解析】 在循环队列中因为头指针指向的是队头元素的前一个位置,所以是从第 6个位置开始有数据元素,所以队列中的数据元素的个数为 29-5=24。 44 【正确答案】 关系 【试题解析】 在关系数据库中,用关系也就是二维表来表示实体之间的联系。 45 【正确答案】 数据定义语言 【试题解析】 在数据库管理系 统提供的数据定义语言,数据操纵语言和数据控制语言中,数据定义语言负责数据的模式定义与数据的物理存取构建,数据操纵语言负责数据的操纵,包括查询及增、删、改等操作,数据控制
42、语言负责数据完整性、安全性的定义与检查以及并发控制、恢复等功能。 46 【正确答案】 0 【试题解析】 本题考查数据类型及其运算的逻辑运算, c为空格字符但其 ASCII码不为 0,所以 !c=0,在逻辑与运算中,只要有一项为假,其值为 0,所以 b 的值为 0。 47 【正确答案】 3 【试题解析】 本题考查数据类型及其运算的逗号运算与 逗号表达式,整个表达式的值为最后一个表达式的值,其值为 3。 48 【正确答案】 #2#4 【试题解析】 本题中从 k=2输出, printf中 “%d”前的内容原样输出,所以第一次输出 #2,接着 k 两次自加为 4,接着输出 #4,接着 k 再两次自加为
43、 6,此时不符合循环条件,所以输出结果为 “#2#4” 49 【正确答案】 3 5 【试题解析】 本题考查函数中实参和形参的传递,在 C语言函数中实参和形参传递具有不可逆性,参数只能由实参传向形参,而不能由形参传向实参,虽然swap 函数的功能是实现两 个数的交换,但没有返回值,故最终的输出结果为 3 5。 50 【正确答案】 4 【试题解析】 题目中定义了一个数组和指针,接着将数组的首地址给了指针,即指针 p指向数组 a的第一个元素,通过 p+, p 指向了数组 a的第二个元素,所以输出结果为 4。 51 【正确答案】 13 【试题解析】 此题考查的是函数的递归调用,进入主函数调用 fun(
44、)函数,进行if 语句的判断,当 x=3时,条件成立,执行 fun(x/2);语句,递归调用 fun()函数本身,进行 if 语句条件判断, if(x/2 0)条件不成立,用 printf输出 1;返回上一次调用 fun()函数, printf 输出 3,因此程序的最终输出结果为: 13。 52 【正确答案】 personi.sex 【试题解析】 本题考查的是对结构体成员的引用,对结构体数组成员的访问是以数组元素为结构体变量的,其形式为结构体数组元素咸员名,所以题目空白处应填 personi.sex。 53 【正确答案】 filea.dat,“r“ 【试题解析】 本目要求从名为 filea.dat的文本文件中逐个读入字符并显示在屏幕上,首先打开 filea.dat文件再读 取字符,所以空白处应为以读的方式打开文件,所以其内容应该为 “filea.dat“,“r“。 54 【正确答案】 2 2 4 6 8 【试题解析】 p 为指向数组的指针变量,数组 x1为数组 x的第二个元素,值为2:进入 for循环 i=0时, p0=&x1. 直到循环完毕,指针分别指向数组 x中的第 2、 4、 6、日个元素,所以空白处应填 2 4 680