1、国家计算机二级(C)66 及答案解析(总分:3480.00,做题时间:120 分钟)一、选择题(1-10 题每题 2分,11-50 题(总题数:50,分数:3000.00)1.有以下程序: void sort(int a,int n) int i,j,t; for(i=0;in;i+) for(j=i+1;n;j+) if(aiaj) 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;i10;i+)printf(“%d,“,aa i); printf(“/n“); 程序运行后的输出结
2、果是【 】。 (分数:60.00)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,9,10,D.1,2,9,8,7,6,5,4,3,10,2.有以下程序 main() int i,j; for(i=1;iA.1*1=11*2=21*3=3B.1*1=1 1* 2=2 1*3=3 2*1=2 2*2=4 2*2 =4 2* 3=6 3*1=3 3*3=9C.1*1=1D.1*1=1 1*2=2 2*2=4 2*1=2 2*2=4 1*3=3 2*3=6.3*3=9 3*1=3 3*2=6 3*3=93.以下叙述中正确
3、的是(分数:60.00)A.C程序的基本组成单位是语句B.C程序中的每一行只能写一条语句C.简单 C语句必须以分号结束D.C语句必须在一行内写完4.下列叙述中错误的是( )。(分数:60.00)A.gets函数用于从终端读入字符串B.getchar函数用于从磁盘文件读入字符C.fputs函数用于把字符串输出到文件D.fwrite函数用于以二进制形式输出数据到文件5.下列叙述中正确的是【 】。(分数:60.00)A.程序设计就是编制程序B.程序的测试必须由程序员自己去完成C.程序经调试改错后还应进行再测试D.程序经调试改错后不必进行再测试6.下列对于软件测试的描述中正确的是【 】。(分数:60.
4、00)A.软件测试的目的是证明程序是否正确B.软件测试的目的是使程序运行结果正确C.软件测试的目的是尽可能多地发现程序中的错误D.软件测试的目的是使程序符合结构化原则7.有以下程序 int f1 (int x,inty)return xy?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; pintf(“%d,%d,%d/n“,e,f,g); 程序运行后的输出结果是【 】。(分数:60.
5、00)A.4,3,7B.3,4,7C.52,7D.2,5,78.在结构化程序设计中,模块划分的原则是【 】。(分数:60.00)A.各模块应包括尽量多的功能B.各模块的规模应尽量大C.各模块之间的联系应尽量紧密D.模块内具有高内聚度、模块间具有低耦合度9.下列函数定义中,会出现编译错误的是( )。(分数:60.00)A.max(int x,int y,int *z) *z=xy ? x:y; B.int max(int x,y) int z; z=xy ? x:y; return z; C.max(int x,int y) int z; z=xy?x:y; return(z); D.int m
6、ax(int x,int y) return(xy?x:y); 10.有以下程序 main( ) int x8=8,7,6,5,0,0,*s; s=x+3; printf(“%d/n“,s2); 执行后输出结果是( )。 (分数:60.00)A.随机值B.0C.5D.611.若要求定义具有 10个 int型元素的一维数组 a,则以下定义语句中错误的是【 】。(分数:60.00)A.#define N 10B.#define n 5int aN; int a2*n;C.int a5+5;D.int n=10,an.12.有以下程序: main() int a,b,d=25; a=d/10%9;
7、b=a printf(“%d,%d/n“,a,b); 程序运行后的输出结果是【 】。(分数:60.00)A.6,1B.2,1C.6,0D.2,013.下列叙述中正确的是( )。(分数:60.00)A.C语言中既有逻辑类型也有集合类型B.C语言中没有逻辑类型但有集合类型C.C语言中有逻辑类型但没有集合类型D.C语言中既没有逻辑类型也没有集合类型14.以下不能正确定义二维数组的选项是( )。(分数:60.00)A.int a22=1,2;B.int a 2=1,2,3,4;C.int a22=1,2,3;D.int a2 =1,2,3,4;15.有以下程序: main() char s=“159“
8、,*p; p=s; printf(“%c“,*p+);printf(“%c“,*p+); 程序运行后的输出结果是【 】。(分数:60.00)A.15B.16C.12D.5916.对下列二叉树,进行中序遍历的结果是【 】。 (分数:60.00)A.ACBDFEGB.ACBDFGEC.ABDCGEFD.FCADBEG17.下面程序的功能是输出以下形式的金字塔图案是: * * * * * * * * * * * * * * * * main( ) int i,j; for(i=1;iy ? x:y; B.int max(int x,y) int z; z=xy ? x:y; return z; C.
9、max(int x,int y) int z; z=xy?x:y; return(z); D.int max(int x,int y) return(xy?x:y); 解析:10.有以下程序 main( ) int x8=8,7,6,5,0,0,*s; s=x+3; printf(“%d/n“,s2); 执行后输出结果是( )。 (分数:60.00)A.随机值B.0 C.5D.6解析:11.若要求定义具有 10个 int型元素的一维数组 a,则以下定义语句中错误的是【 】。(分数:60.00)A.#define N 10B.#define n 5int aN; int a2*n;C.int a
10、5+5;D.int n=10,an. 解析:在选项 D)中,n 是一个整型的变量。C 语言规定,在一维数组的定义中,其下标只能是常量表达式,不能包含变量。12.有以下程序: main() int a,b,d=25; a=d/10%9; b=a printf(“%d,%d/n“,a,b); 程序运行后的输出结果是【 】。(分数:60.00)A.6,1B.2,1 C.6,0D.2,0解析:本题中“a=d/10%9;“的值为 25/10%9=2;“b=aB.int a 2=1,2,3,4;C.int a22=1,2,3;D.int a2 =1,2,3,4; 解析:15.有以下程序: main() c
11、har s=“159“,*p; p=s; printf(“%c“,*p+);printf(“%c“,*p+); 程序运行后的输出结果是【 】。(分数:60.00)A.15 B.16C.12D.59解析:本题通过“p=s“将指针变量 p指向字符数组 s,在第一次输出时,由于+和*为同一优先级,“*p+“相于“*(p+)“。 p 指向 s1,输出为 s1的值。 16.对下列二叉树,进行中序遍历的结果是【 】。 (分数:60.00)A.ACBDFEG B.ACBDFGEC.ABDCGEFD.FCADBEG解析:二叉树中序遍历的含义是:首先遍历左子树,然后访问根结点,最后遍历右子树,其左右子树中也按这
12、样的顺序遍历,中序遍历二叉树的过程是一个递归的过程。根据题目中给出的二叉树的结构可知中序遍历的结果是:ACBDFEG。17.下面程序的功能是输出以下形式的金字塔图案是: * * * * * * * * * * * * * * * * main( ) int i,j; for(i=1;iOUT.DAT)解析:54.下列程序的运行结果是: 1 #include string.h char *ss(char *s) return s+strlen(s)/2; main( ) char *p,*str=”abcdefgh”; p=ss(str); printf(“%s/n”,p); (分数:40.00
13、)填空项 1:_ (正确答案:efgh)解析:55.下列程序的定义语句中,x1的初值是 1,程序运行后输出的内容是 2。 #include stdio.h main3 int x=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,*p4,i; for(i=0;i4;i+) pi= printf(“%d“,pi0); printf(“/n“); (分数:40.00)填空项 1:_ (正确答案:2, 2 4 6 8)解析:p 为指向数组的指针变量,数组 x1为数组 x 的第二个元素,值为 2:进入 for循环 i=0时,p0= printf(“%d/n“,j); 则输出
14、的结果是 1。 (分数:40.00)填空项 1:_ (正确答案:-3)解析:58.当执行以下程序时,输入 1234567890,则其中 while循环体将执行 1 次。 #include main2 char ch; while(ch=getchar3)=0)prinff(“#“); (分数:40.00)填空项 1:_ (正确答案:0)解析:通过 getchar-|_|-函数来取得从键盘输入的数据,再判断其是否是字符0,如果是,则执行一次循环,因为从键盘输入的 1234567890都是整型数,不是字符,所以 while循环执行的条件始终不成立,循环体执行的次数为 0。59.计算机网络分为广域网
15、和局域网,因特网属于 1。(分数:40.00)填空项 1:_ (正确答案:广域网)解析:60.若有定义:int k;,下列程序段的输出结果是 1。 for(k=2;k6;k+,k+)printf(“+%d“k); (分数:40.00)填空项 1:_ (正确答案:#2#4)解析:本题中从 k=2输出,printf 中“%d”前的内容原样输出,所以第一次输出#2,接着 k两次自加为4,接着输出#4,接着 k再两次自加为 6,此时不符合循环条件,所以输出结果为“#2#4”61.若变量 a,b已定义为 int类型并赋值 21和 55,要求用 printf函数以 a=21,b=55的形式输出,请写出完整的的输出语句 1。(分数:40.00)填空项 1:_ (正确答案:pfinff(“a=d,b=d“,a,b);)解析:pfinff 是格式化输出函数。62.软件工程三要素包括方法、工具和过程,其中, 1 支持软件开发的各个环节的控制和管理。(分数:40.00)填空项 1:_ (正确答案:过程)解析:软件工程包括三个要素:方法、工具和过程。软件工程方法为软件开发提供了“如何做”的技术。它包括了多方面的任务,如项目计划与估算、软件系统需求分析、数据结构、系统总体结构的设计、算法过程的设计、编码、测试以及维护等。