1、国家二级( C语言)笔试模拟试卷 82及答案与解析 1 线性表若采用链式存储结构时,要求内存中可用存储单元的地址 _。 ( A)必须是连续的 ( B)部分地址必须是连续的 ( C)一定是不连续的 ( D)连续不连续都可以 2 在待排序的元素序列基本有序的前提下,效率最高的排序方法是 _。 ( A)冒泡排序 ( B)选择排序 ( C)快速排序 ( D)归并排序 3 下列叙述中,错误的是 _。 ( A)数据的存储结构与数据处理的效率密切相关 ( B)数据的存储结构与数据处理的效率 无关 ( C)数据的存储结构在计算机中所占的空间不一定是连续的 ( D)一种数据的逻辑结构可以有多种存储结构 4 希尔
2、排序属于 _。 ( A)交换排序 ( B)归并排序 ( C)选择排序 ( D)插入排序 5 下列叙述中,不属于结构化分析方法的是 _。 ( A)面向数据流的结构化分析方法 ( B)面向数据结构的 Jackson方法 ( C)面向数据结构的结构化数据系统开发方法 ( D)面向对象的分析方法 6 详细设计的结果基本决定了最终程序的 _。 ( A)代码的规模 ( B)运行速度 ( C)质量 ( D)可维护性 7 下列不属于静态测试方法的是 _。 ( A)代码检查 ( B)白盒法 ( C)静态结构分析 ( D)代码质量度量 8 公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职
3、员,从职员到部门的联系类型是 _。 ( A)多对多 ( B)一对一 ( C)多对一 ( D)一对多 9 下列关系运算的叙述中,正确的是 _。 ( A)投影、选择、连接是从二维表行的方向进行的运算 ( B)并、交、差是从二维表的列的方向来 进行运算 ( C)投影、选择、连接是从二维表列的方向进行的运算 ( D)以上 3种说法都不对 10 关系数据库管理系统应能实现的专门的关系运算包括 _。 ( A)排序、索引、统计 ( B)选择、投影、连接 ( C)关联、更新、排序 ( D)显示、打印、制表 11 下列用于 printf函数的控制字符常量中,代表 “竖向跳格 ”的转义字符常量是_。 ( A) b
4、 ( B) t ( C) v ( D) f 12 若有说明语句: int x=3,y=4,z=5;,则下面的表达 式中,值为 0的是 _。 ( A) xbreak; case 1:printf(“*1*n“);break; case 2:printf(“*2*n“);break; ( A) *0* ( B) *0* *2* ( C) *0* *1* *2* ( D) switch语句中存在语法错误 16 下列程序的输出结果是 _。 main() int a=2; do printf(“%dn“,a-=2); while(!(-a); ( A) 1 ( B) 1-2 ( C) 0 ( D)是死循
5、环 17 若有下列语句: char a=“xyz“; char b=x,y,z; 则下列叙述正确的是 _。 ( A)数组 a和数组 b不等价 ( B)数组 a和数组 b的长度相同 ( C)数组 a占用空间大小等于数组 b占用空间大小 ( D)数组 a占用空间大小大于数组 b占用空间大小 18 定义数组 char a=0,1,2,3);,则将该数组中元素按反序转换成整数,正确的程序段是 _。 ( A) int k=0,i; for(i=0;i 4;i+) k=k*10+ai-48; ( B) int k=0,i; for(i=3;i =0;i-) k=k*10+ai-0; ( C) int k=
6、0,i; for(i=3;i =0;i-) k=k+ai-0; ( D) int k,i; for(i=3;i =0;i-) k=k*10+ai-0; 19 已知在 ASCII字符集中,数字 0的序号为 48,下列程序的输出结果为 _。 main() char a=0,b=9; printf(“%d,%cn“,a,b) ; ( A)因输出格式不合法 ( B) 48,57 ( C) 0,9 ( D) 48,9 20 下列程序的输出结果是 _。 main() char*s=“1221“; int k=0,a=0,b=0; do if(k%2=0) a=a+sk-0; continue; b=b+s
7、k-0; while(s+k); printf(“k=%d a=%d b=%dn“,k,a,b); ( A) k=3 a=4 b=3 ( B) k=3 a=3 b=3 ( C) k=4 a=3 b=3 ( D) k=4 a=2 b=3 21 有以下程序 main() int i=1, j=2, k=3; if(i+=1int i,j; i=sizeof(a);j=strlen(a); printf(“%d%dn“,i,j); 程序运行后的输出结果是 ( A) 2 2 ( B) 7 6 ( C) 7 2 ( D) 6 2 25 以下能正确定义一维数组的选项是 ( A) int a5=0, 1,
8、2, 3, 4, 5; ( B) char a=0, 1, 2, 3, 4, 5; ( C) char a=A,B,C; ( D) int a5=“0123“; 26 有以下程序 int f1(int x, int y)return x y?x:y; int f2(int x, int y)return xy?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,%dn“,e,f,g); 程序运行后的输出结果是 (
9、 A) 4, 3, 7 ( B) 3, 4, 7 ( C) 5, 2, 7 ( D) 2, 5, 7 27 已有定义: char a=“xyz“,b=x,y,z;,以下叙述中正确的是 ( A)数组 a和 b的长度相同 ( B) a数组长度小于 b数组长度 ( C) a数组长度大于 b数组长度 ( D)上述说法都不对 28 有 以下程序 void f(int*x, int *y) int t; t= *x;*x=*y;*y=t; main() int a8=1,2,3,4,5,6,7,8,i,*p,*q; p=a; q=p+;q-; for(i=0;i 8;i+)printf(“%d,“,ai)
10、; 程序运行后的输出结果是 ( A) 8, 2, 3, 4, 5, 6, 7, 1, ( B) 5, 6, 7, 8, 1, 2, 3, 4, ( C) 1, 2, 3, 4, 5, 6, 7, 8, ( D) 8, 7, 6, 5, 4, 3, 2, 1 29 有以下程序 main() int a33, *p, i; p=i9;i+)pi=i; for(i=0;i 3;i+)printf(“%d“,a1i); 程序运行后的输出结果是 ( A) 12 ( B) 123 ( C) 234 ( D) 345 30 以下叙述中错误的是 ( A)对于 double类型数组,不可以直接用数组名对数组进行
11、整体输入或输出 ( B)数组名代表的是数组所占存储区的首地址,其值不可改变 ( C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出 “下标越界 ”的出错信息 ( D)可以通过赋初值的方式确定数组元素的个数 31 有以下程序 #define N20 fun(int a, int n, int m) int i,j; for(i=m;i =n;i-)ai+1=ai; main() int i, aN=1, 2, 3, 4, 5, 6, 7, 8,9, 10; fun(a,2, 9); for(i=0;i 5;i+)printf(“%d“,ai); 程序运行后的输出结果是 ( A)
12、10234 ( B) 12344 ( C) 12334 ( D) 12234 32 有以下程序 main() int a32=0,(*ptr)2,i,j; for(i=0;i 2;i+) ptr=a+i; scanf(“%d“,ptr); ptr+; for(i=0;i 3;i+) for(j=0;j2;j+)printf(“%2d“,aij); printf(“n“); 若运行时输入: 1 2 3回车,则输出结果是 ( A)产生错误信息 ( B) 1 0 2 0 0 0 ( C) 1 2 3 0 0 0 ( D) 1 0 2 0 3 0 33 有以下程序 prt(int *m, int n)
13、 int i; for(i=0;i n;i+)mi+; main() int a=1, 2, 3, 4, 5,i; prt(a,5); for(i=0;i 5;i+) printf(“%d,“,ai); 程序运行后的输出结果是 ( A) 1, 2, 3, 4, 5, ( B) 2, 3, 4, 5, 6, ( C) 3, 4, 5, 6, 7, ( D) 2, 3, 4, 5, 1, 34 有以下程序 main() int a=1, 2, 3, 4, 5, 6, 7, 8, 9, 0,*P; for(p=a;p a+10; p+)printf(“%d,“,*p); 程序运行后的输出结果是 (
14、A) 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, ( B) 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, ( C) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ( D) 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 35 有以下程 序 #define P3 void F(int x)return(P*x*x); main() printf(“%dn“,F(3+5); 程序运行后的输出结果是 ( A) 192 ( B) 29 ( C) 25 ( D)编译出错 36 有以下程序 main() int c=35;printf(“%dn“,
15、cchar b;double c;data; 以下叙述中错误的是 ( A) data的每个成员起始地址都相同 ( B)变量 data所占的内存字节数与成员 c所占字节数相等 ( C)程序段: data a=5; printf(“%fn“, data c);输出结果为 5.000000 ( D) data可以作为函 数的实参 39 以下语句或语句组中,能正确进行字符串赋值的是 ( A) char*sp; *sp=“right!“; ( B) char s10;s=“right!“; ( C) char s10;*s=“right!“; ( D) char*sp=:right!“; 40 设有如下
16、说明 typedef struct ST long a;int b;char c2;NEW; 则下面叙述中正确的是 ( A)以上的说明形式非法 ( B) ST是一个结构体类型 ( C) NEW是一个结 构体类型 ( D) NEW是一个结构体变量 41 有以下程序 main() int a=1,b; for(b=1;b 10;b+) if(a 8)break; if(a%2=1)a+=5;continue; a-=3; printf(“%dn“,b); 程序运行后的输出结果是 ( A) 3 ( B) 4 ( C) 5 ( D) 6 42 有以下程序 main() char s=“159“,*p;
17、 p=s; printf(“%c“,*p+);printf(“%c“,*p+); 程序运行后的输出结果是 ( A) 15 ( B) 16 ( C) 12 ( D) 59 43 有以下函数 fun(char*a, char*b) while(*a!=0)b+; return(*a-*b); 该函数的功能是 ( A)计算 a和 b所指字符串的长度之差 ( B)将 b所指字符串连接到 a所指字符串中 ( C)将 b所指字符串连接到 a所指字符串后面 ( D)比较 a和 b所指字符串的大小 44 有以下程序 main() int num44=1, 2, 3, 4, 5, 6, 7, 8, 9,10,
18、11, 12, 13, 14, 15, 16, i, j; for(i=0; i 4;i+) for(j=0;j=i;j+) printf(“%4c“,“); for(j=_;j 4;j+) printf(“%4d“,numij); prrintf(“n“); 若要按以下形式输出数组右上半三角 1 2 3 4 6 7 8 11 12 16 则在程序下划线处应填入的是 ( A) i-1 ( B) i ( C) i+1 ( D) 4-i 45 有以下程序 point(char*p)p+=3; main() char b4=a,b,c,d,*p=b; point(p);printf(“%cn“,*p
19、); 程序运行后的输出结果是 ( A) a ( B) b ( C) c ( D) d 46 程序中若有如下说明和定义语句 char fun(char*); main() char*s=“one“,a5=0,(*f1)()=fun,ch; 以下选项中对函数 fun的正 确调用语句是 ( A) (*f1)(A) ; ( B) *f1(*s); ( C) fun( struct node*next;*p,*q,*r; 现要将 q所指结点从链表中删除,同时要保持链表的连续,以下不能完成指定操作的语句是 ( A) p- next=q- next; ( B) p- next=p- next- next;
20、( C) p- next=r; ( D) p=q- next; 48 以下对结构体类型变量 td的定义中,错误的是 ( A) typedef struct aa int n; float m; AA; AA td; ( B) struct aa int n; float m; td; struct aa td; ( C) struct int n; float m; aa; struct aa td; ( D) struct int n; float m; td; 49 以下与函数 fseek(fp, OL, SEEK_SET)有相同作用的是 ( A) feof(fp) ( B) ftell(
21、fp) ( C) fgetc(fp) ( D) rewind(fp) 50 有以下程序 #include stdio h void WriteStr(char*fn, char*str) FILE*fp; fp=fopen(fn,“w“); fputs(str,fp); fclose(fp); main() writeStr(“t1 dat“,“start“); WriteStr(“t1 dat“,“end“); 程序运行后,文件 t1 dat中的内容是 ( A) start ( B) end ( C) startend ( D) endrt 51 算法的执行过程中,所需要的存储空间称为算法的
22、【 】。 52 按照逻辑结构分类,数据结构可分为线性结构和非线性结构,二叉树属于【 】。 53 软件测试按功能划分的方法划分,通常分为【 】测试方法和黑盒测试方法。 54 数据库系统在其内部分为三级模式,即概念模式、内模式和外模式。其中,【 】给出了数据库物理存储结构和物理存取方法。 55 关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、【 】和自定义完整性。 56 已知字符 A的 ASCII码值为 65,以下语句的输出结果是【 】。 char ch=b; printf(“%c%dn“,ch,ch); 57 有以下语句段 int n1=10,n2=20; printf(“ 【 】
23、“,n1,n2); 要求按以下格式输出 n1和 n2的值,每个输出行从第一列开始,请填空。 n1=10 n2=20 58 有以下程序 main() int t=1,i=5; for(;i 0;i-)t*=i; printf(“%dn“,t); 执行后输出结果是【 】。 59 有以下程序 main() int n=0,m=1,x=2; if(!n)x-=1; if(m)x-=2; if(x)x-=3; printf(“%dn“,x); 执行后输出结果是【 】。 60 有以下程序 #include stdio h main() char ch1,ch2;int n1,n2; ch1=getchar
24、();ch2=getchar(); n1=ch1-();n2=n1*10+(ch2-(); printf(“%dn“,n2); 程序运 行时输入: 12回车,执行后输出结果是【 】。 61 有以下程序 void f(int y,int*x) y=y+ *x; *x=*x+y; main() int x=2,y=4; f(y,double y=1; for(i=1;i n;i+)y=y*x; return y; 主函数中已正确定义 m、 a、 b变量并赋值,并调用 fun函数计算: m=a4+b4-(a+b)3。实现这一计算的函数调用语句为【 】。 63 以下 sstrcpy()函数实现字符串复
25、制,即将 t所指字符串复制到 s所指内存空间中,形成一个新字符串 s。 请填空。 void sstrcpy(char*s,char*t) while(*s+= 【 】 ); main() char strl100,str2=“abcdefgh“; sstrcpy(strl, str2); printf(“%sn“,strl); 64 下列程序的运行结果是:【 】。 #include stringh char*ss(char*s) return s+strlen(s)/2; main() char*p,*str=“abcdefgh“; p=ss(str);printf(“%sn“, p); 65
26、 下面程序的运行结果是:【 】。 int f(int a,int n) if(n 1)return a0+f(p1=2.5;p2=3.5; printf(“%f%f%fn“,p0,p1,p2); 67 以下程序的运行结果是【 】。 #include string h typeaef struct student char name10; long sno; float score; STU; main() STUa=“zhangsan“,2001,95,b=“Shangxian“,2002,90,c=“Anhua“,2003,95,d,*p=double a,b,s; 【 】 for(i=1;
27、i =n;i+) a=a*x;b=b*i;s=s+a/b; return s; 69 下面 rotate函数的功能是:将 n行 n列的矩阵 A转置为 A,例如: #define N 4 void rotate(int a()N) int i,j,t; for(i=0;i N;i+) for(j=0;【 】 ;j+) t=aij; 【 】; aji=t; 国家二级( C语言)笔试模拟试卷 82答案与解析 1 【正确答案】 D 【试题解析】 在链式存储结构中,存储数据结构的存储空间可以是连续的,也可以是不连续的,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致。 2 【正确答案】 A 【试题
28、解析】 从平均时间性能而言,快速排序最佳,其所需时间最少,但快速排序在最坏情况下的时间性能不如堆排序和归并排序。当序列中的记录基本有序或元素个数较少时,冒泡排序和简单选择排序为最佳排序方法。 3 【正确答案】 B 【 试题解析】 一般来说,一种数据结构根据需要可以表示成多种存储结构。常用的存储结构有顺序、链接、索引等,而采用不同的存储结构,其数据处理的效率是不同的;一个数据结构中的各数据元素在计算机存储空间中的位置关系与逻辑关系是有可能不同的。 4 【正确答案】 D 【试题解析】 希尔排序的基本思想是把记录按下标的一定增量分组,对每组记录使用插入排序,随增量的逐渐减小,所分成的组包含的记录越来
29、越多,到增量的值减小到 1时,整个数据合成一组,构成一组有序记录,故其属于插入排序方法。 5 【正确答案】 D 【试题解析】 常见的需求分析方法有结构化分析方法和面向对象的分析方法两类。其中结构化分析方法又包括面向数据流的结构化分析方法 (SA, Structured analysis)、面向数据结构的 Jackson方法 (JSD, Jackson system development method) 和面向数据结构的结构化数据系统开发方法 (DSSD, Data structured system development method) 。 6 【正确答案】 C 【试题解析】 详细设计阶段
30、的根本目标是确定应该怎样具体 地实现所要求的系统,但详细设计阶段的任务还不是具体的编写程序,而是要设计出程序的 “蓝图 ”,以后程序员将根据这个蓝图写出实际的程序代码。因此,详细设计阶段的结果基本上就决定了最终的程序代码的质量。 7 【正确答案】 B 【试题解析】 静态测试包括代码检查、静态结构分析和代码质量度量等。其中白盒测试属于动态测试。 8 【正确答案】 C 【试题解析】 事物之间的联系在信息世界中反映为实体集之间的联系,实体集间的联系个数不仅可以是单个的,也可以是多个的,对应关系有:一对一、一对多(多对一 )、多对多。 两个实体集间的联系可以用下图表示。9 【正确答案】 C 【试题解析
31、】 在关系模型的数据语言中,一般除了运用常规的集合运算 (并、交、差、笛卡尔积等 ),还定义了一些专门的关系运算,如投影、选择、连接等。前者是将关系 (即二维表 )看成是元组的集合,这些运算主要是从二维表的行的方向来进行运算的。后者是从二维表的列的方向来进行运算的。 10 【正确答案】 B 【试题解析】 关系数据库建立在关系数据模型的基础上,具有严格的数学理论基础。关系数据库对数据的操作除了包括集合代数的并、差等运算之外,更 定义了一组专门的关系运算:连接、选择和投影。关系运算的特点是运算的对象都是表。 11 【正确答案】 C 【试题解析】 转义字符 b、 t、 v、 f的作用分别是退格、移到
32、下一制表位、竖向跳格和换页。 12 【正确答案】 D 【试题解析】 x&y值为 1, x y值为 1, x|+y&y-z值为 1, !(x y&!z|1 =值为 0。 13 【正确答案】 A 【试题解析】 标识符是由字母或下划线打头,由字母、数字、下划线组成的字符串,包括关键字、编译预处理命令和 用户自定义标识符 3种,选项 B、 D不是合法的标识符,选项 C是关键字。 14 【正确答案】 A 【试题解析】 逗号表达式的值为最后一个表达式的值,本题将 a%b的值 0赋给变量 b。 15 【正确答案】 B 【试题解析】 本题是 switch-case语句的嵌套使用,外层 switch语句的第一个
33、分支 (嵌套 switch语句 )执行完后,没有 break;语句,将继续执行第二个分支。 16 【正确答案】 C 【试题解析】 do-while语句是先执行后判断,第一次执行循环体,输出 0,循环控制条件 !(-A) 的值为 0,则结束循环。 17 【正确答案】 D 【试题解析】 数组 a的存储空间占 4个字节 (结束符 0占一字节 ),数组 a的存储空间占 3个字节。 18 【正确答案】 B 【试题解析】 将字符数组中的元素按反序转换成整数,数组第一个元素应当是四位整数的个位,依次类推,字符数字转换为数字的基本方法是将该字符的 ASCII码值减去字符 0的 ASCII码值,程序的输出结果是
34、 3210。 19 【正确答案】 D 【试题解析】 注意输出控制符 %d, %c,分别表示以十进制形式输出字符的ASCII码值和字符。 20 【正确答案】 C 【试题解析】 将数字字符串中下标值能被 2整除的元素值 (字符 )转换为数字累加到变量 a中,将数字字符串中下标值不能被 2整除的元素值 (字符 )转换为数字累加到变量 b中,循环结束时, a、 b的值均为 3, k是字符结束符的下标值,为 4。 21 【正确答案】 D 【试题解析】 根据优先级顺序,先计算内层括号的值。 j自加 1等于 3,所以+j= =3成立,表达式为 1,由于 1“|”任何数都为 1,所以不用计算 “|”后面的表达
35、式,所以 k =3,最后计算 “&”之前的 表达式, i先进行判断再自加 1,所以i+=1成立,自加 1后 i =2。 if语句的条件为 “1”,所以输出 i、 j、 k的值分别是2, 3, 3。 22 【正确答案】 A 【试题解析】 本题考查条件表达式的嵌套,因为 A=1, b=4,所以 A b成立,则条件表达式的值即 a的值为 1。 23 【正确答案】 A 【试题解析】 本题考查 while语句和 if语句的嵌套,程序段实现的功能是将 p1至 p7中的奇数相加求和并输出, j=13+15+17=45。 24 【正确答案】 C 【试题解析】 函数 sizeof()和 strlen()的区别,
36、 sizeof(a) 求出字符串 a中的字符占用存储空间的大小,由于定义了字符数组 a的长度为 7,所以 i=7;而 strlen(a) 求出字符串 a的长度,以 0为字符串结束标记,所以 j=2。 25 【正确答案】 B 【试题解析】 选项 A中,定义的初值个数大于数组的长度;选项 C中,数组名后少了中括号;选项 D中,整型数组不能赋予字符串。 26 【正确答案】 A 【试题解析】 函数 f1(x, y)的功能返回 x, y中较大的一个,而函数 f2(x, y)的功能是返回 x, y中较小的一个,所以 f1(a, b)=4, f1(c, d)=3, f2(c, d)=2,故e=f2(4, 5
37、), f= (3, 2)=3, g=4+3+5+2-4-3=7。 27 【正确答案】 C 【试题解析】 a数组存放的是字符串,系统会自动在字符串的最后加上一个“0”,所以 a数组的长度为 4,而 b数组的长度为 3,故 a数组长度大于 b数组长度。 28 【正确答案】 D 【试题解析】 本题考查循环和指针做函数参数,程序的功能是将 a0和 a7对换, a1和 a6对换, a2和 a5对换, a3和 a4对换,最后输出。 29 【正确答案】 D 【试题解析】 本题考查二维数组和指针,首先使指针 p指向二维数组的首地址,通过第一个 for循环对一维数组 p赋值,其实也就是给二维数组 a赋值, a0
38、0a22分别赋以 0 8,所以 a10, a11, a12分别为 3, 4, 5。 30 【正确答案】 C 【试题解析】 C语言不检查数组越界,是为了保证程序执行的效率,这要求编写人员自己关心数组下标表达式的合法性了。 31 【正确答案】 B 【试题解析 】 因为宏定义 N=20,所以数组 a中的后 10个元素均为 0,函数fun(a , n, m)的功能是从 an+1(m n),依次将值赋给后一个元素。所以fun(a, 2, 9);执行后,数组 a中的元素为 aN=1, 2, 3, 4, 4, 5, 6, 7, 8,9, 10。 32 【正确答案】 B 【试题解析】 二维数组指针第一个 fo
39、r循环中,第一次循环 ptr指向 a00的首地址,所以经过输入语句, a00=1;第二次循环 ptr指向 a10的首地址,所以经过输入语句, a10=2。此时,除了 这两个元素,其他元素没有改变,等于初值 0。 33 【正确答案】 B 【试题解析】 函数 ptr(*m, n)中,参数 m传递的是一个地址,所以可以改变主函数中数组 a的各元素值,函数 ptr(*m, n)的功能是将数组的各元素都自加 1,所以,最后数组 a中的各元素为 2, 3, 4, 5, 6。 34 【正确答案】 A 【试题解析】 本指针访问数组元素,在 for循环中,首先指针 p指向 a0的地址,输出语句即输出 a0的值,
40、然后指针 p依次后移一位,依次指向数组 a中各元素的地址,所以程序依次输出数组 a的各元素值 。 35 【正确答案】 D 【试题解析】 定义函数 F(x)为 void型,即没有返回值,而函数体中又有 return语句,编译时会出错。 36 【正确答案】 C 【试题解析】 按位与 “&”,因为 1&1=1, 0&0=0,所以任何数与自身按位与,结果仍为此数,不发生变化。 37 【正确答案】 D 【试题解析】 选项 A预处理命令行通常位于源文件的开头,但不是必须的;选项 B在源文件的一行上只能有一条预处理命令;选项 C宏名一般习惯用大写字母表示,以与变量名相区别,但不是必须的;选项 D宏替换不 占
41、用程序的运行时间,只占编译时间。 38 【正确答案】 D 【试题解析】 选项 A共用体的每个成员的起始地址都相同;选项 B共用体变量所占的内存长度等于最长的成员的长度;选项 C因为每个成员的起始地址相同,所以整型数 5以浮点型输出时为 5.000000;选项 D, C语言规定,不能把共用体变量作为函数的参数。 39 【正确答案】 D 【试题解析】 C语言中不允许通过赋值语句给字符数组赋值,所以选项 A、 B、C都不对。 40 【正确答案】 C 【试题解析】 用 typedef定义结构体类型, ST为结构体名称, NEW为结构体类型。 41 【正确答案】 B 【试题解析】 本 break语句和
42、continue语句的区别: break语句使程序跳出本层循环,而 continue语句使程序跳出本次循环,进入下一次循环,第一次循环,b=1, a=1;则执行第二个 if语句, a为满足条件, a=a+5=6,退出本次循环;第二次循环, b=2, a=3;第三次循环, b=3, a为奇数满足第二个 if语句的条件,a=a+5=8,退出本次循环,第四次循环, b=4, a=8,满足第一个 if语句的条件,跳出 for循环,最后输出 b=4。 42 【正确答案】 A 【试题解析】 自增运算符 “+”放在变量之前表示在使用变量之前,先使变量的值加 1;放在变量之后表示在使用变量之后,再使变量的值加
43、 1。语句 p=s;使指针 p指向字符串 s的首地址,第一次输出语句先输出字符 1,指针 p再往后移一位,指向字符 5的地址,第二个输出语句,同样先输出字符 5,指针 p再往后移一位,指向字符 9的地址。 43 【正确答案】 D 【试题解析】 该函数的功能是比较 a和 b所指字符串的大小,当 a所指定字符串大于 b所指时,函数返回正数,当 a所指 字符串小于 b所指时,函数返回负数,当 a所指字符串等于 b所指时,函数返回零。 44 【正确答案】 B 【试题解析】 本题考查循环嵌套,外层循环控制每一行的输出,内层循环的第一个 for循环控制空格的输出,第二个 for循环控制的输出。而在第 i行
44、,输出的第一个元素是 numii,所以下划线处应填 i。 45 【正确答案】 A 【试题解析】 虽然函数的参数是一个指针,但函数体只对指针 p进行了操作,并不会影响主函数中的指针 p,因为传递的参数是 p,而不是 p的地址,所以输出的字符是 b0,即 为 a。 46 【正确答案】 A 【试题解析】 函数 fun()的参数为指针类型,返回值为字符型,而选项 B、 C的参数不是指针类型,所以不正确,选项 D中, *fl(s)表示返回值为指针的函数,所以也不正确。 47 【正确答案】 D 【试题解析】 本题考查链表结点的删除。 q- next中存放的是 r所指结点的首地址,将 r所指结点的首地址存于
45、 p- next中,则实现删除 q所指结点的功能,并保持链表连续, p所指结点与 r所指结点相连。 48 【正确答案】 C 【试题解析】 选项 t中, aa为结构体 变量,而不是结构体名称,不能再用来定义td。 49 【正确答案】 D 【试题解析】 fseek(fp, OL, SEEK_SET)的作用是使位置指针移到文件头。feof(fp)用来判断文件是否结束。 ftell(fp)的作用是得到流式文件中的当前位置。fgete(fp)的作用是从文件 fp读入一个字符。 rewind(fp)的作用是使位置指针返回文件头。 50 【正确答案】 B 【试题解析】 使用 fputs函数输出字符串到文件时,将覆盖原文件中的内容。 51 【正确答案】 空间复杂度 【 试题解析】 算法执行时所需要的存储空间,称为算法的空间复杂度。 52 【正确答案】 非线性结构 【试题解析】 对于一个非空的数据结构,如果同时满足下列两个条件,即 1)有且只有一个根结点; 2)每一个结点最多有一个前件,也最多有一个后件,即为线性结构,而二叉树的结点可能存在两个后件,所以是非线性结构。 53 【正确答案】 白盒 【试题解析】 软件测试的方法分为白
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1