1、国家二级( C语言)笔试模拟试卷 155及答案与解析 1 软件生命周期中花费费用最多的阶段是 ( A)详细设计 ( B)软件编码 ( C)软件测试 ( D)软件维护 2 为了提高测试的效率 ,应该 ( A)随机选取测试数据 ( B)取一切可能的输入数据作为测试数据 ( C)在完成编码以后制定软件的测试计划 ( D)集中对付那些错误群集的程序 3 以下不是面向对象思想中的主要特征的是 ( A)多态 ( B)继承 ( C)封装 ( D)垃圾回收 4 下列叙述中 ,不符合良好程序设计风格要求的是 ( A)程序的效率第一 ,清晰第二 ( B)程序的可读性好 ( C)程序中要有必要的注释 ( D)输入数
2、据前要有提示信息 5 软件设计包括软件的结构、数据接口和过程设计 ,其中软件的过程设计是指 ( A)模块间的关系 ( B)系统结构部件转换成软件的过程描述 ( C)软件层次结构 ( D)软件开发过程 6 数据处理的最小单位是 ( A)数据 ( B)数据元素 ( C)数据项 ( D)数据结构 7 假设线性表的长度为 n,则在最坏情况下 ,冒泡排序需要的比较次数为 ( A) log2n ( B) n2 ( C) O(n15) ( D) n(n-1)/2 8 在深度为 5的满二叉树中 ,叶子结点的个数为 ( A) 32 ( B) 31 ( C) 16 ( D) 15 9 数据库系统的核心是 ( A)
3、数据库 ( B)数据库管理系统 ( C)模拟模型 ( D)软件工程 10 一个关系中属性个数为 1时 ,称此关系为 ( A)对应关系 ( B)单一关系 ( C)一元关系 ( D)二元关系 11 软件生命周期中花费费用最多的阶段是 ( A)详细设计 ( B)软件编码 ( C)软件测试 ( D)软件维护 12 为 了提高测试的效率 ,应该 ( A)随机选取测试数据 ( B)取一切可能的输入数据作为测试数据 ( C)在完成编码以后制定软件的测试计划 ( D)集中对付那些错误群集的程序 13 以下不是面向对象思想中的主要特征的是 ( A)多态 ( B)继承 ( C)封装 ( D)垃圾回收 14 下列叙
4、述中 ,不符合良好程序设计风格要求的是 ( A)程序的效率第一 ,清晰第二 ( B)程序的可读性好 ( C)程序中要有必要的注释 ( D)输入数据前要有提示信息 15 软件设计包括软件的结构、数据接口和过程设计 ,其中 软件的过程设计是指 ( A)模块间的关系 ( B)系统结构部件转换成软件的过程描述 ( C)软件层次结构 ( D)软件开发过程 16 数据处理的最小单位是 ( A)数据 ( B)数据元素 ( C)数据项 ( D)数据结构 17 假设线性表的长度为 n,则在最坏情况下 ,冒泡排序需要的比较次数为 ( A) log2n ( B) n2 ( C) O(n15) ( D) n(n-1)
5、/2 18 在深度为 5的满二叉树中 ,叶子结点的个数为 ( A) 32 ( B) 31 ( C) 16 ( D) 15 19 数据库 系统的核心是 ( A)数据库 ( B)数据库管理系统 ( C)模拟模型 ( D)软件工程 20 一个关系中属性个数为 1时 ,称此关系为 ( A)对应关系 ( B)单一关系 ( C)一元关系 ( D)二元关系 21 C语言规定 ,在一个源程序中 ,main函数的位置 ( A)必须在最开始 ( B)必须在系统调用的库函数的后面 ( C)可以任意 ( D)必须在最后 22 以下叙述中错误的是 ( A)计算机不能直接执行用 C语言编写的源程序 ( B) C程序经 C
6、编译程序编译后 ,生成后缀为 .obj的文件是一 个二进制文件 ( C)后缀为 .obj的文件 ,经连接程序生成后缀为 .exe的文件是一个二进制文件 ( D)后缀为 .obj和 .exe的二进制文件都可以直接运行 23 下列选项可以正确表示字符型常量的是 ( A) r ( B) a ( C) 897 ( D) 296 24 以下叙述中正确的是 ( A)构成 C程序的基本单位是函数 ( B)可以在一个函数中定义另一个函数 ( C) main()函数必须放在其他函数之前 ( D) C函数定义的格式是 K语句为变量 a1和a2赋数值 10 和 20,为变量 c1 和 c2 赋字符 X和 Y。以下所
7、示的输入形式中正确的是 (注 :代表空格字符 ) ( A) 10X20Y ( B) 10X20Y ( C) 10X 20Y ( D) 10X 20Y 26 若有说明 :int *p,m=5,n;,以下正确的程序段是 ( A) p=scanf(“%d“, ( B) p=scanf(“%d“,*p) ( C) scanf(“%d“,*p=n; ( D) p=*p=m; 27 在执行下述程序时 ,若从键盘输入 6和 8,则结果为 main() int a,b,s; scanf(“%d%d“, s=a if(a ( B) 10X20Y ( C) 10X 20Y ( D) 10X 20Y 36 若有说明
8、 :int *p,m=5,n;,以下正确的程序段是 ( A) p=scanf(“%d“, ( B) p=scanf(“%d“,*p) ( C) scanf(“%d“,*p=n; ( D) p=*p=m; 37 在执行下述程序时 ,若从键盘输入 6和 8,则结果为 main() int a,b,s; scanf(“%d%d“, s=a if(a main0 int y=9; for( ; y0;y-) if(y%3=0) printf(“%d“,-y); 程序的运行结果是 ( A) 741 ( B) 963 ( C) 852 ( D) 875421 42 以下描述中正确的是 ( A)由于 do-
9、while循环中循环体语句只能 是一条可执行语句 ,所以循环体内不能使用复合语句 ( B) do-while循环由 do开始 ,用 while结束 ,在 while(表达式 )后面不能写分号 ( C)在 do-while循环体中 ,是先执行一次循环 ,再进行判断 ( D) do-while循环中 ,根据情况可以省略 while 43 有以下程序 #include main() - n“,y); 程序的运行 结果是 ( A) y=0 ( B) y=1 ( C) y=2 ( D) y=3 44 以下数组定义中错误的是 ( A) int x3=0; ( B) int x23=l,2,3,4,5,6;
10、 ( C) int x3=l,2,3,4,5,6; ( D) int x23=l,2,3,4,5,6; 45 下面说明不正确的是 ( A) char a10=“china“; ( B) char a10,*p=a;p=“china“ ( C) char *a;a=“china“; ( D) char a10,*p;p=a=“china“ 46 若有定义 :int a23;,以下选项中对 a数组元素正确引用的是 ( A) a2!1 ( B) a23 ( C) a03 ( D) a12!1 47 若要求从键盘读入含有空格字符的字符串 ,应使用函数 ( A) getc() ( B) gets() (
11、 C) getchar() ( D) scanf() 48 阅读下列程序段 ,则程序的输出结果为 #include “stdio.h“ #define M(X,Y)(X)*(Y) #define N(X,Y)(X)/(Y) main() 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 49 在 16位 IBM-PC 机上使用 C语言 ,若有如下定义 struct data int i; char ch; double f; b; 则结构变量 b占 用内存的字节数是 ( A) 1 ( B
12、) 2 ( C) 7 ( D) 11 50 有以下程序 #include main() FILE *fp; int i,a6=l,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;i main() int s12=1,2,3,4,4,3,2,1,1,1,2,3,c5=0,i; for(i
13、=0;i void fun(int *a,int n)/*fun函数的功能是将 a所指数组元素从大到小排序 */ int t,i,j; for(i=0;i #include main() char *p1=“abc“,*p2=“ABC“,str50= “xyz“; strcpy(str+2,strcat(p1,p2); printf(“%sn“,str); ( A) xyzabcABC ( B) zabcABC ( C) xyabcABC ( D) yzabcABC 54 以下函数返回 a所指数组中最小的值所在的下标值 fun(int *a, int n) int i,j=0,p; p=j;
14、for(i=j;i 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 56 有以下程序 #include #include typedef struct char name9; char sex; float score2; STU; void f(S
15、TU a) strcpy(a.name,b.name); a.sex=b.sex; for(i=0;i main() fp=fopen(“d1.dat“,“w“); for(i=0;i void fun(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,aa); 程序的运行结果是 ( A) accxyy,bbxxyy ( B) acc,bbxxyy ( C) accxxyy,bbxxyy ( D) a
16、ccbbxxyy,bbxxyy 61 有以下程序 #include main0 int y=9; for( ; y0;y-) if(y%3=0) printf(“%d“,-y); 程序的运行结果是 ( A) 741 ( B) 963 ( C) 852 ( D) 875421 62 以下描述中正确的是 ( A)由于 do-while循环中循环体语句只能是一条可执行语句 ,所以循环体内不能使用复合语句 ( B) do-while循环由 do开始 ,用 while结束 ,在 while(表达式 )后面不能写分号 ( C)在 do-while循 环体中 ,是先执行一次循环 ,再进行判断 ( D) do
17、-while循环中 ,根据情况可以省略 while 63 有以下程序 #include main() - n“,y); 程序的运行结果是 ( A) y=0 ( B) y=1 ( C) y=2 ( D) y=3 64 以下数组定义中错误的是 ( A) int x3=0; ( B) int x23=l,2,3,4,5,6; ( C) int x3=l,2,3,4,5,6; ( D) int x23=l,2,3,4,5,6; 65 下面说明不正确的是 ( A) char a10=“china“; ( B) char a10,*p=a;p=“china“ ( C) char *a;a=“china“;
18、 ( D) char a10,*p;p=a=“china“ 66 若有定义 :int a23;,以下选项中对 a数 组元素正确引用的是 ( A) a2!1 ( B) a23 ( C) a03 ( D) a12!1 67 若要求从键盘读入含有空格字符的字符串 ,应使用函数 ( A) getc() ( B) gets() ( C) getchar() ( D) scanf() 68 阅读下列程序段 ,则程序的输出结果为 #include “stdio.h“ #define M(X,Y)(X)*(Y) #define N(X,Y)(X)/(Y) main() int a=5,b=6,c=8,k; k
19、=N(M(a,b),c); printf(“%dn“,k); ( A) 3 ( B) 5 ( C) 6 ( D) 8 69 在 16位 IBM-PC 机上使用 C语言 ,若有如下定义 struct data int i; char ch; double f; b; 则结构变量 b占用内存的字节数是 ( A) 1 ( B) 2 ( C) 7 ( D) 11 70 有以下程序 #include main() FILE *fp; int i,a6=l,2,3,4,5,6; fp=fopen(“d3.dat“,“w+b“); fwrite(a,sizeof(int),6,fp); fseek(fp,s
20、izeof(int)*3,SEEK_SET);/*该语句使读文件的位置指针从文件头向后移动 3个 int型数据 */ fread(a,sizeof(int),3,fp); fclose(fp); for(i=0;i main() int s12=1,2,3,4,4,3,2,1,1,1,2,3,c5=0,i; for(i=0;i void fun(int *a,int n)/*fun函数的功能是将 a所指数组元素从大到小排序 */ int t,i,j; for(i=0;i #include main() char *p1=“abc“,*p2=“ABC“,str50= “xyz“; strcpy(
21、str+2,strcat(p1,p2); printf(“%sn“,str); ( A) xyzabcABC ( B) zabcABC ( C) xyabcABC ( D) yzabcABC 74 以下函数返回 a所指数组中最小的值所在的下标值 fun(int *a, int n) int i,j=0,p; p=j; for(i=j;i 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(
22、“str=%s“,str); ( A) str=abdef ( B) str=abcdef ( C) str=a ( D) str=ab 76 有以下程序 #include #include typedef struct char name9; char sex; float score2; STU; void f(STU a) strcpy(a.name,b.name); a.sex=b.sex; for(i=0;i main() fp=fopen(“d1.dat“,“w“); for(i=0;i void fun(char *t,char *s) while(*t!=0) t+; whil
23、e(*t+=*s+)!=0); main() char ss10=“acc“,aa10=“bbxxyy“; fun(ss,aa); printf(“%s,%sn“,ss,aa); 程序的运行结果是 ( A) accxyy,bbxxyy ( B) acc,bbxxyy ( C) accxxyy,bbxxyy ( D) accbbxxyy,bbxxyy 81 测试的目的是暴露错误 ,评价程序的可靠性 ;而【 】的目的是发现错误的位置并改正错误。 82 某二叉树中度为 2的结点有 18个 ,则该二叉树中有【 】个叶子结点。 83 当循环队列非空且 队尾指针等于队头指针时 ,说明循环队列已满 ,不能进
24、行入队运算。这种情况称为【 】。 84 在关系模型中 ,把数据看成一个二维表 ,每一个二维表称为一个【 】。 85 在计算机软件系统的体系结构中 ,数据库管理系统位于用户和【 】之间。 86 测试的目的是暴露错误 ,评价程序的可靠性 ;而【 】的目的是发现错误的位置并改正错误。 87 某二叉树中度为 2 的结点有 18个 ,则该二叉树中有【 】个叶子结点。 88 当循环队列非空且队尾指针等于队头指针时 ,说明循环队列已满 ,不能进行入队运算。这种情况称 为【 】。 89 在关系模型中 ,把数据看成一个二维表 ,每一个二维表称为一个【 】。 90 在计算机软件系统的体系结构中 ,数据库管理系统位于用户和【 】之间。 91 下面程序的运行结果是【 】。 #include main() int y,a; y=2,a=1; while(y-!=-1) doa*=y;a+;while(y-); printf(“%d,%d“,a,y);