1、计算机二级(C)52 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(1-10 题每题 2 分,11-50 题(总题数:60,分数:60.00)1.若有定义:int w35;,则以下不能正确表示该数组元素的表达式是【 】。(分数:1.00)A.*(*W+3)B.*(*W+1)4C.*(*(*W+1)D.*(*00+1)2.有以下程序: int fa(int x) return x *x; int fb(int x) return x *x *x; int f(int( *f1)( ),int( *f2)( ),int x) return f2(x)-f1(x); main(
2、) int i; i=f(fa,fb,2);printf(“%d/n“,i); 程序运行后的输出结果是( )。 (分数:1.00)A.-4B.1C.4D.83.以下程序中函数 f 的功能是:当 flag 为 1 时,进行由小到大排序;当 flag 为 0 时,进行由大到小排序。 void f(int b,iIlt n,int flag) int i,j,t; for(i=0;ibj:biA.1,2,3,4,5,6,7,8,9,10,B.3,4,5,6,7,2,1,8,9,10,C.5,4,3,2,1,6,7,8,9,10,D.10,9,8,7,6,5,4,3,2,1,4.已有定义:int x=
3、3,y=4,z=5;,则表达式!(x+y)+z-1y+z/2 的值是( )。(分数:1.00)A.6B.0C.2D.15.数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和【 】。(分数:1.00)A.编码设计B.测试阶段C.运行阶段D.物理设计6.有以下程序: main( ) unsigned char a,b,c; a=0x3; b=a|0x8; c=b 1; printf(“%d%d/n“,b,c); 程序运行后的输出结果是( )。 (分数:1.00)A.-11 12B.-19C.12 24D.11 227.以下定义语句中正确的是( )。(分数:1.00)A.char a=Ab=B;
4、B.float a=b=10.0;C.int a=10,*b=D.float *a,b=8.有以下程序: main() char a7=“a0/0a0/0“:int i,j i=sizeof(a);j=strlen(a): printf(“%d%d/n“,i,j); 程序运行后的输出结果是【 】。(分数:1.00)A.22B.76C.72D.629.若有定义 int x=0,*p=B.c=“97“;C.c=97;D.c=“a“;14.有以下程序: main( ) int i,n=0; for(i=2;iA.n=5B.n=2C.n=3D.n=415.有以下程序: main( ) unsigned
5、 char a,b; a=4|3; b=4 printf(“%d %d/n”,a,b(; 执行后输出结果是( )。 (分数:1.00)A.7 0B.0 7C.1 1D.43 016.在数据库系统中,用户所见的数据模式为【 】。(分数:1.00)A.概念模式B.外模式C.内模式D.物理模式17. 从 Windows 环境进入 DOS 方式后,返回 Windows 环境的命令为( )。(分数:1.00)A.QUITB.WINC.EXITD.ESC18.下列程序的输出结果是( )。 main( ) int x=0,y=5,z=3; while(z-0 s=x+3; printf(“%d/n“,s2)
6、; 执行后输出结果是( )。 (分数:1.00)A.随机值B.0C.5D.620.以下叙述中正确的是【 】。(分数:1.00)A.调用 printf 函数时,必须要有输出项B.使用 putchar 函数时,必须在之前包含头文件 stdio.hC.在 C 语言中,整数可以以十二进制、八进制或十六进制的形式输出D.调用 getchar 函数读入字符时,可以从键盘上输入字符所对应的 ASCII 码21.与十六进制数 200 等值得十进制数为( )。(分数:1.00)A.256B.512C.1024D.204822.以下叙述中正确的是( )。(分数:1.00)A.C 程序中注释部分可以出现在程序中任意
7、合适的地方B.花括号“和“只能作为函数体的定界符C.构成 C 程序的基本单位是函数,所有函数名都可以由用户命名D.分号是 C 语句之间的分隔符,不是语句的一部分23.下列叙述中正确的是( )。(分数:1.00)A.计算机病毒只感染可执行文件B.计算机病毒只感染文本文件C.计算机病毒只能通过软件复制的方式进行传播D.计算机病毒可以通过网络或读写磁盘方式进行传播24.设有定义语句 int x6=2,4,6,8,5,7,*p=x,i; 要求依次输出 x 数组 6 个元素中的值,不能完成此操作的语句是( )。 (分数:1.00)A.for(i=0;i0 | E0 c= b= 程序在执行了 c=b=语句
8、后,表达式:*c 的值是( )。 (分数:1.00)A.变量 a 的地址B.变量 b 中的值C.变量 a 中的值D.变量 b 的地址46.设有定义语句:char c1=92,c2=92;,则以下表达式中值为零的是( )。(分数:1.00)A.c1c2B.c1 printf(“%d/n“,(x,y); 则以下叙述中正确的是( )。 (分数:1.00)A.输出语句中格式说明符的个数少于输出项的个数,不能正确输出B.运行时产生出错信息C.输出值为 2002D.输出值为 200357.有以下程序 main() int i , t3=9,8,7,6,5,4,3,2,1; for(i=0;iA.7 5 3
9、B.3 5 7C.3 6 9D.7 5 158.下列对于软件测试的描述中正确的是【 】。(分数:1.00)A.软件测试的目的是证明程序是否正确B.软件测试的目的是使程序运行结果正确C.软件测试的目的是尽可能多地发现程序中的错误D.软件测试的目的是使程序符合结构化原则59.对于一个正常运行的 C 程序,以下叙述中正确的是【 】。(分数:1.00)A.程序的执行总是从 main 函数开始,在 main 函数结束B.程序的执行总是从程序的第一个函数开始,在 main 函数结束C.程序的执行总是从 main 函数开始,在程序的最后一个函数中结束D.程序的执行总是从程序中的第一个函数开始,在程序的最后一
10、个函数中结束60.设有如下说明 typedef struct ST long a;int b;char c2;NEW; 则下面叙述中正确的是【 】。(分数:1.00)A.以上的说明形式非法B.ST 是一个结构体类型C.NEW 是一个结构体类型D.NEW 是一个结构体变量二、填空题(每空 2 分,共 40 分)(总题数:20,分数:40.00)61.以下程序运行后的输出结果是 1。 main( ) char m; m=B+32; printf(“%c/n“,m); (分数:2.00)填空项 1:_62.若有以下程序 main( ) int p,a=5; if(p=a!=0) printf(“%d
11、/n“,p); else printf(“%d/n“,p+2); 执行后输出结果是 1。 (分数:2.00)填空项 1:_63.以下程序的功能是将字符串 s 中的数字字符放入 d 数组中,最后输出 d 中的字符串。例如,输入字符串:abc123edf456gh,执行程序后输出:123456。请填空。 #include stdio.h #include ctype.h main( ) char s80, d80; int i,j; gets(s); for(i=j=0;si!=/0;i+) if( 1) dj=si; j+; dj=/0; puts(d); (分数:2.00)填空项 1:_64.
12、以下程序的输出结果是 1。 #include main2 char *sl,*s2,m; sl=s2=(char*)malloc(sizeof(char).*sl=15; *s2=20; m=*sl+*s2; printf(“dn“,m); (分数:2.00)填空项 1:_65.以下 sstrcpy1 函数实现字符串复制,即将 t 所指字符串复制到 s 所指向内存空间中,形成一个新的字符串 s。请填空。 void sstrcpy(char *s,char *t) while(*s+= 2); main( ) char str1100,str2 =”abcdefgh”; sstrcpy(str1
13、,str2); printf(“%s/n”,str1); (分数:2.00)填空项 1:_66.以下函数的功能是删除字符串 s 中的所有数字字符。请填空。 viod dele(char *s) int n=0,i; for(i=0;si;i+) if( 1) sn+=si; sn= 2; (分数:2.00)填空项 1:_67.以下函数 sstrcat1 的功能是实现字符串的连接,即将 t 所指字符串复制到 s 所指字符串的尾部。例如:s 所指字符串为 abcd,t 所指字符串为 efgh,函数调用后 s 所指字符串为 abcdefgh。请填空。 #include string.h void s
14、strcat(char *s,char *t) int n; n=strlen(s); while(*(s+n)= 2s+;t+; (分数:2.00)填空项 1:_68.以下程序运行后的输出结果是 1。 #includestring.h char* ss(char *s) char *p,t; p=s+1;t=*s; while(*p)*(p-1)=*p;p+; *(p-1);t; return s; main2 char *p,str10=“abcdefgh“; p=ss(str); printf(“%s/n“,p); (分数:2.00)填空项 1:_69.在 Windows 环境下,为了将
15、屏幕内容存入剪贴板,应按 1 键。(分数:2.00)填空项 1:_70.以下程序运行后的输出结果是 1。 #includestring.h main2 char ch=“abc“,x34;int i; for(i=0;i3;1+)strcpy(xi,ch); for(i=0;i3;i+)printf(“%s“, a=25; b=025; c=0x25; printf(“%d %d %d/n“,a,b,c); (分数:2.00)填空项 1:_74.有以下程序,若运行时从键盘输入:18,11,则程序的输出结果是 1。 main2 int a,b; printf(“Enter a,b:“);scan
16、f(“d,d“, *x=*x+y; main( ) int x=2,y=4; f(y, printf(“%d %d/n”,x,y); 执行后输出的结果是 1。 (分数:2.00)填空项 1:_77.设函数 findbig( )已定义为求 3 个数中的最大值。以下程序将利用函数指针调用 findbig 函数。请填空。 main( ) int findbig(int,int,int); int (*f)( ),x,y,z,big; f= 1; scanf(“%d%d%d“, big=(*f)(x,y,z); printf(“big=%d/n“,big); (分数:2.00)填空项 1:_78.以下
17、程序的功能是计算:s=1+12+123+1234+12345。请填空。 main1 int t=0,s=0,i; for(i=1;i=5;i+)t=i+ 2; s=s+t; printf(“s=%d/n“,s); (分数:2.00)填空项 1:_79.以下程序运行后的输出结果是 1。 main( ) int a=1,b=3,c=5; if (c=a+b) printf(“yes/n“); else printf(“no/n“); (分数:2.00)填空项 1:_80.以下程序运行后的输出结果是 1。 main( ) int p7=11,13,14,15,16,17,18; int i=0,j=
18、0; while(i填空项 1:_计算机二级(C)52 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(1-10 题每题 2 分,11-50 题(总题数:60,分数:60.00)1.若有定义:int w35;,则以下不能正确表示该数组元素的表达式是【 】。(分数:1.00)A.*(*W+3)B.*(*W+1)4C.*(*(*W+1) D.*(*00+1)解析:在 C 语言中,二维数组的名字表示的是二维数组的地址,表达式*(w+1)表示的是二维数组的第一行的第二元素。在其前面再加上*(*(w+1)就是错误的表达式。2.有以下程序: int fa(int x) return x *
19、x; int fb(int x) return x *x *x; int f(int( *f1)( ),int( *f2)( ),int x) return f2(x)-f1(x); main( ) int i; i=f(fa,fb,2);printf(“%d/n“,i); 程序运行后的输出结果是( )。 (分数:1.00)A.-4B.1C.4 D.8解析:本题考点是函数之间的参数传递。3.以下程序中函数 f 的功能是:当 flag 为 1 时,进行由小到大排序;当 flag 为 0 时,进行由大到小排序。 void f(int b,iIlt n,int flag) int i,j,t; fo
20、r(i=0;ibj:biA.1,2,3,4,5,6,7,8,9,10,B.3,4,5,6,7,2,1,8,9,10, C.5,4,3,2,1,6,7,8,9,10,D.10,9,8,7,6,5,4,3,2,1,解析:在 main()中,“f(B.float a=b=10.0;C.int a=10,*b= D.float *a,b=解析:8.有以下程序: main() char a7=“a0/0a0/0“:int i,j i=sizeof(a);j=strlen(a): printf(“%d%d/n“,i,j); 程序运行后的输出结果是【 】。(分数:1.00)A.22B.76C.72 D.62
21、解析:C 语言中以/0作为字符串的结束符,且 strlen()函数计算的是/0字符前的所有字符的个数。数组定义以后系统就为其分配相应大小的内存空间,而不论其中有没有内容。 9.若有定义 int x=0,*p=B.c=“97“;C.c=97; D.c=“a“;解析:14.有以下程序: main( ) int i,n=0; for(i=2;iA.n=5B.n=2C.n=3D.n=4 解析:15.有以下程序: main( ) unsigned char a,b; a=4|3; b=4 printf(“%d %d/n”,a,b(; 执行后输出结果是( )。 (分数:1.00)A.7 0 B.0 7C.
22、1 1D.43 0解析:16.在数据库系统中,用户所见的数据模式为【 】。(分数:1.00)A.概念模式B.外模式 C.内模式D.物理模式解析:外模式也称为子模式或用户模式,也就是用户所见到的数据模式,它由概念模式导出。一个概念模式可以有若干个外模式,每个用户只关心与它有关的外模式,这样不仅可以屏蔽大量无关信息,而且有利于数据维护。17. 从 Windows 环境进入 DOS 方式后,返回 Windows 环境的命令为( )。(分数:1.00)A.QUITB.WINC.EXIT D.ESC解析:18.下列程序的输出结果是( )。 main( ) int x=0,y=5,z=3; while(z
23、-0 s=x+3; printf(“%d/n“,s2); 执行后输出结果是( )。 (分数:1.00)A.随机值B.0 C.5D.6解析:20.以下叙述中正确的是【 】。(分数:1.00)A.调用 printf 函数时,必须要有输出项B.使用 putchar 函数时,必须在之前包含头文件 stdio.h C.在 C 语言中,整数可以以十二进制、八进制或十六进制的形式输出D.调用 getchar 函数读入字符时,可以从键盘上输入字符所对应的 ASCII 码解析:在使用标准输入输出库函数(除了 Printf 和 scanf)前,必须要用预编译命令“#include“将头文件“stdio.h“包括到
24、用户源文件中。 21.与十六进制数 200 等值得十进制数为( )。(分数:1.00)A.256B.512 C.1024D.2048解析:22.以下叙述中正确的是( )。(分数:1.00)A.C 程序中注释部分可以出现在程序中任意合适的地方 B.花括号“和“只能作为函数体的定界符C.构成 C 程序的基本单位是函数,所有函数名都可以由用户命名D.分号是 C 语句之间的分隔符,不是语句的一部分解析:23.下列叙述中正确的是( )。(分数:1.00)A.计算机病毒只感染可执行文件B.计算机病毒只感染文本文件C.计算机病毒只能通过软件复制的方式进行传播D.计算机病毒可以通过网络或读写磁盘方式进行传播
25、解析:24.设有定义语句 int x6=2,4,6,8,5,7,*p=x,i; 要求依次输出 x 数组 6 个元素中的值,不能完成此操作的语句是( )。 (分数:1.00)A.for(i=0;i0 | E0 *x=*x+y; main( ) int x=2,y=4; f(y, printf(“%d %d/n”,x,y); 执行后输出的结果是 1。 (分数:2.00)填空项 1:_ (正确答案:8 2)解析:77.设函数 findbig( )已定义为求 3 个数中的最大值。以下程序将利用函数指针调用 findbig 函数。请填空。 main( ) int findbig(int,int,int)
26、; int (*f)( ),x,y,z,big; f= 1; scanf(“%d%d%d“, big=(*f)(x,y,z); printf(“big=%d/n“,big); (分数:2.00)填空项 1:_ (正确答案:findbig)解析:78.以下程序的功能是计算:s=1+12+123+1234+12345。请填空。 main1 int t=0,s=0,i; for(i=1;i=5;i+)t=i+ 2; s=s+t; printf(“s=%d/n“,s); (分数:2.00)填空项 1:_ (正确答案:t*10)解析:本程序中变量 s 用于存放表达式“1+12+123+1234+1234
27、5“之和变量 t 用于存放其表达式的各项,由于i=1 时,要使得 t=1;i=2 时,要使得 t=12;i=3 时,要使得 t=123;依此类推。故每一次循环的 t 的值与此次的 i 及上次的 t 密切相关,即每一次的 t 值可用上次的 t 乘以 10 再加上此次的 i 的值就可以了,所以本题答案为 t*10。 79.以下程序运行后的输出结果是 1。 main( ) int a=1,b=3,c=5; if (c=a+b) printf(“yes/n“); else printf(“no/n“); (分数:2.00)填空项 1:_ (正确答案:yes)解析:80.以下程序运行后的输出结果是 1。 main( ) int p7=11,13,14,15,16,17,18; int i=0,j=0; while(i填空项 1:_ (正确答案:24)解析: