1、计算机二级(C)21 及答案解析(总分:645.00,做题时间:120 分钟)一、选择题(1-10 题每题 2 分,11-50 题(总题数:40,分数:60.00)1.以下对结构体类型变量 td 的定义中,错误的是_。 (分数:1.50)A.B.C.D.2.有以下程序: #include stdio.h main( ) FILE *fp; int i,k=0,n=0; fp=fopen(“d1.dat”,”w”); for(i=1;i4;i+) fprintf(fp,”%d”,i); fclose(fp); fp=fopen(“d1.dat”,”r”); fscanf(fp,”%d%d”, p
2、rintf(“%d %d/n”,k,n); fclose(fp); 执行后输出结果是( )。 (分数:1.50)A.1 2B.123 0C.1 23D.0 03.若有说明:int n=2,*p=n,*q=p;,则以下非法的赋值语句是( )。(分数:1.50)A.p=q;B.*p=q;C.n=*q;D.p=n;4.有以下程序 void fun(char *a, char *b) a=b; (*a)+; main( ) char c1=A,c2=a,*p1,*p2; p1= p2= fun(p1,p2); printf(“%c%c/n“,c1,c2); 程序运行后的输出结果是( )。 (分数:1.
3、50)A.AbB.aaC.AaD.Bb5.若有以下说明和语句,int c45,(*p)5;p=c; 能正确引用 c 数组元素的是( )。 (分数:1.50)A.p+1B.*(p+3)C.*(p+1)+3D.*(p0+2)6.有以下程序 void fun(int *a,int i,int j) int t; if (ij) t=ai;ai=aj;aj=t; fun(a,+i,-j); main( ) int a =1,2,3,4,5,6,i; fun(a,0,5); for(i=0;i6;i+) printf(“%d“,ai); 执行后输出的结果是( )。 (分数:1.50)A.6 5 4 3
4、2 1B.4 3 2 1 5 6C.4 5 6 1 2 3D.1 2 3 4 5 67.有以下程序: int f(int n) if(n =1)return 1; else return f(n-1)+1; main( ) int i,j=0; for(i=1;i3;i+) j+=f(i); printf(“%d/n“,j); 程序运行后的输出结果是( )。 (分数:1.50)A.4B.3C.2D.18.有以下程序段: int n,t=1,s=0; scanf(“%d“, do s=s+t; t=t-2; while (t!=n); 为使此程序段不陷入死循环,从键盘输入的数据应该是_。 (分数
5、:1.50)A.任意正奇数B.任意负偶数C.任意正偶数D.任意负奇数9.设变量 x 为 float 型且已赋值,则以下语句中能将 x 中的数值保留到小数点后两位,并将第三位四舍五入的是(分数:1.50)A.x=x*100+0.5/100.0;B.x=(x*100+0.5)/100.0;C.x=(int)(x*100+0.5)/100.0;D.x=(x/100+0.5)*100.0;10.有以下程序: #define f(x) x*x main( ) int i; i=f(4+4)/f(2+2); printf(“%d/n”,i); 执行后输出结果是( )。 (分数:1.50)A.28B.22C
6、.16D.411.C 语言中用于结构化程序设计的三种基本结构是( )。(分数:1.50)A.顺序结构、选择结构、循环结构B.if、switch、breakC.for、while、do-whileD.if、for、continue12.若整型变量 a、b、c、d 中的值依次为 1、4、3、2。则条件表达式 a0) switch(k) default : break; case 1 : n+=k; case 2 : case 3 : n+=k; k-; printf(“%d/n“,n); 程序运行后的输出结果是_。 (分数:1.50)A.0B.4C.6D.730.有以下程序: main() int
7、 m=12,n=34; printf(“%d%d“,m+,+n); printf(“%d%d/n“,n+,+m); 程序运行后的输出结果是_。(分数:1.50)A.12353514B.12353513C.12343514D.1234351331.有以下程序 main() int i,t3=9,8,7,6,5,4,3,2,1; for(i=0;iA.7 5 3B.3 5 7C.3 6 9D.7 5 132.有以下程序: int f(int a) return a%2; main( ) int s8=1,3,5,2,4,6,i,d=0; for (i=0;f(si);i+) d+=si; prin
8、tf(“%d/n“,d); 程序运行后的输出结果是( )。 (分数:1.50)A.9B.11C.19D.2133.要求以下程序的功能是计算: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; printf(“%6.4f/n“,s); 程序运行后输出结果错误,导致错误结果的程序行是( )。 (分数:1.50)A.s=1.0;B.for(n=10;n1;n-)C.s=s+1/n;D.printf(“%6.4f/n“,s);34.下面程序的功能是输出以下形式的金字塔图案是: * * * * * * * *
9、* * * * * * * * main( ) int i,j; for(i=1;ic”值为假,故 k 的值还等于原来 k 的值,即 2。26.与十进制数 200 等值的十六进制数为( )。(分数:1.50)A.A8B.A4C.C8 D.C4解析:27.以下选项中,与 k = n + +完全等价的表达式是( )。(分数:1.50)A.k=n,n=n+1 B.n=n+1,k=nC.k=+nD.k+=n+1解析:28.有以下程序 main( ) int a; char c=10; float f=100.0; double x; a=f/=c*=(x=6.5); printf(“%d %d %3.
10、1f %3.1f/n“,a,c,f,x); 程序运行后的输出结果是( )。 (分数:1.50)A.1 65 1 6.5B.1 65 1.5 6.5 C.1 65 1.0 6.5D.2 65 1.5 6.5解析:29.有以下程序: main() int k=5,n=0; while(k0) switch(k) default : break; case 1 : n+=k; case 2 : case 3 : n+=k; k-; printf(“%d/n“,n); 程序运行后的输出结果是_。 (分数:1.50)A.0B.4C.6D.7 解析:在 switch 语句中,表达式的值与某一个 case
11、后面的常量表达式的值相等时,就执行此 case 后面的语 句,若所有的 case 中的常量表达式的值都没有与表达式的值匹配的,就执行 default 后面的语句,各个 case 和 default 的出现次序不影响执行结果。所以在本题中,当 k=5 和 k=4 的时候,case 都没有与其匹配的值, 所以执行了 default 语句;当 k=3 时,执行“case 3 : n+=k;”得 n=3,然后执行 default;当 k=2 时,执行“case2 : case 3 : n+=k;”得 n=5,然后执行 default;当 k=1 时,执行“case 1 : n+=k; case 2 :
12、 case 3 : n+=k;” 使得 n 加两次 k,得到 n=7。30.有以下程序: main() int m=12,n=34; printf(“%d%d“,m+,+n); printf(“%d%d/n“,n+,+m); 程序运行后的输出结果是_。(分数:1.50)A.12353514 B.12353513C.12343514D.12343513解析: 执行 “ printf(“%d%d“,m+,+n); ”后, 输出 的是 m 和 n+1 的值 1235 ,接 着执 行 “printf(“%d%d/n“,n+,+m);”输出 n 和 m+1 的值 3514。31.有以下程序 main()
13、 int i,t3=9,8,7,6,5,4,3,2,1; for(i=0;iA.7 5 3B.3 5 7 C.3 6 9D.7 5 1解析:此题考核的是二维数组的应用,将初始值放在一对大括号内,按数组元素排列的顺序对各元素赋值,二维数组中行下标可以省略,但列下标必须要指定,由此题可以看出数组 t 是一个三行三列的二维数组,执行 for 循环语句 t2-ii分别为 t20,t11,t02,得出输出结果为 357。32.有以下程序: int f(int a) return a%2; main( ) int s8=1,3,5,2,4,6,i,d=0; for (i=0;f(si);i+) d+=si
14、; printf(“%d/n“,d); 程序运行后的输出结果是( )。 (分数:1.50)A.9 B.11C.19D.21解析:33.要求以下程序的功能是计算: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; printf(“%6.4f/n“,s); 程序运行后输出结果错误,导致错误结果的程序行是( )。 (分数:1.50)A.s=1.0;B.for(n=10;n1;n-)C.s=s+1/n; D.printf(“%6.4f/n“,s);解析:34.下面程序的功能是输出以下形式的金字塔图案是: *
15、* * * * * * * * * * * * * * * main( ) int i,j; for(i=1;i A.TXT)解析:54.设有以下定义 stuct ss int info; struct ss *link;x,y,z; 且已建立如下图所示链表结构: (分数:40.00)填空项 1:_ (正确答案:x.link=y.link;)解析:55.算法复杂度主要包括时间复杂度和 1 复杂度。(分数:40.00)填空项 1:_ (正确答案:空间)解析:程序在计算机上运行时所耗费的时间由下列因素所决定:程序运行时所需输入的数据总量,对源程 序进行编译所需时间,计算机执行每条指令所需时间,程序
16、中的指令重复执行的次数。前一条取决于实现 算法的计算机软、硬件系统,习惯上常常把语句重复执行的次数作为算法运行时间的相对量度,称作算法 的时间复杂度。算法在运行过程中需辅助存储空间的大小称为算法的空间复杂度。56.在关系模型中,把数据看成是二维表,每一个二维表称为一个 1。(分数:40.00)填空项 1:_ (正确答案:关系)解析:在 Visual FoxPro 中,一个“表”就是一个关系。一个关系的逻辑结构就是一张二维表。57.已有文本文件 test.txt,其中的内容为:Hello,everyone!。以下程序中,文件 test.txt 已正确为“读”而打开,由此文件指针 fr 指向文件,
17、则程序的输出结果是 1。 #include stdio.h main( ) FILE *fr; char str40; fgets(str,5,fr); printf(“%s/n“,str); fclose(fr); (分数:40.00)填空项 1:_ (正确答案:Hell)解析:58.计算机软件分为系统软件和应用软件,操作系统属于 1。(分数:40.00)填空项 1:_ (正确答案:系统软件)解析:计算机软件可分为系统软件和应用软件,操作系统属于系统软件。59.若有程序 main( ) int i,j; scanf(“i=%d,j=%d“, printf(“i=%d,j=%d/n “,i,j
18、); 要求给 i 赋 10,给 j 赋 20,则应该从键盘输入 1。 (分数:40.00)填空项 1:_ (正确答案:i=10,j=20)解析:60.以下程序运行后的输出结果是 1。 main( ) int x=1,y=0,a=0,b=0; switch(x) case 1:switch(y) case 0:a+; break; case 1:b+; break; case 2:a+;b+; break; printf(“%d %d/n“,a,b); (分数:40.00)填空项 1:_ (正确答案:2 1)解析:61.在 Windows 环境下,为了进行“添加/删除程序“操作,首先打开 1,然
19、后双击其中的相应图标。(分数:40.00)填空项 1:_ (正确答案:控制面板)解析:62.以下程序运行后的输出结果是 1。 #define S(x) 4*x*x+1 main2 int i=6,j=8; printf(“%d/n“,S(i+j); (分数:40.00)填空项 1:_ (正确答案:81)解析:带参数的宏定义是按#define 命令行中指定的字符串从左到右进行转换。本题中替换的式子为:4*i+j*i+j+1,代入 i,j 的值得 81。63.以下程序段的输出结果是 1。 int i=9; printf(“%o/n“,i); (分数:40.00)填空项 1:_ (正确答案:11)解
20、析:64.以下程序运行后的输出结果是 1。 main2 int a=3,b=4,c=5,t=99; if(b填空项 1:_ (正确答案:4 5 99)解析:本题需特别注意的是“;”的问题,不能把“t=a;a=c;c=t;”误认为是第一个 if 的语句,实际上,只有“t=a;”才是第一个 if 的语句。65.以下程序运行后的输出结果是 1。 main( ) int p7=11,13,14,15,16,17,18; int i=0,j=0; while(i填空项 1:_ (正确答案:24)解析:66.数据库系统阶段的数据具有较高独立性,数据独立性包括物理独立性和 1 两个含义。(分数:-1.00)
21、填空项 1:_ (正确答案:逻辑独立性)解析:数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。数据独立性一般分为物理独立性与逻辑独立性两个含义。67.测试的目的是暴露错误,评价程序的可靠性;而 1 的目的是发现错误的位置并改正错误。(分数:-1.00)填空项 1:_ (正确答案:调试)解析:软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定;调试也称排错,它是一个与测试有联系又有区别的概念。具体来说,测试的目的是暴露错误,评价程序的可靠性,而调试的目的是发现错误的位置,并改正错误。 68.软件危机出现于 60 年代末,为了解决软件危机,人们提出了 1 的原理来设计软件这就是软件工程诞生的基础。 (分数:-1.00)填空项 1:_ (正确答案:软件工程学)解析:69.算法的工作量大小和实现算法所需的存储单元多少分别称为算法的 1。(分数:-1.00)填空项 1:_ (正确答案:时间复杂度和空间复杂度)解析:算法的复杂性是指对一个在有限步骤内终止算法和所需存储空间大小 的估计。算法的计算量是算法的时间复杂性,算法所需存储空间大小是算法的空间复 杂性。70.数据的逻辑结构有线性结构和 1 两大类。(分数:-1.00)填空项 1:_ (正确答案:非线性结构)解析:数据的逻辑结构有线性结构和非线性结构两大类。