1、计算机二级(C)61 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(1-10 题每题 2 分,11-50 题(总题数:60,分数:60.00)1.以下叙述中正确的是【 】。(分数:1.00)A.C 语言中的文件是流式文件,因此只能顺序存取数据B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖C.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第 1 个数据D.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失2.设变量 a、b、c、d 和 y 都已正确定义并赋值。若有以下 if 语句: if(aB) if(cD)
2、 y=0; else y=1; 该语句所表示的含义是【 】。 (分数:1.00)A.B.C.D.3.以下数组定义中错误的是【 】。(分数:1.00)A.int x 3:0;B.int x23=l,2,3,4,5,6;C.int X 3=l,2,3,4,5,6;D.int x23=l,2,3,4,5,6;4.在 DOS 系统中,带有通配符的文件名*.*表示( )。(分数:1.00)A.硬盘上的全部文件B.当前盘当前目录中的全部文件C.当前盘上的全部文件D.根目录中的全部文件5.有以下程序: main() int a=1,2,3,4,5,6,7,8,9,0,*p; for(p=a;pa+10,p+
3、)printf(“%d,“,*p); 程序运行后的输出结果是【 】。(分数:1.00)A.1,234,5,6,7,8,9,0,B.2,3,4,5,6,7,8,9,10,1,C.01,23,4,5,6,7,8,9,D.1,1,1,1,1,1,1,1,1,1,6.有以下程序段: main( ) int a=5,*b,*c; c= b= 程序在执行了 c=b=语句后,表达式:*c 的值是( )。 (分数:1.00)A.变量 a 的地址B.变量 b 中的值C.变量 a 中的值D.变量 b 的地址7.有以下程序: main( ) unsigned char a,b; a=4|3; b=4 printf(
4、“%d %d/n”,a,b(; 执行后输出结果是( )。 (分数:1.00)A.7 0B.0 7C.1 1D.43 08.以下叙述中正确的是【 】。(分数:1.00)A.预处理命令行必须位于 C 源程序的起始位置B.在 C 语言中,预处理命令行都以“#“开头C.每个 C 程序必须在开头包含预处理命令行#includeD.C 语言的预处理不能实现宏定义和条件编译的功能9.以下不能正确计算代数式 1/3sin2(1/2)值的 C 语言表达式是【 】。(分数:1.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
5、/3.0*pow(sin(1.0.2),2)10.下列叙述中正确的是【 】。(分数:1.00)A.break 语句只能用于 switch 语句B.在 switch 语句中必须使用 defaultC.break 语句必须与 switch 语句中的 case 配对使用D.在 switch 语句中,不一定使用 break 语句11.有以下程序 main( ) int i=0,s=0; do if(i%2)i+;continue; i+; s+=i; while(i7); printf(“%d/n“,s); 执行后输出的结果是( )。 (分数:1.00)A.16B.12C.28D.2112.用 C 语
6、言编写的代码程序( )。(分数:1.00)A.可立即执行B.是一个源程序C.经过编译即可执行D.经过编译解释才能执行13.以下叙述中正确的是【 】。(分数:1.00)A.预处理命令行必须位于源文件的开头B.在源文件的一行上可以有多条预处理命令C.宏名必须用大写字母表示D.宏替换不占用程序的运行时间14.下列对于软件测试的描述中正确的是【 】。(分数:1.00)A.软件测试的目的是证明程序是否正确B.软件测试的目的是使程序运行结果正确C.软件测试的目的是尽可能多地发现程序中的错误D.软件测试的目的是使程序符合结构化原则15.设变量均已正确定义,若要通过 scanf(“dcdc“, if (ij)
7、 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.00)A.6 5 4 3 2 1B.4 3 2 1 5 6C.4 5 6 1 2 3D.1 2 3 4 5 619.若要求从键盘读入含有空格字符的字符串,应使用函数【 】。(分数:1.00)A.getc()B.gets()C.getchar()D.scanf()20.已知大写字母 A 的 ASCII 码值是 65,小写字母 a 的 ASCII 码
8、是 97,则用八进制表示的字符常量/101是( )。(分数:1.00)A.字符 AB.字符 aC.字符 eD.非法的常量21.下列选项中,不能用作标识符的是( )。(分数:1.00)A._1234_B._1_2C.int_2_D.2_int_22.有以下程序: struct s int x,y; data2=10,100,20,200; main( ) struct s *p=data; printf(“%d/n“,+(p-x); 程序运行后的输出结果是( )。 (分数:1.00)A.10B.11C.20D.2123.有以下程序: void sum(int a) a0=a-1+a1; main
9、() int a10=1,2,3,4,5,6,7,8,9,10; sum(i n-1 ;i + ) for(j =i + 1 ;j n;j + ) if(strcmp(p i ,pj ) 0) strcpy(t,pi);strcpy(pi ,pj );strcpy(pj ,t); main ( ) char p 10 = “abc“,“aabdfg“,“abbd“,“dcdbe“, “cd“ ; int i; f(p,5); printf(“%d/n“,strlen(pO ) ); 程序运行后的输出结果是( )。 (分数:1.00)A.6B.4C.3D.529.C 语言中用于结构化程序设计的三
10、种基本结构是( )。(分数:1.00)A.顺序结构、选择结构、循环结构B.if、switch、breakC.for、while、do-whileD.if、for、continue30.有以下程序 main() int i,j,X=0; for(i=0;inext; while( 1) printf(“sn“,P-sub);P= 2; main3 Node *hd; hd=fun4;disp(hd);prinff(“n“); (分数:2.00)填空项 1:_72.计算机的运算速度可以用 MIPS 来描述,1MIPS 是指每秒执行 1 条指令。(分数:2.00)填空项 1:_73.在 Window
11、s 环境下,只要在“开始”菜单中单击 1 选项,就可以查阅最近打开过的文档清单。(分数:2.00)填空项 1:_74.以下程序的输出结果是 1。 #define MCRA(m) 2*m #define MCRB(n,m) 2*MCRA(n)+m main( ) int i=2,j=3; printf(“%d/n“,MCRB(j,MCRA(i); (分数:2.00)填空项 1:_75.支持 Internet 基本服务的协议是 1。(分数:2.00)填空项 1:_76.设有以下定义 stuct ss int info; struct ss *link;x,y,z; 且已建立如下图所示链表结构: (
12、分数:2.00)填空项 1:_77.有以下程序 void f( int y,int *x) y=y+*x; *x=*x+y; main( ) int x=2,y=4; f(y, printf(“%d %d/n”,x,y); 执行后输出的结果是 1。 (分数:2.00)填空项 1:_78.函数 fun 的功能是计算 Xn double fun(double x,int n) int i; double y=1; for(i=1;i=n;i+) y=y*x; return y; 主函数中已经正确定义 m,a,b 变量并赋值,并调用fun 函数计算:m=a4+b4-(a+b)3。实现这一计算的函数调
13、用语句为 1。 (分数:2.00)填空项 1:_79.以下程序的功能是调用函数 fun 计算:m=1-2+3-4+9-10,并输出结果。请填空。 int fun( int n) int m=0,f=1,i; for(i=1; i=n; i+) m+=i*f; f= 1; return m; main( ) printf(“m=%d/n“, 2); (分数:2.00)填空项 1:_80.以下程序运行后的输出结果是 1。 main( ) int i,m=0,n=0,k=0; for(i=9; i=11;i+) switch(i/10) case 0: m+;n+;break; case 10: n
14、+; break; default: k+;n+; printf(“%d %d %d/n“,m,n,k); (分数:2.00)填空项 1:_计算机二级(C)61 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(1-10 题每题 2 分,11-50 题(总题数:60,分数:60.00)1.以下叙述中正确的是【 】。(分数:1.00)A.C 语言中的文件是流式文件,因此只能顺序存取数据B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖C.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第 1 个数据D.当对文件的读(写)操作完成之后,必
15、须将它关闭,否则可能导致数据丢失 解析:如果以写方式打开一个已经存在的文件,则在打开时将该文件删除,然后重新建立一个同名的新文件。2.设变量 a、b、c、d 和 y 都已正确定义并赋值。若有以下 if 语句: if(aB) if(cD) y=0; else y=1; 该语句所表示的含义是【 】。 (分数:1.00)A.B.C. D.解析:if 语句中包含一个或多个 if 语句称为 if 语句的嵌套。在 C 语言中,从最内层开始,else 总是与它上面最近的 (未曾配对的)if 配对。故本题中 y=1 的条件是 cd,又因为此 if 语句是前一个 if 语句的内层嵌套语句,所以在满足内层嵌套的
16、if 语句之前,必须先满足外层的 if 语句中的条件表达式“ab“,所以选项 C 是正确的。 3.以下数组定义中错误的是【 】。(分数:1.00)A.int x 3:0;B.int x23=l,2,3,4,5,6; C.int X 3=l,2,3,4,5,6;D.int x23=l,2,3,4,5,6;解析:二维数组的初始化有以下几种形式:分行进行初始化。不分行的初始化。部分数组元素初始化。省略第一维的定义,不省略第二维的定义。选项 B 等号右边分了 3 行,大于等号左边数组的行数 2。4.在 DOS 系统中,带有通配符的文件名*.*表示( )。(分数:1.00)A.硬盘上的全部文件B.当前盘
17、当前目录中的全部文件 C.当前盘上的全部文件D.根目录中的全部文件解析:5.有以下程序: main() int a=1,2,3,4,5,6,7,8,9,0,*p; for(p=a;pa+10,p+)printf(“%d,“,*p); 程序运行后的输出结果是【 】。(分数:1.00)A.1,234,5,6,7,8,9,0, B.2,3,4,5,6,7,8,9,10,1,C.01,23,4,5,6,7,8,9,D.1,1,1,1,1,1,1,1,1,1,解析:C 语言规定数组变量名代表数组的首地址,即第 0 号元素的地址。本题将 a 数组中的值全部输出,即为 1,2,3,4,5,6,7,8,9,0
18、,。 6.有以下程序段: main( ) int a=5,*b,*c; c= b= 程序在执行了 c=b=语句后,表达式:*c 的值是( )。 (分数:1.00)A.变量 a 的地址B.变量 b 中的值C.变量 a 中的值 D.变量 b 的地址解析:7.有以下程序: main( ) unsigned char a,b; a=4|3; b=4 printf(“%d %d/n”,a,b(; 执行后输出结果是( )。 (分数:1.00)A.7 0 B.0 7C.1 1D.43 0解析:8.以下叙述中正确的是【 】。(分数:1.00)A.预处理命令行必须位于 C 源程序的起始位置B.在 C 语言中,预
19、处理命令行都以“#“开头 C.每个 C 程序必须在开头包含预处理命令行#includeD.C 语言的预处理不能实现宏定义和条件编译的功能解析:预处理命令可以放在程序中的任何位置,其有效范围是从定义开始到文件结束。预处理命令有宏定义、文件包含和条件编译三类。只是其中的一个文件,并非每次预处理命令都用此文件。9.以下不能正确计算代数式 1/3sin2(1/2)值的 C 语言表达式是【 】。(分数:1.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)解析:如果算远算
20、符“/“中参与运算的变量都是整型变量,则“/“表示整除运算,所以“1/3“的值应为 0,故选项 A 的表达式值为 0,而事实上代数式“1/3sin2(1/2)“的值并不为 0,所以选项 A 不能正确计算题目所要求的代数式。 10.下列叙述中正确的是【 】。(分数:1.00)A.break 语句只能用于 switch 语句B.在 switch 语句中必须使用 defaultC.break 语句必须与 switch 语句中的 case 配对使用D.在 switch 语句中,不一定使用 break 语句 解析:break 语句的功能是跳出正在执行的条件语句或循环语句。它可以出现在 switch 语句
21、中,也可以出现在循环语句中。default 语句的功能是如果所有 case 后面的语句都不执行的时候,就转去执行 default后的语句,它可以省略不写。前面我们说过,break 语何可以出现在循环语句中,所以选项 C)也是错误的。11.有以下程序 main( ) int i=0,s=0; do if(i%2)i+;continue; i+; s+=i; while(i7); printf(“%d/n“,s); 执行后输出的结果是( )。 (分数:1.00)A.16 B.12C.28D.21解析:12.用 C 语言编写的代码程序( )。(分数:1.00)A.可立即执行B.是一个源程序 C.经过
22、编译即可执行D.经过编译解释才能执行解析:13.以下叙述中正确的是【 】。(分数:1.00)A.预处理命令行必须位于源文件的开头B.在源文件的一行上可以有多条预处理命令C.宏名必须用大写字母表示D.宏替换不占用程序的运行时间 解析:通常,预处理命令位于源文件的开头,也可以写在函数与函数之间;不能在一行上写多条预处理命令;宏名一般习惯用大写字母表示,以便与变量名相区别,但这并非规定,也可用小写字母。 14.下列对于软件测试的描述中正确的是【 】。(分数:1.00)A.软件测试的目的是证明程序是否正确B.软件测试的目的是使程序运行结果正确C.软件测试的目的是尽可能多地发现程序中的错误 D.软件测试
23、的目的是使程序符合结构化原则解析:关于软件测试的目的,Grenford J.Myers 在 The Art of Software Testing 一书中给出了深刻的阐述,整体来说,软件测试的目的就是尽可能多地发现程序中错误。 15.设变量均已正确定义,若要通过 scanf(“dcdc“, 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.00)A.6 5 4 3 2 1 B.4
24、3 2 1 5 6C.4 5 6 1 2 3D.1 2 3 4 5 6解析:19.若要求从键盘读入含有空格字符的字符串,应使用函数【 】。(分数:1.00)A.getc()B.gets() C.getchar()D.scanf()解析:canf()语句用“空格“区别不同的字符串;getc()与 getchar()语句不能用于字符串的读入。20.已知大写字母 A 的 ASCII 码值是 65,小写字母 a 的 ASCII 码是 97,则用八进制表示的字符常量/101是( )。(分数:1.00)A.字符 A B.字符 aC.字符 eD.非法的常量解析:字符,/101,所对应的八进制数为 101,转
25、换成十进制数为 65。21.下列选项中,不能用作标识符的是( )。(分数:1.00)A._1234_B._1_2C.int_2_D.2_int_ 解析:22.有以下程序: struct s int x,y; data2=10,100,20,200; main( ) struct s *p=data; printf(“%d/n“,+(p-x); 程序运行后的输出结果是( )。 (分数:1.00)A.10B.11 C.20D.21解析:23.有以下程序: void sum(int a) a0=a-1+a1; main() int a10=1,2,3,4,5,6,7,8,9,10; sum(i n-
26、1 ;i + ) for(j =i + 1 ;j n;j + ) if(strcmp(p i ,pj ) 0) strcpy(t,pi);strcpy(pi ,pj );strcpy(pj ,t); main ( ) char p 10 = “abc“,“aabdfg“,“abbd“,“dcdbe“, “cd“ ; int i; f(p,5); printf(“%d/n“,strlen(pO ) ); 程序运行后的输出结果是( )。 (分数:1.00)A.6B.4C.3 D.5解析:对字符串比较的方法是依次对两字符串对应位置上的字符两两比较,当出现第一对不相同的字符 时,即由这两个字符(ASC
27、II 码值)决定所在串的大小。29.C 语言中用于结构化程序设计的三种基本结构是( )。(分数:1.00)A.顺序结构、选择结构、循环结构 B.if、switch、breakC.for、while、do-whileD.if、for、continue解析:30.有以下程序 main() int i,j,X=0; for(i=0;imax 或 arow)col=max 或 maxnext; while( 1) printf(“sn“,P-sub);P= 2; main3 Node *hd; hd=fun4;disp(hd);prinff(“n“); (分数:2.00)填空项 1:_ (正确答案:p
28、!=NULL,p-next)解析:NULL 的 ASCII 码的值和O的 ASCII 码的值相等,条件到 NULL 停止循环。把下一个节点的地址72.计算机的运算速度可以用 MIPS 来描述,1MIPS 是指每秒执行 1 条指令。(分数:2.00)填空项 1:_ (正确答案:100 万)解析:73.在 Windows 环境下,只要在“开始”菜单中单击 1 选项,就可以查阅最近打开过的文档清单。(分数:2.00)填空项 1:_ (正确答案:文档)解析:74.以下程序的输出结果是 1。 #define MCRA(m) 2*m #define MCRB(n,m) 2*MCRA(n)+m main(
29、) int i=2,j=3; printf(“%d/n“,MCRB(j,MCRA(i); (分数:2.00)填空项 1:_ (正确答案:16)解析:75.支持 Internet 基本服务的协议是 1。(分数:2.00)填空项 1:_ (正确答案:TCP/IP)解析:76.设有以下定义 stuct ss int info; struct ss *link;x,y,z; 且已建立如下图所示链表结构: (分数:2.00)填空项 1:_ (正确答案:x.link=y.link;)解析:77.有以下程序 void f( int y,int *x) y=y+*x; *x=*x+y; main( ) int
30、 x=2,y=4; f(y, printf(“%d %d/n”,x,y); 执行后输出的结果是 1。 (分数:2.00)填空项 1:_ (正确答案:8 2)解析:78.函数 fun 的功能是计算 Xn double fun(double x,int n) int i; double y=1; for(i=1;i=n;i+) y=y*x; return y; 主函数中已经正确定义 m,a,b 变量并赋值,并调用fun 函数计算:m=a4+b4-(a+b)3。实现这一计算的函数调用语句为 1。 (分数:2.00)填空项 1:_ (正确答案:m=fun(a,4)+fun(b,4)-fun(a+b,3
31、);)解析:79.以下程序的功能是调用函数 fun 计算:m=1-2+3-4+9-10,并输出结果。请填空。 int fun( int n) int m=0,f=1,i; for(i=1; i=n; i+) m+=i*f; f= 1; return m; main( ) printf(“m=%d/n“, 2); (分数:2.00)填空项 1:_ (正确答案:-f)解析:80.以下程序运行后的输出结果是 1。 main( ) int i,m=0,n=0,k=0; for(i=9; i=11;i+) switch(i/10) case 0: m+;n+;break; case 10: n+; break; default: k+;n+; printf(“%d %d %d/n“,m,n,k); (分数:2.00)填空项 1:_ (正确答案:132)解析: