2021年江苏省无锡市全国计算机等级考试C语言程序设计真题二卷(含答案)_第1页
2021年江苏省无锡市全国计算机等级考试C语言程序设计真题二卷(含答案)_第2页
2021年江苏省无锡市全国计算机等级考试C语言程序设计真题二卷(含答案)_第3页
2021年江苏省无锡市全国计算机等级考试C语言程序设计真题二卷(含答案)_第4页
2021年江苏省无锡市全国计算机等级考试C语言程序设计真题二卷(含答案)_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2021年江苏省无锡市全国计算机等级考试C语言程序设计真题二卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.对矩阵进行压缩存储是为了()。

A.方便运算B.方便存储C.提高运算速度D.减少存储空间

2.在关系数据库中,用来表示实体间联系的是()。

A.网状结构B.树状结构C.属性D.二维表

3.数据库设计包括两个方面的设计内容,它们是()。

A.概念设计和逻辑设计B.模式设计和内模式设计C.内模式设计和物理设计D.结构特性设计和行为特性设计

4.

5.设一个广义表中结点的个数为n,则求广义表深度算法的时间复杂度为____。

A.O(1)B.O(n)C.O(n2)D.O(log2n)

6.在执行完下列的C语句段之后,则B的值是()。Chara="A";intb;B=((34&&56)&&(a<'b'));

A.int类型B.float类型C.void类型D.函数无类型说明,定义有错

7.对线性表进行折半查找时,必须要求线性表()。

A.顺序方式存储B.链式方式存储C.以顺序方式存储,且结点按关键字有序排列D.以链式方式存储,且结点按关键字有序排列

8.判定一个循环队列qu(最多元素为MaxSize)为空的条件是()。

A.QU->rear-QU->front==MaxSize

B.QU->rear-QU->front-1==MaxSize

C.QU->front==QU->rear

D.QU->front==QU->rear+1

9.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为()

A.a<>0B.!aC.a=0D.a

10.若已知一个栈的入栈序列是1,2,3,......,n,其输出序列为p1,p2,p3,..,pn,若p1=n-1,则pi可能为()

A.nB.n-iC.n-i+1D.不确定

11.有以下程序程序运行后的输出结果是()。

A.21B.11C.20D.10

12.参加百年阿里培训的n位同学结伴去西湖旁边为游人指路,两人一组,他们打算先让体重之和恰好为102公斤的同学一组,请给出一个算法找到这样的组合,或者确定他们中不存在这样的组合,其中最优的算法时间复杂度为?(假设体重均为整数)()

A.O(log(n))B.O(n)C.O(nlog(n))D.O(n^2)

13.在Windows环境下,单击当前应用程序窗口中的“关闭”按钮,其功能是A.将当前应用程序转为后台运行

B.退出Windows后再关机

C.退出Windows后重新启动计算机

D.终止当前应用程序的运行

14.根据二叉树的定义可知道二叉树共有种不同形态的二叉树()。

A.3B.4C.5D.7

15.如果以链表作为栈的存储结构,则出栈操作时()。

A.必须判别栈是否满B.必须判别栈是否为空C.必须判别栈元素类型D.可不做任何判断

16.若有函数voidfun(doublea[]。int*n){…}以下叙述中正确的是()。A.调用fun函数时只有数组执行按值传送,其他实参和形参之间执行按地址传送

B.形参a和n都是指针变量

C.形参a是一个数组名,n是指针变量

D.调用fun函数时将把double型参数组元素一一对应地传送给形参a数组

17.在下面的二维数组定义中,正确的是()。

A.inta[5][];

B.inta[][5];

C.inta[][3]={{1,3,5},{2}};

D.inta[](10);

18.以下叙述中错误的是()。

A.C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令

B.C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件

C.用C语言编写的程序称为源程序,它以ASCII形式存放在一个文本文件中

D.C语言源程序经编译后生成扩展名为.obj的目标文件

19.以下不属于C语言整数的是()。

A.12fB.25uC.-32D.+20L

20.

二、2.填空题(20题)21.以下程序运行后的输出结果是【】。

#include<stdio.h>

main()

{intx=1,y=0,a=0,b=0;

switch(x)

{case1:switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:a++;b+*;break;

}

printf("%d%d\n",a,b);

}

22.以下说明语句中,【】是结构体类型名。

typedefstruct

{intn;

charch[8];

}PER;

23.下列程序的输出结果是______。

#include<stdio.h>

intt(intx,inty,intcp,intdp)

{cp=x*x+y*y;

dp=x*x-y*y;

}

main()

{inta=1,b=8,c=7,d=9;

t(a,b,c,D);

primf("%d,%d%d\n",c,D);

}

24.关系操作的特点是______操作。

25.以下程序运行后的输出结果是______。

voidfun(intx,inty)

{

x=x+y;y=x-y;x=x-y;

printf("%d,%d,",x,y);

}

main()

{

intx=2,y=3;

fun(x,y);

printf("%d,%d\n",x,y);

}

26.如果一个工人可管理多个设备,而一个设备只被一个工人管理,则卖体“工人”与实体“设备”之间存在【】关系。

27.数据模型按不同的应用层次分为三种类型,它们是______数据模型、逻辑数据模型和物理数据模型。

28.在面向对象方法中,【】描述的是具有相似属性与操作的一组对象。

29.软件生命周期可分为多个阶段,一般分为定义阶段、开发阶段和维护阶段。编码和测试属于【】阶段。

30.数据库系统的三级模式分别为【】模式、内部级模式与外部级模拭。

31.软件维护活动包括以下几类:改正性维护、适应性维护、【】维护和预防性维护。

32.在长度为n的有序线性表中进行二分查找。最坏的情况下,需要的比较次数为【】。

33.下面程序的输出是【】

main()

{enumem{eml=3,em2=1,em3};

char*aa[]={"AA',"BB","CC","DD"}

printf("%s%s%\n",aa[em1],aa[em2],aa[em3]);

}

34.Jackson方法是一种面向【】的结构化方法。

35.以下程序运行后的输出结果是()。

#include

char*ss(char*s)

{char*p,t;

P=s+1;t=*s;

while(*p){*(P-1)=*P;P++;}

*(P-1)=t;

returns;

}

main()

{char*p,str[10]="abcdefgh";

p=ss(str);

printf("%s\n",p);

}

36.下面程序

main()

{intx,y,m,n;

x=5;y=8;

m=++x,x;

n=y+y++;

printf("%d,%d,%d,%d",x,y,m,n);

}

运行后,x,y,m,n的值是______。

37.一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的【】。

38.表达式pow(2.8,sqrt(float(x)))值的数据类型为______型。

39.数据模型按不同应用层次分成3种类型,它们是概念数据模型、【】和物理数据模型。

40.有以下程序

intf(intn)

{if(n==1)return1;

elsereturnf(n-1)+1;}

main()

{inti,j=0;

for(i=1;i<3;i++)j+=f(i);

printf("%d\n"j);}

程序运行后的输出结果是______。

三、1.选择题(20题)41.下列程序段中,不是死循环的是_______。

A.inti=100;

B.unsignedk=0;while(1)do{{i=i%100+1;++kif(i>=100)break;}}while(k>=0);

C.for(;;);

D.ints=3379;while(s++%2+s%2)s++;

42.下列叙述中正确的是()。

A.软件交付使用后还需要进行维护

B.软件一旦交付使用就不需要再进行维护

C.软件交付使用后其生命周期就结束

D.软件维护是指修复程序中被破坏的指令

43.下列选项中不属于软件生命周期开发阶段任务的是()。

A.软件测试B.概要设计C.软件维护D.详细设计

44.结构化程序设计的主要任务是确定每个模块的

A.程序的规模B.程序的易读性C.程序的执行效率D.程序的可移植性

45.下面程序的执行结果是______。#defineMAX10nta[MAX],i;main(){printf("\n");sub1();sub3(A);sub2();sub3(A);}sub1(){for(i=0;i<1MAX;i++)a[i]-i+i;}sub2(){inta[MAX],i,max;max=5;for(i=0;i<max;i++)a[i]=i;}sub3(inta[]){inti;for(i=0;i<MAX;i++)printf("%d",a[i]);printf("\n");}

A.02468101214161801234

B.01234024681012141618

C.012345678901234

D.024681012141618024681012141618

46.假定所有变量均已正确说明,下列程序段运行后x的值是()。

a=b+c=0;x=12;

if(!A)x--;

elsex=5;

if(C)x=3;

elsex=4;

A.11B.4C.12D.3

47.下面说法正确的是()。A.A.一个C程序可以有多个主函数

B.一个C语言的函数中只允许有一对花括号

C.C程序的书写格式是自由的,一个语句可以写在一行上,也可以写在多行内

D.在对C程序进行编译时,可以发现注释行中的拼写错误

48.有以下函数:fun(char*a,char*b){while((*a!='\0')&&(*b!='\0')&&(*a==*b)){a++;b++;}return(*a-*b);}该函数的功能是()。

A.计算a和b所指字符串的长度之差

B.将b所指字符串复制到a所指字符串中

C.将b所指字符串连接到a所指字符串后面

D.比较a和b所指字符串的大小

49.设有以下定义和语句inta[3][2]={1,2,3,4,5,6,},*p[3];p[0]=a[1];则*(p[0]+1)所代表的数组元素是

A.a[0][1]B.a[1][0]C.a[1][1]D.a[l][2]

50.设有定义:intn=0,*p=&n,**q=&p;则下列选项中正确的赋值语句是()。

A.p=1;B.*q=2;C.q=p;D.*p=5;

51.若有以下定义的语句:structstudent{intage;intnum;};structstudentstu[3]={{1001,20},{1002,19},{1003,21}};main(){structstudent*p;p=stu;…}则以下不正确的引用是()。

A.(p++)->numB.p++C.(*p).numD.P=&stu.age.

52.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,从职员到部门的联系类型是()

A.多对多B.一对一C.多对一D.一对多

53.以下选项中可作为C语言合法整数的是A.10110BB.386C.0XffaD.x2a2

54.以下正确的程序段是

A.charstr1[]="12345",str2[]="abcdef";

B.charstr[10],*st="abcde";strcat(str,st);

C.charstr[10]=""。*st="abcde";strcat(str,st);

D.char*st1="12345",*st2="abcde";strcat(st1,st2);

55.下列程序的运行结果为()。#include<stdio.h>voidabc(char*str){inta,b,i,j;for(i=j=0;str[i]!='\0';i++)if(str[i]!='a'str[j++]=str[i];str[j]='\0';}voidmain(){charstr[]="abcdef";abc(str);printf("str[]=%s",str);}

A.str[]=bcdefB.str[]=abcdefC.str[]=aD.str[]=ab

56.在软件开发过程中,软件结构设计是描述______。

A.数据存储结构B.软件体系结构C.软件结构测试D.软件控制过程

57.有以下程序:#include<stdio.h>main(){intx[]={1,3,5,7,2,4,6,0},i,j,k;for(i=0;i<3;i++)for(j=2;j>=i;j—)if(x[j+1]>x[j]){k=x[j];x[j]=x[j+1];x[j+1]=k;}for(i=0;i<3;i++)for(j=4;j<7-i;j++)if(x[j]>x[j+1]){k=x[j];x[j]=x[j+1];x[j+1]=k;}for(i=0;i<8;i++)printf("%d",x[i]);prinff("\n");}程序运行后的输出结果是()。

A.75310246B.1234567C.76310462D.13570246

58.有以下程序

#include<stdio.h>

main()

{FILE*fp;inti=20,j=30,k,n;

fp=fopen("d1.dat","w");

fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);

fclose(fp);

fp=fopen("d1.dat","r");

fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);

fclose(fp);}

程序运行后的输出结果是

A.2030B.2050C.3050D.3020

59.一棵二叉树中共有70个叶子结点与80个度为1的结点,则该二叉树中的总结点数为()。

A.221B.219C.231D.229

60.下面程序在屏幕上的输出是______。main(){printf(“ab\b\bc”);}A.ab\b\bcB.acC.abcD.abc

四、选择题(20题)61.若执行下面的程序时,从键盘输入6和2,则输出结果是()。

A.5B.3C.2D.0

62.

63.以下叙述中正确的是(.。

A.调用printf函数时,必须要有输出项

B.使用putChar函数时,必须在之前包含头文件stdio.h

C.在C语言中,整数可以以十二进制、八进制或十六进制的形式输出

D.调用getChar函数读入字符时,可以从键盘上输入字符所对应的ASCIl码

64.请选出以下程序的输出结果()。

A.1234

B.4321

C.0000

D.4444

65.

66.有以下程序:

#include<stdio.h>

#include!(string.h>

voidfun(char*w,intm)

{charS,*pl,*p2;

p1=w;p2=w+m-;

while(pl<p2){s=*pl;*p1=*p2;*p2=s;pl++;p2-;}

}

main()

{chara[]="l23456";

fun(a,strlen(a));puts(a);

}

程序运行后的输出结果是()。

A.654321

B.116611

C.161616

D.l23456

67.在E-R图中,用来表示实体的图形是

A.矩形B.椭圆形C.菱形D.三角形

68.以下程序运行后的输出结果是()。

A.123B.234C.223D.233

69.有以下程序

main()

{

intn[3],i,j;

for(i=0;i<3;i++)

n[i]=0;

for(i=0;i<2;i++)

for(j=0;j<2;j++)

n[j]=n[i]+1;

printf("%d\n",n[1]);

}

程序运行后的输出结果是A.A.2

B.1

C.0

D.3

70.

71.有以下程序:

#include<stdio.h>

main()

{intX=011;

printf("%d\n",++x);

}

程序运行后的输出结果是()。

A.12B.11C.10D.9

72.

73.以下选项中有语法错误的是()。A.char*str[]={"guest"};

B.charstr[][lO]={"guest"};

C.char*str[3];str[t]={"9uest"};

D.charstr[3][lO];str[1]={"guest"};

74.若希望下列的程序运行后输出25,程序空白处的正确选项是()。

main

{inti,j=50,a[]=(7,4,10,5,8};

for()

j+=a[i];

printf("%d",j-40);

}

A.i=1;i<4;++i

B.i=l;i<3;++ic.i="4;i">2;i--

D.i=2;i<4;++i

75.下面四个选项中,均是不正确的8进制数或16进制数的选项是

A.0160x8f018

B.0abc0170xa

C.010-0x110x16

D.0a127ff-123

76.

77.

78.

79.有以下程序程序的运行结果是()。

A.852B.963C.741D.875421

80.

五、程序改错题(1题)81.假如整数数列中的数不重复,并存放在数组中。下列给定的程序中,函数proc()的功能是:删除数列中值为x的元素。n中存放的是数列中元素的个数。请修改程序中的错误,使它能够得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是将s所指字符串中ASCII值为奇数的字符删除,将剩余字符形成的新字符串放在t所指数组中。例如,若s所指字符串中的内容为“ABCDEFG12345”,其中字符A的ASCII值为奇数,字符1的ASCII值也为奇数,都应当删除,其他依此类推。最后t所指的数组中的内容应是“BDF24”。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*s,chart[]){}main(){ chars[100],t[100],Msg[]=“Pleaseenterstrings:”; printf(Msg); scanf(“%s”,s); fun(s,t); printf(“\nTheresuitis:%s\n”,t);}

参考答案

1.D

2.D单一的数据结构——关系,现实世界的实体以及实体间的各种联系均用关系来表示。数据的逻辑结构——二维表,从用户角度,关系模型中数据的逻辑结构是一张二维表。但是关系模型的这种简单的数据结构能够表达丰富的语义,描述出现实世界的实体以及实体间的各种关系。

3.A解析:模式设计和内模式设计是概念设计的两种方法。物理设计是根据特定的计算机系统,对数据的存储结构和存取方法进行设计,从而实现从逻辑结构到物理结构的转换。从系统开发的角度来看,结构特性设计和行为特性-设计是数据库应用系统所具有的两个特性。结构特性的设计,设计各级数据库模式(静态特性):行为特性的设计,改变实体及其特性,决定数据库系统的功能(动态特性)。

4.B

5.D

6.A解析:本题考查默认函数的函数值的类型。在函数定义时,由于函数没有说明其类型,系统默认一律自动按整型处理,因此,函数的类型为int类型。

7.C

8.C

9.D

10.D

11.A声明data是结构S的数组。初始化时data[0].a=10;data[0].b:104);data[1].a=20;data[1].b=200。主函数中p=data[1];即p.a=data[1].a;p.b=data[11.b;执行语句prinff(”%dkn”,++(p.A));打印输出时p.a先增l再打印。即p.a=data[1].a=20,先增1等于21,因此程序运行结果是21。

12.B

13.D

14.B

15.B

16.B\n本题考查函数中数组和指针的传值,数组a[]在参数传递时,是传递的数组a的首地址,所以形参a和n都是指针变量。。

\n

17.C

18.AC语言中的非执行语句不会被编译,不会被转换成二进制的机器指令,所以A选项错误。由C语言构成的指令序列称为C语言源程序,C语言源程序经过C语言编译程序编译之后,生成一个扩展名为.obj的二进制文件(称为目标文件);最后要由“连接程序”把此目标文件与C语言提供的各种库函数连接起来生成一个扩展名为.exe的可执行文件。故本题答案为A选项。

19.AC语言中整型常量,从表示形式来看,有十进制、八进制或十六进制;从符号位来看,有有符号整数和无符号整数两类。选项A的“12f”是float类型的实数,不是整数;选项B的“25u”属于无符号整数;选项C的“-32”是十进制形式的有符号整数;选项D的“+20L”是十进制形式的长整数。故本题答案为A选项。

20.C

21.2121解析:本题考查switch语句。首先x=1,执行switch(y),因为y=0,所以执行case0:a++;break;此时a=1执行case2:a++;b++;这时a=2,b=1;最后输出结果是21。

22.PERPER解析:本题中,typedef声明新的类型名PER来代替已有的类型名,PER代表上面指定的一个结构体类型,此时,也可以用PER来定义变量。

23.7979解析:因为在调用子函数时进行的是数值传递,调用子函数并不能改变实参的值,所以经过调用子函数,c、d的值并没有发生变化还是原来的值。

24.集合集合

25.32233,2,2,3解析:主函数中首先定义了整型变量x和y,并分别给它们赋初值为2和3,接着调用fun()函数,fun()函数把实参x和y的值传给形式参数x和y,实参和形参不再有联系.在fun()函数中通过运算使x和y的值交换过来,所以fun()函数中的输出结果是“3,2”。fun()函数调用返回输出x和y依旧是原来的x和y,为“2,3”原因是变量作为形参传值的,对形参的修改并不影响对应的实参。所以最后输出为3,2,2,3。

26.一对多一对多解析:实体之间的联系有3类:一对一,一对多,多对多。设有两个实体集E1和E2,如果E2中的每一个实体与E1中的任意个实体(包括零个)有联系,而E1中的每一个实体最多与E2中的一个实体有联系,则称这样的联系为“从E2到E1的一对多的联系”,通常表示为“l:n的联系”。由此可见,工人和设备之间是一对多关系。

27.概念概念

28.类类解析:在面向对象方法中,类描述的是具有相似属性与操作的一组对象。

29.开发开发解析:软件生命周期(SDLC,软件生存周期)是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,其中的编码和测试属于开发阶段。

30.概念或概念级概念或概念级解析:数据库系统在其内部具有三级模式及二级映射,三级模式分别是概念级模式、内部级模式和外部级模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户(应用)公共数据视图。

内模式式又称物理模式,它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及hash等存取方式与存取路径,内模式的物理性主要体现在操作系统及文件级上,它还未深入到设备级上(如磁盘及磁盘操作)。

外模式也称子模式或用户模式,它是用户的数据视图,也就是用户所见到的数据模式,它由概念模式推导而出。

31.完善性软件维护活动包括以下几类:改正性维护,适应性维护、完善性维护和预防性维护,完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。

32.log2n

33.DDBBCCDDBBCC解析:C语言对枚举的定义规定:在枚举中声明的各个枚举元素,如果没有明确指出某个枚举元素的值,它的上—个元素存在并有明确值的情况下,这个牧举元素的值为其上一个元素的值+1。在本题中,没有明确说明枚举元素em3的值,则em3=cm2+1=1+1=2,进而可知,在printf()打印函数中,要打印的数组元素是aa[3]、aa[1]、aa[2],因此最后的打印结果应当为'DDBBCC'。

34.数据结构数据结构解析:Jackson方法是—‘种面向数据结构的结构化方法。

35.bcdefgha

36.69616。6,9,6,16。解析:赋值语句m=++x,x;是将逗号表达式的值赋给m,x和m的值都是6,赋值语句n=y+y++;是将y+y的值16赋给n,再执行y的自加运算,y的值变为9。

37.可重用性继承的优点:相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余,提高软件的可重用性。

38.floatfloat解析:在此表达式中x是float类型的变量,经过开方所得到的结果仍是float类型,再和2.8进行运算时,应该先将2.8转换成float类型再运算,最后结果仍是float型。

39.逻辑数据模型逻辑数据模型解析:数据是现实世界符号的抽象,而数据模型(datamodel)则是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束行为,为数据库系统的信息表示与操作提供一个抽象的框架。数据模型按不同的应用层次分成3种类型,它们是概念数据模型(conceptualdatamodel)、逻辑数据模型(logicdatamodel)、物理数据模型(physicaldatamodel)。

40.3

41.A解析:当表达式为非0值时,执行while语句中的内嵌语句,可用break语句跳出循环,用continue语句结束本次循环。选项A不是死循环,当i=100时跳出循环。选项C为空循环语句。

42.A解析:维护是软件生命周期的最后一个阶段,也是持续时间最长、付出代价最大的阶段。软件工程学的目的就在于提高软件的可维护性,同时也要设法降低维护的代价。

软件维护通常有以下四类;

①为纠正使用中出现的错误而进行的改正性维护;

②为适应环境变化而进行的适应性维护;

③为改进原有软件而进行的完善性维护;

④为将来的可维护和可靠而进行的预防性维护。

软件维护不仅包括程序代码的维护,还包括文档的维护。文档可以分为用户文档和系统文档两类。但无论是哪类文档,都必须与程序代码同时维护。只有与程序代码完全一致的文档才有意义和价值。由此可知,本题中选项B、C、D中的说法都是错误的。

43.C解析:软件生命周期由软件定义、软件开发和软件维护三个时期组成,每个时期又进一步划分为若干个阶段。软件定义时期的基本任务是确定软件系统的工程需求。软件定义可分为软件系统的可行性研究和需求分析两个阶段。软件开发时期是具体设计和实现在前一时期定义的软件,它通常由下面五个阶段组成:概要设计、详细设计、编写代码、组装测试和确认测试。软件维护时期的主要任务是使软件持久地满足用户的需要。即当软件在使用过程中发现错误时应加以改正;当环境改变时应该修改软件,以适应新的环境;当用户有新要求时应该及时改进软件,以满足用户的新要求。根据上述对软件生命周期的介绍,可知选项C中的软件维护不是软件生命周期开发阶段的任务。因此,本题的正确答案是C。

44.B解析:按结构化程序设计方法设计出的程序具有明显的优点,即程序易于理解、使用和维护,便于控制、降低程序的复杂性,便于验证程序的正确性,程序清晰易读,可理解性好。

45.D解析:函数sub1给全局作用范围内数组a(长度为10)的每个元素赋值,函数sub2中数组a仅在本函数范围内有效,长度也是10,但仅给前5个元素赋值,main函数调用sub3时,传递数组地址均是全局作用范围内数组a的地址,因此两次调用打印的结果相同。

46.B解析:本题考查ifelse语句。第一个if语句,先判断条件,发现a=O,则!a成立,执行下列的语句,x--,得x=11;第二个if语句,判断条件,发现c=0,则条件不成立,执行下列的else语句,得x=4。

47.C解析:本题涉及C语言基本的3个知识点:①C语言规定一个程序只允许有一个主函数,一个函数内可以允许有多个花括号;②C程序的注释部分仅仅是方便程序员阅读,提高程序的可读性和可移植性,它并不参与程序的编译,所以编译器也就不会发现注释中的错误。

48.D解析:本题要求阅读的代码是一个函数,阅读之前先要看清函数的定义,该函数有两个参数,都是字符指针,这说明它接收的是两个字符串.该函数没有定义返回类型,C语言规定函数的返回类型为int时可以省略,所以切不可将其看成是无返回类型的void型函数,它是int型函数。函数体中除了返回语句外,只有一条while循环语句,该循环的循环条件为(*a!='\\'0}&&(*b!='\\0')&&(*a==*B),即当a和b所指处都不是字符结束符'\\0'并且a和b所指处的内容相等时执行循环。而循环体中只是简单地将指针a和b同时往后移动1位。循环结束后返回a所指内容减去b所指内容的差。换个角度去考虑,也就是说当字符串a或b中有一个结束了或者是它们的相同位置中有一个字符不同时,则返回该位置两个字符之差。若两者长度相同而且所有对应字符都相同的话,最后返回的是'\\0\\-'\\0'=0,否则的话就返回两个字符串第一对不相同的字符之差.这时应该可以看出来,这个函数实现的是对两个字符串的比较。所以,4个选项中D正确。

49.C解析:本题中首先定义了一个3行2列的数组a,一个长度为3的指针数组p,接着把地址a[1]赋给P[1]此时p[0]为a[1][0]的地址,p[0]+1为a[1][1]的地址,故*(p[0]+1)代表的元素为s[1][1]。所以,4个选项中选项C符合题意。

50.D解析:选项A),B),C)的指针赋值表达方式都不正确,*p=5表达整数5放到指针p所指向的存储单元中。注意:通过指针引用一个存储单。

51.D解析:结构体成员的引用可以用“结构体变量名.成员名”或者“结构体变量指针->成员名”两种方式来引用。注意:结构体类型的变量、数组和指针变量的定义。

52.C解析:该题考查的是实体间的联系。多对多联系(m:n):如果对于实体集A中的每个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每个实体,实体集A中有m个实体(m≥0)与之联系,则称实体集A与实体集B之间是多对多联系,记作m:n。一对一联系(1:1):如果对于实体集A中的每一个实体,实体集B中至多有一个实体与之有联系,反之亦然,则称实体集A与实体集B之间是一对一联系,记作1:1。一对多联系(1:n):如果对于实体集A中每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B之间是一对多联系,记作1:n。那么根据题意可知是多对一联系。所以选项C是正确的。

53.C解析:本题考核的知识点是整数及常数的表示方法。在C语言中,整数常量可以用十进制、八进制和十六进制来表示,选项A为二进制表示,故选项A不正确;选项B是八进制表示法,但在八进制数中,各个位数只能为数字。到7中的一个,而在选项B中,有一个数字8,故选项B不正确;选项C为十六进制表示法正确:选项D中也为十六进制表示法,但十六进制数以Ox开头,故选项D不正确,所以,4个选项中选项c符合题意。

54.C解析:本题考查了一维字符数组的定义和初始化。选项C中str[10]初始化为空,可以不必进行类似''的空赋值,字符数组若没有进行初始化赋值,默认的字符为空,并且定义完str数组后,应该用“,”分隔而不是“。”,所以选项C错误。

55.A解析:本题考查函数调用时的参数传递。通过函数abc的执行,将字符串中的字母a去掉,保留剩下的。由于是通过指针调用,所以改变字符串的结果。

56.B解析:从工程管理解度来看,软件设计分两步完成:概要设计和详细设计。概要设计(又称结构设计)将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式。

57.A解析:本题考查的是排序算法。

for(i=0;i<3;i++)

for(j=2;j>i;j--)

if(x[j+1],x[j]){k=x[j];x[j];x[j+1);x[j+1]=k;}

该段程序的作用是将数组元素x[0]~x[3]中的数由大到小排列,得到x[]{7,5,3,1,2,4,6,0}。

for(i=0;i<3;i++)

for(j=4;j<7-i;j++)

if(x[j]>x[j+1]){k=x[j];x[j]=x[j+1];x[j+1]=k;}

该段程序的作用是将数组元素x[4]~x[7]中的数由小到大排列,得到x[]={7,5,3,1,0,2,4,6}。因此输出结果为75310246。

58.A解析:本题中,最主要的是掌握几个有关文件函数的应用。

函数名:fopen

功能:打开一个文件

调用方式FILE*fp;

fp=fopen(文件名,使用文件方式);

函数名:fprintf

功能:传送格式化输出到一个文件中

