1、国家计算机二级(C)78 及答案解析(总分:3480.00,做题时间:120 分钟)一、选择题(1-10 题每题 2分,11-50 题(总题数:50,分数:3000.00)1.下列关于 C语言数据文件的叙述中正确的是( )。 (分数:60.00)A.文件由 ASCII码字符序列组成,C 语言只能读写文本文件B.文件由二进制数据序列组成,C 语言只能读写二进制文件C.文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件D.文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件2.下列对队列的叙述正确的是【 】。(分数:60.00)A.队列属于非线性表B.队列按“先进后出“原则
2、组织数据C.队列在队尾删除数据D.队列按“先进先出“原则组织数据3.有以下程序: #includestring.h void f(char *s,char *t) char k; k=*s; +s=*t; *t=k; S+; t-; if(*s) f(s,t); main() char.str10=“abcdefg“,*p; p=str+strlen(str) /2+1; f(p,p-2); printf(“%s/n“,str); 程序运行后的输出结果是【 】。 (分数:60.00)A.abcdefgB.gfedcbaC.gbcdefaD.abedcfg4.下列叙述中正确的是【 】。(分数:6
3、0.00)A.一个逻辑数据结构只能有一种存储结构B.数据的逻辑结构属于线性结构,存储结构属于非线性结构C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响5.算法的有穷性是指(分数:60.00)A.算法程序的运行时间是有限的B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用6.有以下程序: #include string.h main() char p=a,b,c,q10=a,b,c; printf(“%d%d/n“,strlen(p),strlen(q); 以下叙述中正确的是
4、【 】。 (分数:60.00)A.在给 p和 q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为 3B.由于 p数组中没有字符串结束符,长度不能确定;但 q数组中字符长度为 3C.由于 q数组中没有字符串结束符,长度不能确定:但 p数组中字符长度为 3D.由于 p和 q数组中没有字符串结束符,故长度都不能确定7.下面选项中不属于面向对象程序设计特征的是【 】。(分数:60.00)A.继承性B.多态性C.类比性D.封装性8.以下选项中,值为 1的表达式是【 】。(分数:60.00)A.1-0B.1-0C.1-0D.0-09.若有以下说明和定义 typedefint * INTEGER;
5、 INTEGER p,* q; 以下叙述正确的是( )。 (分数:60.00)A.p是 int型变量B.p是基类型为 int的指针变量C.q是基类型为 int的指针变量D.程序中可用 INTEGER代替 int类型名10.以下选项中,当 X为大于 l的奇数时,值为 0的表达式是【 】。(分数:60.00)A.x2=1B.x2C.x2!=0D.x2=011.有以下程序: main() int m,n,p; scanf(“m=%dn=%dp=%d“, printf(“%d%d%/n“,m,n,p); 若想从键盘上输入数据,使变量 m中的值为 123,n中的值为 456;p 中的值为 789,则正确
6、的输入是【 】。(分数:60.00)A.m=123 n=456p=789B.m=123 n=456 p=789C.m=123,n=456,p=789D.123 456 78912.设有定义:intk=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是【 】。(分数:60.00)A.k+B.k+=lC.+kD.k+l13.有以下程序 struct Sint n;int a20; voidf(struct S* p) int,i,j,t; for(i=0;in 一1;i+) for(j=i+1;jn;j+) if(p-a ip-aj)t=p-ai;p-ai=p-aj;P-aj=t; mal
7、n() int i;struct S s=10,2,3,l,6,8,7,5,4,10,9; f( for(b=1;bnext; while( 1) printf(“sn“,P-sub);P= 2; main3 Node *hd; hd=fun4;disp(hd);prinff(“n“); (分数:40.00)填空项 1:_52.以下程序的输出结果是 1。 #include main2 prinff(“dn“,strlen(“IBMn0121“); (分数:40.00)填空项 1:_53.下面程序的功能是:将 N行 N列二维数组中每一行的元素进行排序,第 0行从小到大排序,第 1行从大到小排序,
8、第 2行从小到大排序,第 3行从大到小排序,例如: (分数:40.00)填空项 1:_填空项 1:_54.问题处理方案的正确而完整的描述称为 1。(分数:40.00)填空项 1:_55.支持 Internet基本服务的协议是 1。(分数:40.00)填空项 1:_56.以下程序的输出结果是 1。 #include main2 char *sl,*s2,m; sl=s2=(char*)malloc(sizeof(char).*sl=15; *s2=20; m=*sl+*s2; printf(“dn“,m); (分数:40.00)填空项 1:_57.在 Windows环境下,利用菜单命令删除固定硬
9、盘上的文件与文件夹,实际上是将需要删除的文件与文件夹移动到 1 文件夹中。(分数:40.00)填空项 1:_58.在 DOS环境下,表示打印机的设备文件名是 1。(分数:40.00)填空项 1:_59.以下程序运行后的输出结果是 1。 main ( ) char a=“Language“,b=“Programe“; char *p1,*p2; int k; p1=a; p2=b; for(k=0;k=7;k+) if(*p1+k)=*(p2+k) printf(“%c“,*(p1+k); (分数:40.00)填空项 1:_60.有以下程序 main( ) int n=0,m=1,x=2; if
10、(!n) x-=1; if(m) x-=2; if(x) x-=3; printf(“%d/n”,x); 执行后输出结果是 1。 (分数:40.00)填空项 1:_61.对下列二叉树进行中序遍历的结果是 1。 (分数:40.00)填空项 1:_62.若有以下程序 int f(int x,int y) return(y-x)*x; main( ) int a=3,b=4,c=5,d; d=f(f(3,4),f(3,5); printf(“%d/n“,d); 执行后输出结果是 1。 (分数:40.00)填空项 1:_国家计算机二级(C)78 答案解析(总分:3480.00,做题时间:120 分钟)
11、一、选择题(1-10 题每题 2分,11-50 题(总题数:50,分数:3000.00)1.下列关于 C语言数据文件的叙述中正确的是( )。 (分数:60.00)A.文件由 ASCII码字符序列组成,C 语言只能读写文本文件B.文件由二进制数据序列组成,C 语言只能读写二进制文件C.文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件D.文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件 解析:2.下列对队列的叙述正确的是【 】。(分数:60.00)A.队列属于非线性表B.队列按“先进后出“原则组织数据C.队列在队尾删除数据D.队列按“先进先出“原则组织数据 解析:队列
12、是一种操作受限的线性表。它只允许在线性表的一端进行插入操作,另一端进行删除操作。其中,允许插入的一端称为队尾(一),允许删除一端称为队首(front)。队列具有先进先出的特点,它是按“先进先出“的原则组织数据的,故本题答案为 D。3.有以下程序: #includestring.h void f(char *s,char *t) char k; k=*s; +s=*t; *t=k; S+; t-; if(*s) f(s,t); main() char.str10=“abcdefg“,*p; p=str+strlen(str) /2+1; f(p,p-2); printf(“%s/n“,str);
13、 程序运行后的输出结果是【 】。 (分数:60.00)A.abcdefgB.gfedcba C.gbcdefaD.abedcfg解析:本程序的作是将字符串 str倒序。语句“p=str+strlen(str)/2+1;“用于将指针变量 p指向 e字符所在的存储单元,p-2 指向了 c字符所在的存储单元,在函数 f中将这两个存储单元的内容交换,并使得 f函数中指向 c字符的指针变量 s加 1。指向 c字符的指针变量 t减 1,然后继续将 s和 t指向的存储单元的内容进行交换,直到 s指向的存储单元的内容为空为止。所以本题程序输出的结果是字符串“abcdefg“的倒序形式“gfedcba“。 4.
14、下列叙述中正确的是【 】。(分数:60.00)A.一个逻辑数据结构只能有一种存储结构B.数据的逻辑结构属于线性结构,存储结构属于非线性结构C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响 解析:一般来说,一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接、索引等存储结构。而采用不同的存储结构,其数据处理的效率是不同的。 5.算法的有穷性是指(分数:60.00)A.算法程序的运行时间是有限的 B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用解析:算
15、法具有 5个特性:有穷性:一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有限时间内完成,即运行时间是有限的;确定性:算法中每一条指令必须有确切的含义,读者理解时不会产生二义性。可行性:一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现。输入:一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合。输出:一个算法有一个或多个输出。6.有以下程序: #include string.h main() char p=a,b,c,q10=a,b,c; printf(“%d%d/n“,strlen(p),strlen(q); 以下叙述中正确
16、的是【 】。 (分数:60.00)A.在给 p和 q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为 3B.由于 p数组中没有字符串结束符,长度不能确定;但 q数组中字符长度为 3 C.由于 q数组中没有字符串结束符,长度不能确定:但 p数组中字符长度为 3D.由于 p和 q数组中没有字符串结束符,故长度都不能确定解析:strlen 是计算以“/0“结束的字符串的长度的函数,函数的值为字符串中实际长度,不包括“/0“。题中“q10=a,b,c“虽然给出了数组大小,即数组实际分配的存储空间,但此字符串只占用前 3个存储弹元,其余存储单元系统自动加上“/0“故数组 q的长度为 3;由于
17、p数组中没有字符串结束符,故字符串的长度不自绷定。 7.下面选项中不属于面向对象程序设计特征的是【 】。(分数:60.00)A.继承性B.多态性C.类比性 D.封装性解析:面向对象程序设计的 3个主要特征是:封装性、继承性和多态性。8.以下选项中,值为 1的表达式是【 】。(分数:60.00)A.1-0B.1-0 C.1-0D.0-0解析:本题主要考查了字符参与的数学运算,首先要将字符转换为对应的 ASCII码值。我们知道,字符1所对应的 ASCII码值不是 1,字符0所对应的 ASCII码值也不是 0,字符0是字符串结束标识符,其对应的 ASCII码值是 0。9.若有以下说明和定义 type
18、defint * INTEGER; INTEGER p,* q; 以下叙述正确的是( )。 (分数:60.00)A.p是 int型变量B.p是基类型为 int的指针变量 C.q是基类型为 int的指针变量D.程序中可用 INTEGER代替 int类型名解析:语句 typedef int * INTEGER;定义了一个新类型名 INTEGER,因此语句 INTEGERp,* q;就相当 于 int * p,* * q;。10.以下选项中,当 X为大于 l的奇数时,值为 0的表达式是【 】。(分数:60.00)A.x2=1B.x2C.x2!=0D.x2=0 解析:因为 x的值为大于 1的奇数,所以
19、 x除以 2的余数等于 l,因此,选项 A)、C)中表达式的结果为真,不为 0;对于选项 B)来说,x 除以 2的商不会等于 0;选项 D)中表达式的结果为假,即等于 0。11.有以下程序: main() int m,n,p; scanf(“m=%dn=%dp=%d“, printf(“%d%d%/n“,m,n,p); 若想从键盘上输入数据,使变量 m中的值为 123,n中的值为 456;p 中的值为 789,则正确的输入是【 】。(分数:60.00)A.m=123 n=456p=789 B.m=123 n=456 p=789C.m=123,n=456,p=789D.123 456 789解析
20、:根据本题的数据输入形式“scanf(“m=%dn=%dp=%d“, for(b=1;bnext; while( 1) printf(“sn“,P-sub);P= 2; main3 Node *hd; hd=fun4;disp(hd);prinff(“n“); (分数:40.00)填空项 1:_ (正确答案:p!=NULL,p-next)解析:NULL 的 ASCII码的值和O的 ASCII码的值相等,条件到 NULL停止循环。把下一个节点的地址52.以下程序的输出结果是 1。 #include main2 prinff(“dn“,strlen(“IBMn0121“); (分数:40.00)填
21、空项 1:_ (正确答案:9)解析:本题的字符串中共有 9个字符,它们分别是I,B,M,n,0,1,2,1,其中“n“表示换行,“表示反斜杠字符“。所以本题的最后输出结果为 9。53.下面程序的功能是:将 N行 N列二维数组中每一行的元素进行排序,第 0行从小到大排序,第 1行从大到小排序,第 2行从小到大排序,第 3行从大到小排序,例如: (分数:40.00)填空项 1:_ (正确答案:j+1)填空项 1:_ (正确答案:i2 或 i2=1)解析:k 表示 i行中从第 j个元素之后的元素的列下标。判断第 i行是否是偶数。54.问题处理方案的正确而完整的描述称为 1。(分数:40.00)填空项
22、 1:_ (正确答案:算法)解析:所谓算法是指解题方案的准确而完整的描述。 55.支持 Internet基本服务的协议是 1。(分数:40.00)填空项 1:_ (正确答案:TCP/IP)解析:56.以下程序的输出结果是 1。 #include main2 char *sl,*s2,m; sl=s2=(char*)malloc(sizeof(char).*sl=15; *s2=20; m=*sl+*s2; printf(“dn“,m); (分数:40.00)填空项 1:_ (正确答案:40)解析:本题中指针 s1和 s2都指向同一个内存中的地址。因此语句“* s2=20;“执行后,*s1=*
23、s2=20。所以 m最后的值为 40。57.在 Windows环境下,利用菜单命令删除固定硬盘上的文件与文件夹,实际上是将需要删除的文件与文件夹移动到 1 文件夹中。(分数:40.00)填空项 1:_ (正确答案:回收站)解析:58.在 DOS环境下,表示打印机的设备文件名是 1。(分数:40.00)填空项 1:_ (正确答案:PRN)解析:59.以下程序运行后的输出结果是 1。 main ( ) char a=“Language“,b=“Programe“; char *p1,*p2; int k; p1=a; p2=b; for(k=0;k=7;k+) if(*p1+k)=*(p2+k)
24、printf(“%c“,*(p1+k); (分数:40.00)填空项 1:_ (正确答案:gae)解析:60.有以下程序 main( ) int n=0,m=1,x=2; if(!n) x-=1; if(m) x-=2; if(x) x-=3; printf(“%d/n”,x); 执行后输出结果是 1。 (分数:40.00)填空项 1:_ (正确答案:-4)解析:61.对下列二叉树进行中序遍历的结果是 1。 (分数:40.00)填空项 1:_ (正确答案:DBXEAYFZC)解析:二叉树中序遍历的顺序为先遍历左子树,然后访问根结点,最后遍历右子树。62.若有以下程序 int f(int x,int y) return(y-x)*x; main( ) int a=3,b=4,c=5,d; d=f(f(3,4),f(3,5); printf(“%d/n“,d); 执行后输出结果是 1。 (分数:40.00)填空项 1:_ (正确答案:9)解析: