1、计算机二级(C)9 及答案解析(总分:645.00,做题时间:120 分钟)一、选择题(1-10 题每题 2 分,11-50 题(总题数:40,分数:60.00)1.有以下程序: struc STU char name10; int num; ; void f1(struct STU c) struct STU b=“LiSiGuo”,2042; c=b; void f2(struct STU *c) struct STU b=“SunDan”,2044; *c=b; main( ) struct STU a=“YangSan”,2041,b=“WangYin”,2043 ; f1(a);f2
2、( printf(“%d %d/n”,a.num,b.num); 执行后的输出结果是( )。 (分数:1.50)A.2041 2044B.2041 2043C.2042 2044D.2042 20432.以下对结构体类型变量 td 的定义中,错误的是_。 (分数:1.50)A.B.C.D.3.对于长度为 n 的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是_。 (分数:1.50)A.冒泡排序为 n/2B.冒泡排序为 nC.快速排序为 nD.快速排序为 n(n-1)/24.有以下程序: main( ) char a =”abcdefg”,b10=”abcdefg”; printf(
3、“%d %d/n”,sizeof(a),sizeof(b); 执行后输出结果是( )。 (分数:1.50)A.7 7B.8 8C.8 10D.10 105.有以下程序: #include string.h main(int argc ,char *argv ) int i,len=0; for(i=1;iargc;i+=2) len+=strlen(argvi); printf(“5d/n”,len); 经编译链接后生成的可执行文件是 ex.exe,若运行时输入以下带参数的命令行 ex abcd efg h3 k44 执行后输出结果是( )。 (分数:1.50)A.14B.12C.8D.66.
4、有以下程序 fun(char p10) int n=0,i; for(i=0;iA.1B.2C.3D.07.Internet 的通信协议是( )。(分数:1.50)A.TCP/IPB.BBSC.WWWD.FTP8.以下非法的赋值语句是( )。(分数:1.50)A.n=(i=2,+i);B.j+;C.+(i+1);D.x=j0;9.有以下程序: #include stdio.h main( ) int a =1,2,3,4,5,6,7,8,9,10,11,12,*p=a+5,*q=NULL; *q=*(p+5); printf(“%d %d/n“,*p,*q); 程序运行后的输出结果是( )。
5、(分数:1.50)A.运行后报错B.6 6C.6 11D.5 1010.下列叙述中正确的是( )。(分数:1.50)A.计算机病毒只感染可执行文件B.计算机病毒只感染文本文件C.计算机病毒只能通过软件复制的方式进行传播D.计算机病毒可以通过读写磁盘或网络等方式进行传播11.下列描述中正确的是_。 (分数:1.50)A.软件工程只是解决软件项目的管理问题B.软件工程主要解决软件产品的生产率问题C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则D.软件工程只是解决软件开发中的技术问题12.有以下程序 main( ) int x=102,y=012; printf(“%2d,%2d/n”
6、,x,y); 执行后输出结果是( )。 (分数:1.50)A.10,01B.002,12C.102,10D.02,1013.有以下程序: main() int num44=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,i,j; for(i=0;iname,p-num); printf(“%s %d/n“,p-name,p-num); 程序运行后的输出结果是_。(分数:1.50)A.SunDan 20042B.SunDan 20044C.LiSiGuo 20042D.YangSan 2004123.有以下程序: void sum(int *a) a0=a1; ma
7、in( ) 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); 执行后的输出结果是( )。 (分数:1.50)A.4B.3C.2D.124.对长度为 n 的线性表进行顺序查找,在最坏情况下所需要的比较次数为_。 (分数:1.50)A.log2nB.n/2C.nD.n+125.有以下程序: main() int a10=1,2,3,4,5,6,7,8,9,10,*p= printf(“%d/n“,*p+*q); 程序运行后的输出结果是_。 (分数:1.50)A.16B.10C.8D.626.有
8、以下程序: main( ) int s=0,a=1,n; scanf(“%d“, do s+=1; a=a-2; while(a!=n); printf(“%d/n“,s); 若要使程序的输出值为 2,则应该从键盘给 n 输入的值是( )。 (分数:1.50)A.-1B.-3C.-5D.027.设有如下程序段: int x=2002, y=2003; printf(“%d/n“,(x,y); 则以下叙述中正确的是( )。 (分数:1.50)A.输出语句中格式说明符的个数少于输出项的个数,不能正确输出B.运行时产生出错信息C.输出值为 2002D.输出值为 200328.有以下程序: main(
9、 ) int i=0,x=0; for (;) if(i=3|i=5) continue; if (i=6) break; i+; s+=i; ; printf(“%d/n“,s); 程序运行后的输出结果是( )。 (分数:1.50)A.10B.13C.21D.程序进入死循环29.若要求从键盘读入含有空格字符的字符串,应该使用函数_。 (分数:1.50)A.getc()B.gets()C.getchar()D.scanf()30.在 Windows 环境下,若要将整个屏幕上显示的内容存入剪贴板,可以按( )。(分数:1.50)A.Ctrl+Printscreen 键B.Alt+Printscr
10、een 键C.Shift+Printscreen 键D.Printscreen 键31.以下选项中,与 k = n + +完全等价的表达式是( )。(分数:1.50)A.k=n,n=n+1B.n=n+1,k=nC.k=+nD.k+=n+132.两个或两个以上的模块之间关联的紧密程度称为_。 (分数:1.50)A.耦合度B.内聚度C.复杂度D.数据传输特性33.有以下程序: void ss(char *s,char t) while(*s) if(*s=t) *s=t-a+A; s+; main( ) char strl100=“abcddfefdbd“,c=d; ss(strl,c); pri
11、ntf(“%s/n“,strl); 程序运行后的输出结果是( )。 (分数:1.50)A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd34.若变量已正确定义,要求程序段完成求 5!的计算,不能完成此操作的程序段是( )。(分数:1.50)A.for(i=1,p=1;i=1) return f(a,n-1)+an-1; else return 0; main2 int aa5=1,2,3,4,5,s; s=f(aa,5); printf(“%d/n“,s); (分数:40.00)填空项 1:_59.假设在当前盘当前目录下有一个可执行程序 U
12、SER.EXE。现要执行该程序,并要求在执行过程中将显示输出的结果信息存入当前盘当前目录的文件 OUT.DAT 中,则完整的 DOS 命令为 1。(分数:40.00)填空项 1:_60.E-mail 地址由用户名和域名两部分组成,这两部分的分隔符为 1。(分数:40.00)填空项 1:_61.诊断和改正程序中错误的工作通常称为 1。(分数:40.00)填空项 1:_62.以下程序运行后的输出结果是 1 。 fun(int a) int b=0; static int c=3; b+;c+; return(a+b+c); main2 int i,a=5; for(i=0;i填空项 1:_63.以
13、下程序运行后的输出结果是 1。 main2 int a=1,b=2,c=3; if(c=a) printf(“%d/n“,c); else printf(“%d/n“,b); (分数:40.00)填空项 1:_64.当运行以下程序时,输入 abcd,程序的输出结果是: 1。 insert(char str) int i; i=strlen(str); while(i0) str2*i=stri; str2*i-1= *; i-; printf(“%s/n“,str); main2 char str40; scanf(“%s/n“,str); insert(str); (分数:40.00)填空项
14、 1:_65.以下程序运行后的输出结果是 1。 #include 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); (分数:40.00)填空项 1:_66.在程序设计阶段应该采取 1 和逐步求精的方法,把一个模块的功能逐步分解,细化 为一系列具体的步骤,进而用某种程序设计语言写成程序。 (分数:-1.00)填空项 1:_67.件维护活动包括以下几类:改正
15、性维护、适应性维护、 1 维护和预防性维护。(分数:-1.00)填空项 1:_68.测试的目的是暴露错误,评价程序的可靠性;而 1 的目的是发现错误的位置并改正错误。(分数:-1.00)填空项 1:_69.软件开发环境是全面支持软件开发全过程的 1 集合。(分数:-1.00)填空项 1:_70.在树结构中,树根结点没有 1。(分数:-1.00)填空项 1:_计算机二级(C)9 答案解析(总分:645.00,做题时间:120 分钟)一、选择题(1-10 题每题 2 分,11-50 题(总题数:40,分数:60.00)1.有以下程序: struc STU char name10; int num;
16、 ; void f1(struct STU c) struct STU b=“LiSiGuo”,2042; c=b; void f2(struct STU *c) struct STU b=“SunDan”,2044; *c=b; main( ) struct STU a=“YangSan”,2041,b=“WangYin”,2043 ; f1(a);f2( printf(“%d %d/n”,a.num,b.num); 执行后的输出结果是( )。 (分数:1.50)A.2041 2044 B.2041 2043C.2042 2044D.2042 2043解析:2.以下对结构体类型变量 td 的
17、定义中,错误的是_。 (分数:1.50)A.B.C. D.解析:选项 C 中的 aa 本身就为结构体变量名,所以不能再用它来定义结构体变量,故此种定义方法是错误 的。3.对于长度为 n 的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是_。 (分数:1.50)A.冒泡排序为 n/2B.冒泡排序为 nC.快速排序为 nD.快速排序为 n(n-1)/2 解析:假设线性表的长度为 n,则在最坏情况下,冒泡排序需要经过 n/2 遍的从前往后扫描和 n/2 遍的从后 往前扫描,需要比较次数为 n(n-1)/2。快速排序法的最坏情况比较次数也是 n(n-1)/2。4.有以下程序: main(
18、) char a =”abcdefg”,b10=”abcdefg”; printf(“%d %d/n”,sizeof(a),sizeof(b); 执行后输出结果是( )。 (分数:1.50)A.7 7B.8 8C.8 10 D.10 10解析:5.有以下程序: #include string.h main(int argc ,char *argv ) int i,len=0; for(i=1;iargc;i+=2) len+=strlen(argvi); printf(“5d/n”,len); 经编译链接后生成的可执行文件是 ex.exe,若运行时输入以下带参数的命令行 ex abcd efg
19、 h3 k44 执行后输出结果是( )。 (分数:1.50)A.14B.12C.8D.6 解析:6.有以下程序 fun(char p10) int n=0,i; for(i=0;iA.1B.2 C.3D.0解析:此题考核的是数组名作为函数参数,当数组名作为函数参数时,是将实参数组的起始地址传送给形 参数组,作为形参数组的首地址,当形参发生变化主函数中的实参数组也发生变化。调用 fun()函数执行 for 循环语句,n=2,传递给实参其输出值相应的也为 2。7.Internet 的通信协议是( )。(分数:1.50)A.TCP/IP B.BBSC.WWWD.FTP解析:8.以下非法的赋值语句是(
20、 )。(分数:1.50)A.n=(i=2,+i);B.j+;C.+(i+1); D.x=j0;解析:自加或自减运算的操作数不能是表达式。9.有以下程序: #include stdio.h main( ) int a =1,2,3,4,5,6,7,8,9,10,11,12,*p=a+5,*q=NULL; *q=*(p+5); printf(“%d %d/n“,*p,*q); 程序运行后的输出结果是( )。 (分数:1.50)A.运行后报错 B.6 6C.6 11D.5 10解析:10.下列叙述中正确的是( )。(分数:1.50)A.计算机病毒只感染可执行文件B.计算机病毒只感染文本文件C.计算机
21、病毒只能通过软件复制的方式进行传播D.计算机病毒可以通过读写磁盘或网络等方式进行传播 解析:11.下列描述中正确的是_。 (分数:1.50)A.软件工程只是解决软件项目的管理问题B.软件工程主要解决软件产品的生产率问题C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则 D.软件工程只是解决软件开发中的技术问题解析:软件工程是计算机软件开发和维护的工程学科,它采用工程的概念原理、技术和方法来开发和维护 软件,它把经过时间考验而证明正确的管理技术和当前能够得到的最好技术结合起来。12.有以下程序 main( ) int x=102,y=012; printf(“%2d,%2d/n”,x
22、,y); 执行后输出结果是( )。 (分数:1.50)A.10,01B.002,12C.102,10 D.02,10解析:13.有以下程序: main() int num44=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,i,j; for(i=0;iname,p-num); printf(“%s %d/n“,p-name,p-num); 程序运行后的输出结果是_。(分数:1.50)A.SunDan 20042 B.SunDan 20044C.LiSiGuo 20042D.YangSan 20041解析:本题主函数中定义了结构体类型的指针变量 p,并使其指向了结构
23、体类型的数组 s1,并通过调用函数 f 改变了指针变量 p 所指向的结构体中成员变量 name 的值,但并未改变其 num 的值。这是因为函数 f 中的形参 name 是一个字符型指针变量,它指向了主函数中指针变量 p 所指向的结构体的成员变量 name, 所以对函数 f 中的形参*name 的改变也就是对主函数中 p-name 的改变,而函数 f 中对形参 num 的改变并 不会影响主函数中 p-num 的值,因为此时传递给 num 的是一个值,而不是地址。23.有以下程序: void sum(int *a) a0=a1; main( ) int aa10=1,2,3,4,5,6,7,8,9
24、,10,i; for(i=2;i=0;i-) sp; sum( printf(“%d/n”,aa0); 执行后的输出结果是( )。 (分数:1.50)A.4 B.3C.2D.1解析:24.对长度为 n 的线性表进行顺序查找,在最坏情况下所需要的比较次数为_。 (分数:1.50)A.log2nB.n/2C.n D.n+1解析:顺序查找过程中,如果被查找的元素是线性表中的最后一个元素,或者元素不在线性表中,则需要 与线性表中所有的元素进行比较。对长度为 n 的线性表进行顺序查找,在最坏情况下需要比较 n 次。25.有以下程序: main() int a10=1,2,3,4,5,6,7,8,9,10
25、,*p= printf(“%d/n“,*p+*q); 程序运行后的输出结果是_。 (分数:1.50)A.16B.10 C.8D.6解析:数组 a 各元素 a0a9的值依次为 110;在程序的说明部分,指针变量 p 初始化为 scanf(“%d“, do s+=1; a=a-2; while(a!=n); printf(“%d/n“,s); 若要使程序的输出值为 2,则应该从键盘给 n 输入的值是( )。 (分数:1.50)A.-1B.-3 C.-5D.0解析:27.设有如下程序段: int x=2002, y=2003; printf(“%d/n“,(x,y); 则以下叙述中正确的是( )。
26、(分数:1.50)A.输出语句中格式说明符的个数少于输出项的个数,不能正确输出B.运行时产生出错信息C.输出值为 2002D.输出值为 2003 解析:28.有以下程序: main( ) int i=0,x=0; for (;) if(i=3|i=5) continue; if (i=6) break; i+; s+=i; ; printf(“%d/n“,s); 程序运行后的输出结果是( )。 (分数:1.50)A.10B.13C.21D.程序进入死循环 解析:29.若要求从键盘读入含有空格字符的字符串,应该使用函数_。 (分数:1.50)A.getc()B.gets() C.getchar(
27、)D.scanf()解析:函数 getchar( )的作用是从终端(或系统隐含指定的输入设备)输入一个字符,且只能接受一个字符(回车符也算是一个字符),所以 getchar()不能用来读入字符串。scanf()函数要求按一定的格式来输入,若 同时输入多个字符串,则以空格或回车分割,所以空格不能被识别为一个字符,也就无法读入空格字符。 函数 gets()的作用是从终端输入一个字符串(包括空格)到字符数组,直到遇到换行符为止,所以可以用来 键盘读入空格字符。30.在 Windows 环境下,若要将整个屏幕上显示的内容存入剪贴板,可以按( )。(分数:1.50)A.Ctrl+Printscreen
28、键B.Alt+Printscreen 键C.Shift+Printscreen 键D.Printscreen 键 解析:31.以下选项中,与 k = n + +完全等价的表达式是( )。(分数:1.50)A.k=n,n=n+1 B.n=n+1,k=nC.k=+nD.k+=n+1解析:32.两个或两个以上的模块之间关联的紧密程度称为_。 (分数:1.50)A.耦合度 B.内聚度C.复杂度D.数据传输特性解析:耦合度是模块间互相连接的紧密程度的度量;内聚度是一个模块内部各个元素间彼此结合的紧密程 度的度量。33.有以下程序: void ss(char *s,char t) while(*s) if
29、(*s=t) *s=t-a+A; s+; main( ) char strl100=“abcddfefdbd“,c=d; ss(strl,c); printf(“%s/n“,strl); 程序运行后的输出结果是( )。 (分数:1.50)A.ABCDDEFEDBDB.abcDDfefDbD C.abcAAfefAbAD.Abcddfefdbd解析:函数 ss( )的功能是把指定字符串(s)中满足条件( * st)的字符转换成大写。34.若变量已正确定义,要求程序段完成求 5!的计算,不能完成此操作的程序段是( )。(分数:1.50)A.for(i=1,p=1;imax 或 arow)col=m
30、ax 或 max=1) return f(a,n-1)+an-1; else return 0; main2 int aa5=1,2,3,4,5,s; s=f(aa,5); printf(“%d/n“,s); (分数:40.00)填空项 1:_ (正确答案:15)解析:本题通过递归调用实现了数组 aa 各元素之和,即 a4+a3+a2+a1+a0=15。59.假设在当前盘当前目录下有一个可执行程序 USER.EXE。现要执行该程序,并要求在执行过程中将显示输出的结果信息存入当前盘当前目录的文件 OUT.DAT 中,则完整的 DOS 命令为 1。(分数:40.00)填空项 1:_ (正确答案:U
31、SEROUT.DAT)解析:60.E-mail 地址由用户名和域名两部分组成,这两部分的分隔符为 1。(分数:40.00)填空项 1:_ (正确答案:)解析:61.诊断和改正程序中错误的工作通常称为 1。(分数:40.00)填空项 1:_ (正确答案:程序调试)解析:程序调试的任务是诊断和改正程序中的错误。它与软件测试不同,软件测试是尽可能多地发现软件 中的错误。先要发现软件的错误,然后借助于一定的调试工具去找出软件错误的具体位置。软件测试贯穿 整个软件生命期,调试主要再开发阶段。62.以下程序运行后的输出结果是 1 。 fun(int a) int b=0; static int c=3;
32、b+;c+; return(a+b+c); main2 int i,a=5; for(i=0;i填空项 1:_ (正确答案:10111212)解析:静态局部变量是在编译时赋初值的,在程序运行时它已有初值。63.以下程序运行后的输出结果是 1。 main2 int a=1,b=2,c=3; if(c=a) printf(“%d/n“,c); else printf(“%d/n“,b); (分数:40.00)填空项 1:_ (正确答案:1)解析:此题需特别注意的是 if 的判断条件是“c=a”,而不是“c=a”,由于 a=1,故条件 c=1 为真,所以 输出的 c 的值为 1。64.当运行以下程序
33、时,输入 abcd,程序的输出结果是: 1。 insert(char str) int i; i=strlen(str); while(i0) str2*i=stri; str2*i-1= *; i-; printf(“%s/n“,str); main2 char str40; scanf(“%s/n“,str); insert(str); (分数:40.00)填空项 1:_ (正确答案:a*b*c*d*)解析:此题主要考核的是函数与一个简单算法结合在一起的应用。首先定义一个 int 型变量来存放字符串 str 的长度,执行 while 条件语句,通过分析可知,字符串第 2*i 项的值可由第
34、i 项的值得到;第 2*i-1 项直 接赋值为*号,i 减 1,如此反复直到不满足 i0 的条件时,输出运行后的字符串。65.以下程序运行后的输出结果是 1。 #include 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); (分数:40.00)填空项 1:_ (正确答案:bcdefgha)解析:函数 ss 的作用是将指针变量 s 指向的字符串的首字符
35、移到最后一个位置,其他字符依次前移。其方 法是:首先将首字符进行了保存,保存在字符变量 t 中;其次,从指针变量 p 指向的字符(字符串 s 中的 第二个字符,即字符 b)开始,通过语句“*(p-1)=*p;”,依次前移,直到*p 指向的存储单元中的值为空为 止;最后通过语句“*(p-1)=t;”将保存在 t 中的字符放到移动后的字符串的末尾,所以本题输出的结果是 bcdefgha。66.在程序设计阶段应该采取 1 和逐步求精的方法,把一个模块的功能逐步分解,细化 为一系列具体的步骤,进而用某种程序设计语言写成程序。 (分数:-1.00)填空项 1:_ (正确答案:自顶而下)解析:本题考查对程
36、序设计的了解。67.件维护活动包括以下几类:改正性维护、适应性维护、 1 维护和预防性维护。(分数:-1.00)填空项 1:_ (正确答案:完善性)解析:软件维护活动包括以下几类:改正性维护、适应性维护、完善性维护和预防性维护。改正性维护是指在软件交付使用后,为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程;适应性维护是指为了使软件适应变化,而去修改软件的过程;完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率,提高软件的可维护性;预防性维护是为了提高软件的可维护性、可靠性等,
37、为以后的进一步改进软件打下良好基础。 68.测试的目的是暴露错误,评价程序的可靠性;而 1 的目的是发现错误的位置并改正错误。(分数:-1.00)填空项 1:_ (正确答案:调试)解析:软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定;调试也称排错,它是一个与测试有联系又有区别的概念。具体来说,测试的目的是暴露错误,评价程序的可靠性,而调试的目的是发现错误的位置,并改正错误。 69.软件开发环境是全面支持软件开发全过程的 1 集合。(分数:-1.00)填空项 1:_ (正确答案:软件工具)解析:70.在树结构中,树根结点没有 1。(分数:-1.00)填空项 1:_ (正确答案:前件)解析:在树结构中,每一个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点;每一个结点可以有多个后件,它们都称为该结点的子结点。没有后件的结点称为叶子结点。