调用方式:fprintf(文件指针,格式字符串,输出表列);

函数名:fclose

功能:关闭一个文件

调用方式:fclose(文件指针);

函数名:fscanf

功能:从磁盘文件执行格式化输入

调用方式:fscanf(文件指针,格式字符串,输入列表)。

59.B解析:二叉树有一个性质:在任意一棵二叉树中,度为。的结点(即叶子结点)总是比度为2的结点多一个,由于本题中的二叉树有70个叶子结点,因此有69个度为2的结点。

该二叉树中总的结点数为

度为2的结点数+度为1的结点数+叶子结点数=69+80+70=219

60.BC语言中允许使用一种特殊形式的字符常量,就是以一个“\\”开头的字符序列,这样的字符称为“转义字符”。常用的转义字符有:\\n,换行;\\t,水平制表;\\b,退格;\\r,回车。

61.C本题考查简单的if…else语句。先执行条件if(a<b),显然不成立,然后执行else语句。

62.D

63.B本题考查的是标准输入输出函数。在使用标准输入输出库函数(除了printf和scanf)前,必须要用预编译命令”#include”将头文件”stdio.h”包括到用户源文件中。调用printf函数时可以没有输出项,比如printf(””)是允许的。c语言中整数的输出形式中没有十二进制的形式。getchar函数读人字符时可以得到第一个输入字符的ASCIl码,无法通过输入相应字符的ASCIl得到该字符。

64.C本题的考查点是函数的形参和实参的关系。x作为函数sub的实参时,函数对X值的改变没有返回主函数,并能使得x的值变化,所以在打印时,x的值始终是0。

65.D

66.A\n此题是需要将a[]中的数值倒过来进行输出,所以答案为A。

\n

67.A解析:在E-R图中,用三种图框分别表示实体、属性和实体之间的联系,其规定如下:用矩形框表示实体,框内标明实体名;用椭圆状框表示实体的属性,框内标明属性名;用菱形框表示实体间的联系,框内标明联系名。所以,选项A正确。

68.D首先i++=:1&&(++j==3lk++==3)是一个逻辑表达式,i++==1&&(++j==3IIk++==3)分为两部分i++==1和(++j==3||k++==3),它们的关系是”且”的关系,所以两部分都会被执行,其中i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论