1、国家计算机二级(C)71 及答案解析(总分:3480.00,做题时间:120 分钟)一、选择题(1-10 题每题 2 分,11-50 题(总题数:50,分数:3000.00)1.以下选项中,值为 1 的表达式是【 】。(分数:60.00)A.1-0B.1-0C.1-0D.0-02.有以下程序,其中u 表示按无符号整数输出 main() unsigned int X=OXIFFF;* X 的初值为十六进制数 * printf(“un“,X); 程序运行后的输出结果是【 】。 (分数:60.00)A.-1B.65535C.32767D.0XFFFF3.当把以下四个表达式用作 if 语句的控制表达式
2、时,有一个选项与其他三个选项含义不同,这个选项是【 】。(分数:60.00)A.k%2B.k%2=1C.(k%2)!=0D.!k%2=14.以下不能正确计算代数式 1/3sin2(1/2)值的 C 语言表达式是【 】。(分数:60.00)A.1/3*sin(1/2)*sin(1/2)B.sin(0.5)*sin(0.5)/3C.pow(sin(0.5),2)/3D.1/3.0*pow(sin(1.0.2),2)5.算法中,对需要执行的每一步操作,必须给出清楚、严格的规定。这属于算法的【 】。(分数:60.00)A.正当性B.可行性C.确定性D.有穷性6.若有以下说明和定义 union dt i
3、nt a;char b;double c;data; 以下叙述中错误的是【 】。(分数:60.00)A.data 的每个成员起始地址都相同B.变量 data 所占的内存字节数与成员 c 所占字节数相等C.程序段 data.a=5;printf(“%f/n“,data.c);输出结果为 5.000000D.D7.设有如下说明 typedef struct int n; char c; double x;STD; 则以下选项中 ,能正确定义结构体数组并赋初值的语句是( )。 (分数:60.00)A.STD tt2=1,A,62,2,B,75;B.STD tt2=1,“A“,62,2,“,75;C.
4、struct tt2=1,A,2,B;D.struct tt2=1,“A“,62.5,2,“B“,75.0;8.以下对结构体类型变量 td 的定义中,错误的是【 】。(分数:60.00)A.virtual void vf()0;B.void vf(int)0;C.virtual int vf(int);D.virtual void vf(int) 9.有以下程序: void sum(int *a) a0=a1; main( ) int aa10=1,2,3,4,5,6,7,8,9,10,i; for(i=2;i=0;i-) sp; sum( printf(“%d/n”,aa0); 执行后的输出
5、结果是( )。 (分数:60.00)A.4B.3C.2D.110.有下列程序: #inelude stdio.h main() int x=8; for(;x0;x-) if(x%3) printf(“%d,“,x-);continue; printf(“%d,“,-x); 程序的运行结果是( )。 (分数:60.00)A.7,4,2B.8,7,5,2C.9,7,6,4D.8,5,4,211.下面选项中不属于面向对象程序设计特征的是【 】。(分数:60.00)A.继承性B.多态性C.类比性D.封装性12.已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1y+z/2 的值是
6、( )。(分数:60.00)A.6B.0C.2D.113.有以下程序 void swap(char*X,char,*y) char t; t=*X;*X=* Y;*Y=t; main() char*s1=“abc“,*s2=“123“; swap(s1,s2);printf(“S,sn“,s1,s2); 程序执行后的输出结果是【 】。 (分数:60.00)A.123,abcB.abc,123C.1bc,a23D.321,cba14.有以下程序: main( ) char a =a,b,c,d,e,f,g,h,/0;int i,j; i=sizeof(a);j=strlen(a); printf
7、(“%d,%d/n“,i,j); 程序运行后的输出结果是( )。 (分数:60.00)A.9,9B.8,9C.1,8D.9,815.有以下结构体说明、变量定义和赋值语句 struct STD char name10; int age; char sex; s5,*ps; ps= while(i7 i+; printf(“%d/n“,k); 执行后输出的结果是( )。 (分数:60.00)A.58B.56C.45D.2419.要求以下程序的功能是计算:s=1+1/2+1/3+1/10 main( ) int n; float s; s=1.0; for(n=10;n1;n-) s=s+1/n;
8、printf(“%6.4f/n“,s); 程序运行后输出结果错误,导致错误结果的程序行是( )。 (分数:60.00)A.s=1.0;B.for(n=10;n1;n-)C.s=s+1/n;D.printf(“%6.4f/n“,s);20.在长度为 n 的有序线性表中进行二分查找,最坏情况下需要比较的次数是(分数:60.00)A.O(n)B.O(n2)C.O(log2n)D.O(nlog2n)21.DOS 文件系统的组织结构属于( )。(分数:60.00)A.星形结构B.网形结构C.环形结构D.树形结构22.一个算法应该具有“确定性”等 5 个特性,下面对另外 4 个特性的描述中错误的是( )。
9、(分数:60.00)A.有零个或多个输入B.有零个或多个输出C.有穷性D.可行性23.有以下程序: #include main() int n,*P=NULL; *P= prinff(“Input n:“);scanf(“d“, while(z-0 while(sli=s2i return(sli=/0 此函数的功能是( )。 (分数:60.00)A.比较 s1 和 s2 所指字符串的大小,若 s1 比 s2 的大,函数值为 1,否则函数值为 0B.将 s2 所指字符串赋给 s1C.比较 s1 和 s2 所指字符串是否相等,若相等,函数值为 1,否则函数值为 0D.比较 s1 和 s2 所指字
10、符串的长度,若 s1 比 s2 的长,函数值为 1,否则函数值为 029.若有说明语句:double*p,a;则能通过 scanf 语句正确给输入项读入数据的程序段是【 】。(分数:60.00)A.*P= t=v;v=w;w=t; main( ) int x=1,y=3,z=2; if(xy) f(x,y); else if(yz) f(y,z); else f(x,z); printf(“%d,%d,%d/n”,x,y,z); 执行后输出结果是( )。 (分数:60.00)A.1,2,3B.3,1,2C.1,3,2D.2,3,132.用树形结构表示实体之间联系的模型是【 】。(分数:60.0
11、0)A.关系模型B.网状模型C.层次模型D.以上三个都是33.在 64 为计算机中,一个字长所占字节数为( )。(分数:60.00)A.64B.8C.4D.134.有以下程序: main() int a3,3*p,i; p= for(b=1;b=0;i-) sp; sum( printf(“%d/n”,aa0); 执行后的输出结果是( )。 (分数:60.00)A.4 B.3C.2D.1解析:10.有下列程序: #inelude stdio.h main() int x=8; for(;x0;x-) if(x%3) printf(“%d,“,x-);continue; printf(“%d,“
12、,-x); 程序的运行结果是( )。 (分数:60.00)A.7,4,2B.8,7,5,2C.9,7,6,4D.8,5,4,2 解析:“x-”表示先执行程序,再令 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
13、=2,执行printf(“d,“,x-);continue;后,输出“2,”;然后执行两次 x-后,x=0,不符合“x0”,循环全部结束。11.下面选项中不属于面向对象程序设计特征的是【 】。(分数:60.00)A.继承性B.多态性C.类比性 D.封装性解析:面向对象程序设计的 3 个主要特征是:封装性、继承性和多态性。12.已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1y+z/2 的值是( )。(分数:60.00)A.6B.0C.2D.1 解析:本题考查运算符的优先顺序,其中有13.有以下程序 void swap(char*X,char,*y) char t; t=
14、*X;*X=* Y;*Y=t; main() char*s1=“abc“,*s2=“123“; swap(s1,s2);printf(“S,sn“,s1,s2); 程序执行后的输出结果是【 】。 (分数:60.00)A.123,abcB.abc,123C.1bc,a23 D.321,cba解析:这是一个转换程序:低字节相互转换,高字节不变。“abc“的 ab 和“123“的 12 相互转化。14.有以下程序: main( ) char a =a,b,c,d,e,f,g,h,/0;int i,j; i=sizeof(a);j=strlen(a); printf(“%d,%d/n“,i,j); 程
15、序运行后的输出结果是( )。 (分数:60.00)A.9,9B.8,9C.1,8D.9,8 解析:sizeof( )函数返回字符串所占字节数,strlen 函数返回字符串的长度,其中/0是一个转义字符,称为空值,它占用存储空间,但不计入串的长度。15.有以下结构体说明、变量定义和赋值语句 struct STD char name10; int age; char sex; s5,*ps; ps= while(i7 i+; printf(“%d/n“,k); 执行后输出的结果是( )。 (分数:60.00)A.58B.56C.45D.24 解析:19.要求以下程序的功能是计算:s=1+1/2+1
16、/3+1/10 main( ) int n; float s; s=1.0; for(n=10;n1;n-) s=s+1/n; printf(“%6.4f/n“,s); 程序运行后输出结果错误,导致错误结果的程序行是( )。 (分数:60.00)A.s=1.0;B.for(n=10;n1;n-)C.s=s+1/n; D.printf(“%6.4f/n“,s);解析:20.在长度为 n 的有序线性表中进行二分查找,最坏情况下需要比较的次数是(分数:60.00)A.O(n)B.O(n2)C.O(log2n) D.O(nlog2n)解析:二分查找法也称为折半查找法。它的基本思想是:将 n 个元素分成
17、个数大致相同的两半,取 an/2与欲查找的 x 作比较,如果 x=an/2,则找到 x,算法终止;如果 xan/2,则只要在数组 a 的右半部继续搜索 x。每次余下 n/(2i)个元素待比较。当最后剩下一个时,即 n/(2i)=1。故,n=2i;所以i=log2n。21.DOS 文件系统的组织结构属于( )。(分数:60.00)A.星形结构B.网形结构C.环形结构D.树形结构 解析:22.一个算法应该具有“确定性”等 5 个特性,下面对另外 4 个特性的描述中错误的是( )。(分数:60.00)A.有零个或多个输入B.有零个或多个输出 C.有穷性D.可行性解析:23.有以下程序: #inclu
18、de main() int n,*P=NULL; *P= prinff(“Input n:“);scanf(“d“, while(z-0 while(sli=s2i return(sli=/0 此函数的功能是( )。 (分数:60.00)A.比较 s1 和 s2 所指字符串的大小,若 s1 比 s2 的大,函数值为 1,否则函数值为 0B.将 s2 所指字符串赋给 s1C.比较 s1 和 s2 所指字符串是否相等,若相等,函数值为 1,否则函数值为 0 D.比较 s1 和 s2 所指字符串的长度,若 s1 比 s2 的长,函数值为 1,否则函数值为 0解析:29.若有说明语句:double*p
19、,a;则能通过 scanf 语句正确给输入项读入数据的程序段是【 】。(分数:60.00)A.*P= t=v;v=w;w=t; main( ) int x=1,y=3,z=2; if(xy) f(x,y); else if(yz) f(y,z); else f(x,z); printf(“%d,%d,%d/n”,x,y,z); 执行后输出结果是( )。 (分数:60.00)A.1,2,3B.3,1,2C.1,3,2 D.2,3,1解析:32.用树形结构表示实体之间联系的模型是【 】。(分数:60.00)A.关系模型B.网状模型C.层次模型 D.以上三个都是解析:层次模型是最早发展起来的数据库模
20、型,它的基本结构是树形结构。 33.在 64 为计算机中,一个字长所占字节数为( )。(分数:60.00)A.64B.8 C.4D.1解析:34.有以下程序: main() int a3,3*p,i; p= for(b=1;b1000/10*10=1000,1000/f(N)1000/(10*10)=10。60.计算机的运算速度可以用 MIPS 来描述,1MIPS 是指每秒执行 1 条指令。(分数:40.00)填空项 1:_ (正确答案:100 万)解析:61.下列程序的输出结果是 1。 #include stdio.h void fun(int x) if(x/20) fun(x/2); p
21、rintf(“%d“,x); main2 fun(3);printf(“/n“); (分数:40.00)填空项 1:_ (正确答案:13)解析:此题考查的是函数的递归调用,进入主函数调用 fun-|_|-函数,进行 if 语句的判断,当 x=3 时,条件成立,执行 fun(x/2);语句,递归调用 fun-|_|-函数本身,进行if 语句条件判断,if(x/20)条件不成立,用 printf 输出 1;返回上一次调用 fun-|_|-函数,printf 输出 3,因此程序的最终输出结果为 13。62.在数据库管理系统提供的数据定义语言、数据操纵语言和数据控制语言中, 1 负责数据的模式定义与数据的物理存取构建。(分数:40.00)填空项 1:_ (正确答案:数据定义语言)解析:数据定义语言:负责数据的模式定义与数据的物理存取构建;数据操纵语言:负责数据的操纵,如查询与增、删、改等;数据控制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等。