2021-2022年浙江省衢州市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第1页
2021-2022年浙江省衢州市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第2页
2021-2022年浙江省衢州市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第3页
2021-2022年浙江省衢州市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第4页
2021-2022年浙江省衢州市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年浙江省衢州市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.请选出正确的程序段

A.int*p;scanf("%d",p);…

B.int*s,k;*s=100;…

C.int*s,k;char*p,c;s=&k;p=&c;*p='a';…

D.int*s,k;char*p,e;s=&k;p=&c;s=p;*s=1;…

2.二叉树的第三层最少有________个结点。

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

3.有定义语句intb;charc[10];,则正确的输入语句是______。A.scallf("%d%s",&b,&c);

B.scallf("%d%s",&b,c);

C.scanf("%d%s",b,c)

D.scanf("%d%s",b,&c);

4.有下列程序:#include<stdio.h>voidfun(char*a,char*B){while(*a=='*')a++;while(*b=*A){b++;a++;}}main(){char*s="*****a*b****",t[80];fun(s,t);puts(t);程序的运行结果是()。A.*****a*bB.a*bC.a*b****D.ab

5.由权值分别为3,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为________。

A.24B.48C.72D.53

6.若有定义“floatx=1.5;inta=1,b=3,c=2;”,则正确的switch语句是()。

A.switch(a+b){ case1:printf(“*\n”); case2+1:printf(“**\n”);}

B.switch((int)x);{ case1:printf(“**\n”); case2:printf(“**\n”);}

C.switch(x){ case1.0:printf(“*\n”); case2.0:printf(“**\n”);}

D.switch(a+b){ case1:printf(“*\n”); casec:printf(“**\n”);}

7.在一个源文件中定义的全局变量的作用域为:()

A.本程序的全部范围B.本函数的全部范围C.从定义该变量的位置开始到本文件结束D.以上说法都不正确

8.

9.若在定义语句:inta,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是()。

A.scanf("%d",a,b,c);

B.scanf("%d%d%d",a,b,c):

C.scanf("%d",p);

D.scanf("%d",&p);

10.有如下定义#defineD2intx=5;floaty=3.83;charC='D';则下面选项中错误的是

A.x++;B.y++;C.c++;D.D++;

11.对含有16个元素的有序表进行二分查找,关键字比较次数最多是()

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

12.设一棵二叉树共有50个叶子结点(终端结点),则共有___个度为2的结点。

A.25B.49C.50D.51

13.下列叙述中错误的是()。

A.列表框和组合框都有List属性

B.列表框有Selected属性,而组合框没有

C.列表框和组合框都有Style属性

D.组合框有Text属性,而列表框没有

14.以下叙述中错误的是(

)。A.函数形参的值也可以传回给对应的实参

B.函数调用可以作为一个独立的语句存在

C.若函数有返回值,必须通过r;mm语句返回

D.C程序必须由一个或一个以上的函数组成

15.有下列程序:程序执行后的输出结果是()。A.0,1,0B.0,1,1C.0,0,1D.0,0,0

16.有以下程序:#include<stdio.h>voidfun(char*t,char*s){while(*t!=0)t++;while((*t++=*s++)!=0);}main(){charss[10]=“acc”,aa[10]=“bbxxyy”;fun(ss,aa);printf(“%s,%s\n”,ss,aa);}程序的运行结果是()。

A.acc,bbxxyy

B.accbbxxyy,bbxxyy

C.accxxyy,bbxxyy

D.accxyy,bbxxyy

17.有下列程序:

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

A.3,7,8,9,10,6,5,4,2,1,

B.10,9,8,7,3,1,2,4,5,6,

C.10,9,8,7,6,1,2,3,4,5,

D.1,2,3,4,5,10,9,8,7,6,

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

A.C语言的可执行程序是由一系列机器指令构成的

B.用C语言编写的源程序不能直接在计算机上运行

C.通过编译得到的二进制目标程序需要连接才可以运行

D.在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件

19.有以下程序:#include<stdio.h>main(){inta,b,k,m,*pl,*p2;k=1,m=8;p1=&k,p2=&m;a=/*pl-m;b=*p1+*p2+6;printf("%d",a);printf("%d\n",b);}编译时编译器提示错误信息,你认为出错的语句是()。A.a=/*pl-m;B.b=*p1+*p2+6;C.k=1,m=8;D.pl=&k,p2-&m;

20.数据的存储结构是指______。

A.数据所占的存储空间量B.数据的逻辑结构在计算机中的表示C.数据在计算机中的顺序存储方式D.存储在外存中的数据

二、2.填空题(20题)21.在面向对象方法中,属性与操作相似的一组对象称为【】。

22.以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。

例如,输入字符串:abc123edf456gh,执行程序后输出:123456。请填空。

#include<stdio.h>

#include<ctype.h>

main()

{chars[80],d[80];inti,j;

gets(s);

for(i=j=0;s[i]!='\0';i++)

if(【】){d[j]=s[i];j++;}

d[j]='\0';

puts(d);

}

23.数据库管理系统常见的数据模型有层次模型、网状模型和【】3种。

24.软件的需求分析阶段的工作,可以概括为四个方面:【】、需求分析、编写需求规格说明书和需求评审。

25.一个关系表的行称为()。

26.下面程序的输出结果是()。#include<stdio.h>main(){staticchara[]="zhao",b[]="juan";char*ptr1=a,*ptr2=b;intk;for(k=0;k<4;k++)if(*(ptr1+k)==*(ptr2+k))printf("%c",*(ptr1+k));}

27.若按功能划分,软件测试的方法通常分为______测试方法和黑盒测试方法。

28.以下程序建立一个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输入数据为-1时,表示输入结束(键表头结点的data域不放数据,表空的条件是ph->next==NULL),请填空。

#include<stdio.h>

structlist{intdata;structlist*next;};

structlist*creatlist()

{structlist*p,*q,*ph;inta;ph=(structlist*)malloc(sizeof(structlist));

p=q=ph;printf("Inputanintegernumber;entre-1toend:\n");

scanf("%d",&a);

while(a!=-1)

{p=(structlist*)malloc(sizeof(structlist));

【】=a;q->next=p;【】=p;scanf("%d",&a);}

p->next='\0';return(ph);}

main()

{structlist*head;head=creatlist();}

29.下述函数统计一个字符串中的单词个数,单词是指处在空格之间的字符序列,请填空。

intword(char*s)

{intnum=0,flag=0;

while(*s)

{if(【】='')flag=0;

elseif(【】){flag=1;num++}

}

return【】}

30.当数据的物理结构(存储结构)改变时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的【】。

31.以下程序的输出结果是()。main(){char*p[]={"ABC","DEF","GHI","JKL"};inti;for(i=3;i>=0;i--,i--)printf("%c",*p[i]);}

32.以下函数把b字符串连到a字符串的后面,并返回a中新字符串的长度,请填空。

strcen(chara[],charb[])

{

intnum=0,n=0;

while(*(a+num)!=【】)num++;

while(b[n]){*(a+num)=b[n];num++;【】;}

returnnum;

}

33.下面程序的功能是将字符串s中所有的字符c删除,补足所缺语句。

#include<stdio.h>

main()

{chars[80];

inti,j;

gets(s);

for(i=j=0;s[i]!='\0';i++)

if(s[i]!='c')【】;

s[j]='\0';

puts(s);

}

34.用下面语句调用库函数malloc,使单精度型指针p指向具有40个字节的动态存储空间,请填空。

p=(float*)【】;

35.在深度为7的满二叉树中,度为2的节点个数为()。

36.以下程序的输出结果是【】。

main()

{

intarr[]={30,25,20,15,10,5},*p=arr;

p++;

printf("%d\n",*(p+3));

}

37.以下程序的输出结果是______。

main()

{inta=1,b=2;

a=a+b;b=a-b;a=a-b;

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

}

38.若有如下程序:

main()

{intx=5,y,*t;t=&x;

y=++(*t);

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

则程序执行后的x值为【】,y的值为【】。

39.软件生命周期分为软件定义期、软件开发期和软件维护期,详细设计属于______中的一个阶段。

40.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。

三、1.选择题(20题)41.若变量已正确定义,下列正确的程序段是()。

A.while(ch=getchar()=='\N')putchar(ch);

B.while((ch=getchar())=='\n')putchar(ch);

C.while((ch=getehar())!='\N')putchar(ch);

D.while((ch=getchar())!='\n',)putchar(ch);

42.表达式3.6-5/2+1.2+5%2的值是A.4.3B.4.8C.3.3D.3.8

43.若有以下程序#include<stdio.h>inta[]={2,4,6,8};main(){inti;int*p=a;for(i=0;i<4;i++)a[i]=*p;printf("%d\n",a[2]);}上面程序输出结果是

A.6B.8C.4D.2

44.下列程序段的输出结果是()。chara=9,b=020;prihtf("%o\n",~a&b<<1);

A.100000B.8C.40D.77

45.用C语言编写的代码程序A.可立即执行B.是一个源程序C.经过编译即可执行D.经过编译解释才能执行

46.请读程序:#include<stdio.h>func(inta,intb){intc;c=a+b;returnc;}main(){intx=6,y=7,z=8,r,r=func((x-,y++,x+y),z-);printf("%d\n",r);}上面程序的输出结果是_______。

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

47.在数据库设计中,将E-R图转换成关系数据模型的过程属于()A.需求分析阶段B.逻辑设计阶段C.概念设计阶段D.物理设计阶段

48.以下程序段有错,错误原因是______。main(){int*p,i;char*q,ch;p=&i;q=&ch;*p=40;*p=*q;}

A.p和q的类型不一致,不能执行*p=*q;语句

B.*p中存放的是地址值,因此不能执行*p=40;语句

C.q没有指向具体的存储单元,所以*q没有实际意义

D.q虽指向了具体的存储单元,但该单元中没有确定的值,所以不能执行*p=*q;语句

49.以下函数返回a所指数组中最大值所在的下标值:fun(int*a,intn){inti,j=0,p;p=j;for(i=j;i<n;i++)if(a[i]>a[p])______;return(p);}在下划线处应填入的内容是()。

A.i=pB.a[p]=a[i]C.p=jD.p=i

50.办公自动化(OA)是计算机的一项应用,按计算机应用的分类,它属于()

A.数据处理B.科学计算C.实时控制D.辅助设计

51.有以下程序:#include<stdio.h>main(){intc=35;printf("%d\n",e&c);}程序运行后输出结果是()。

A.0B.70C.35D.1

52.打开一个已经存在的非空文本文件,若文件名为stu,则正确的打开语句为()

A.FILE*fp;fp=fopen("stu.txt","r")

B.FILE*fp;fp=fopen(stu.txt,r)

C.FILE*fp;fP=fopen("stu,txt","wb")

D.FILE*fp;fp=fopen("stu.txt",wb)

53.下列说法错误的是()。

A.下列结构体定义时,占据了5个字节的空间structstudent“ntnum;intage;charsex;}

B.结构体的成员名可以与程序中的变量名相同

C.对结构体中的成员可以单独使用,它的作用相当于普通变量

D.结构体可以嵌套定义

54.在下列关于二叉树的叙述中,正确的一项是

A.在二叉树中,任何一个结点的度都是2

B.二叉树的度为2

C.在二叉树中至少有一个结点的度是2

D.一棵二叉树的度可以小于2

55.设变量x和y均已正确定义并赋值。下列if语句中,在编译时将产生错误信息的是()。

A.if(x++);

B.if(x>y&&y!=0);

C.if(x>0)x--elsey++;

D.if(y<0){;}elsex++;

56.若二维数组a有m列,且设a[0][0]位于数组的第一个位置上,则计算任一元素a[i][j]刚在数组中的位置的式子为()。

A.i*m+jB.j*m+iC.i*m+j-1D.i*m+j+l

57.若要用fopen函数打开一个文本文件,该文件要既能读也能写,则文件使用方式的字符串为()。

A.r+B.a+C.rb+D.'wb+"

58.c语言规定,在一个源程序中,main函数的位置()。

A.必须在最开始B.必须在系统调用的库函数的后面C.可以任意D.必须在最后

59.若要用函数fopen打开一个新的二进制文件,该文件要既能读也能写,则应以哪种方式打开文件()。

A.wbB.wb+C.rb+D.rb

60.若已定义:inta[9],*p=a;并在以后的语句中未改变p的值,下列选项中不能表示a[1]地址的表达式是()。

A.p+1B.a+1C.a++D.#NAME?

四、选择题(20题)61.若有定义:则以下不能正确表示该数组元素的表达式是()。

62.软件测试的目的是()。

A.评估软件可靠性B.发现并改正程序中的错误C.改正程序中的错误D.发现程序中的错误

63.

64.

65.

66.

67.以下对C语言函数的有关描述中,正确的是()。

A.C函数可以递归调用也可以嵌套调用

B.在C中,调用函数时,只能把实参值传给形参,形参值不能返回给实参

C.没有返回值的函数不能被使用.

D.C程序中有调用关系的所有函数必须放在同一个源程序文件中

68.非空循环链表所表示的数据结构()。

A.有根结点也有叶子结点B.没有根结点但有叶子结点C.有根结点但没有叶子结点D.没有根结点也没有叶子结点

69.下列数据模型中,具有坚实理论基础的是()。A.层次模型B.网状模型C.关系模型D.以上三个都是

70.在满足实体完整性约束的条件下()。

A.一个关系中廊该有一个或多个候选关键字

B.一个关系中只能有一个候选关键字

C.一个关系中必须有多个候选关键字

D.一个关系中可以没有候选关键字

71.对于循环队列,下列叙述中正确的是()。A.队头指针是固定不变的

B.队头指针—定大于队尾指针

C.队头指针_定小于队尾指针

D.队头指针可以大于队尾指针,也可以小于队尾指针

72.下面函数的功能是()。

intfunc(char*x)

{char*y=x;

while(*y++);

return(y-x-1);

}

A.求字符串的长度

B.比较两个字符串的大小

C.将字符串x复制到字符串y

D.将字符串x连接到字符串y后面

73.

74.

75.在“文件包含”预处理语句的使用形式中,当#include后面的文件名用(双引号)括起时,寻找被包含文件的方式是()。

A.直接按系统设定的标准方式搜索目录

B.先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索

C.仅仅搜索源程序所在目录

D.仅仅搜索当前目录

76.下列定义数组的语句中,正确的是()。

77.

设有下列程序段:

charstr[]="HelloWorld":

char*plr;

ptr=str:

执行上面的程序段后,*(ptr+10)的值为()。

A.\0B.0C.不确定的值D.0的地址

78.

79.若运行以下程序时,从键盘输入ADescriptor<CR>(<CR>表示回车),则下面程序的运行结果是()。

A.v0=7,vl=4,v2=7

B.v0=8,vl=4,v2=8

C.v0=11,vl=4,v2=11

D.v0=13,vl=4,v2=12

80.CSS指的是下列()的缩写。

A.ComputerStyle.Sheets

B.CascadingStyle.Sheets

C.CreativeStyle.Sheets

D.ColorfulStyle.Sheets

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是根据整型形参n,计算如下公式的值:y=1-1/(22)+1/(33)-1/(44)+…+(-1)(n+1)/(m)例如,n中的值为l0,则应输出0.817962。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.请编写一个函数,用来删除字符串中的所有空格。例如,输入abcdefgh,则输出为abcdefgh。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.C解析:本题的选项A)和B)犯了同样的错误,即指针变量在定义后并没有指向具体的变量。也就是说,指针变量中没有确定的地址值,它的值是不可预见的,所指的单元也是不可预见的,因此不能进行赋值操作。另外,在选项D)中,s是int型指针变量,p是char型指针变量,所指向的内存单元所占用的字节数是不同的,因而不能将字符指针变量p的值赋给整型指针变量s。

2.B

3.B解析:scanf函数中的“格式控制”后面应当是地址,而不是变量名。对于变量,通过地址运算符“&”求出内存中的地址;对于数组c[10],数组名c即为数组在内存中的地址。

4.C解析:主函数main()定义了指向字符串的指针和一个字符数组,接着调用fun(s,t)函数,进行实参向形参传递,函数fun()第一个while语句判断*a中的值为“*”时继续扫描,当遇到不是“*”时结束,接着第二个while循环语句,将*a中从“a”开始的后续所有字符都赋予*b,也就是t[80]中的内容为“a*b****”,所以此题的运行结果为选项C)。

5.D

6.AB选项中“switch((int)x);”语句中不应该有最后的分号。switch(expr1)中的expr1不能用浮点类型或long类型,也不能为一个字符串,所以C选项错误。case后面必须为常量表达式,所以D选项错误。故本题答案为A选项。

7.C

8.C

9.C

\n题中整型指针变量P存放的是变量C的地址。所以本题答案为C。

\n

10.D解析:C语言中++运算符的对象可以是整型、实型和字符型,但不可是常量,本题中D为常量。

11.C

12.B难易程度:易

13.BB。【解析】组合框和列表框都没有selected属性。

14.A函数参数传递是个不可逆的过程,形参不会把值传回实参,所以A)选项(24)[答案]A)[解析]c的值为a乘以b的值,为3。所以答案选择A)。

15.Bif条件表达式“a--‖b--&&--c”使用了逻辑或运算符和逻辑与运算符。因为逻辑与运算符优先级比逻辑或运算符优先级高,所以条件表达式等价于“(a--)‖(b--&&--c)”,自左向右运算,执行“a”,因为a初值为1,所以a--的值为1,执行完后a的值为0;又因为逻辑或运算符的短路原则,当a--的值为1时,条件为真,后面的表达式b--&&--c不执行。程序执行if语句块,输出a、b、c的值为:0,1,1。本题答案为B选项。

16.B在函数fun中,前一个while循环的作用是,如果形参指针t所指内容不为0,则让t增1,直到它指向0;后一个while循环的作用是,将s所指内容赋给t所指地址,然后两者同时增1,直到赋给t的内容为0。由此可见,函数fun的作用就是将形参s所指字符串连接到形参t所指字符串末尾,相当于库函数strcat。主函数中使用fun将数组aa中的字符串连接到数组ss中原有字符串之后,所以执行完后,ss中的字符串为“accbbxxyy”。程序最后输出的结果是accbbxxyy,bbxxyy。故本题答案为B选项。

17.B程序中函数fun的功能是将数组a的n个元素,按照flag的值进行排序:当flag为0时,升序排列;当flag为1时,降序排列。main函数中定义数组c,初始化10个元素的值。第1次调用函数fun,\nflag为1,即将c的下标为0开始的5个元素降序排列。第2次调用函数fun\n,flag为0,将c的下标为5开始的5个元素升序排列。所以输出数组e的元素为10,9,8,7,3,1,2,4,5,6。本题答案为B选项。

18.Dc语言的可执行程序是由一系列机器指令组成的。用C语言编写的源程序必须经过编译生成二进制目标代码,再经过连接才能运行,并且可以脱离c语言集成开发环境。故答案为D)。

19.A本题考查指针,pl=&k表示P指向k的地址,则*p=k,依次类推,在对指针进行赋值时没有错误。a=/*p+m赋值,在c语言中"/*"表示的注释,所以答案选择A。

20.B解析:数据元素在计算机存储空间中的位置关系与它们的逻辑关系不一定是相同的,而且一般不可能相同。数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构,也称数据的物理结构。

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

22.s[i]>='0'&&s[i]<='9'或isdigit(s[i])s[i]>='0'&&s[i]<='9'或isdigit(s[i])解析:根据题意和程序可知要填空的内容是:将字符申s中的数字字符放入d数组的条件。

23.关系模型关系模型解析:数据库管理系统是位于用户与操作系统之间的一层系统管理软件,是一种系统软件,是用户与数据库之间的一个标准接口。其总是基于某种数据模型,可以分为层次模型、网状模型和关系模型。

24.需求获取需求获取解析:软件的需求分析阶段的工作,可以概括为四个方面:需求获取、需求分析、编写需求规格说明书和需求评审。需求获取的目的是确定对目标系统的各方面需求;需求分析是对获取的需求进行分析和综合,最终给出系统的解决方案和目标系统的逻辑模型;编写需求规格说明书作为需求分析的阶段成果,可以为用户、分析人员和设计人员之间的交流提供方便,可以直接支持目标软件系统的确认,又可以作为控制软件开发进度的依据;需求评审是对需求分析阶段的工作进行的复审,验证需求文档的一致性、可行性、完整性和有效性。

25.元组元组解析:一个关系表中的行称为元组,列称为属性。

26.aa解析:本程序先将指针ptr1和ptr2分别指向字符数组a和b,然后通过指针的移动比较a和b中是否有相同的字符。若有相同的字符则将其输出。

27.白盒白盒解析:软件测试的方法分为白盒测试方法和黑盒测试方法.

28.p->dataqp->data\r\nq解析:本题考查的是链表这一数据结构对结构体变量中的数据的引用。链表的特点是结构体变量中有两个域,一个是数据,一个是指向该结构体变量类型的指针,用以指明链表的下一个结点。

29.*s++flag=0或*(s-1)=''num*s++\r\nflag=0或*(s-1)=''\r\nnum解析:在统计字符串单词个数的算法中,本题的flag是为了记录一个单词是否结束。第13空应填*s++;如果某个字符不是空格,则必须判断它是否是单词,如是,则使得flag的标志为1,num的值加1。本题判断方法是:先判断s所指向的字符是否为空格,如果是则使得flag=0,否则判断前一个字符是否是空格,如果是则说明这个字符是一个单词的开始,将flag标志为1,num的值加1,如果不是,则不必记录。故第14空应填flag=0或*(s-1)='';最后一个空格需填写的是返回的单词的个数,即num。

30.物理独立性数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。也就是说,数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。数据独立性一般分为物理独立性与逻辑独立性两级。

31.JD

32.\0'n++

33.s[j++]=s[i]

34.malloc(40)malloc(40)解析:库函数malloc()只有一个参数,就是所需分配内存的字节数,然后返回一个void*指针。本题要求分配40个字节,故直接调用malloc(40)就可以了。

35.6363解析:满二叉树的第k层上有2k-1个结点,度为k的满二叉树一共有2k-1个结点,由二叉树的性质可知:除去第k层上的结点,其他所有结点都是度为2的结点,所以度为2的结点数为2k-1-2k-1,即27-1-27-1=63。

36.1010解析:整型指针最初被赋的值是数组arr的头指针,即指向数组的第一个元素30,p++后,指针指向数组的下一个元素,即*p=arr[1]=25,在执行*(p+3)时,则相当于a[1+3],即10。因此,输出应为100。

37.21

38.66

39.软件开发软件开发解析:软件生命周期分为3个时期共8个阶段:软件定义期(问题定义、可行性研究和需求分析)、软件开发期(系统设计、详细设计、编码和测试)、软件维护期(即运行维护阶段)。

40.1919解析:根据二叉树的性质:在任意一棵二叉树中,度为。的结点(即叶子结点)总是比度为2的结点多一个。本题中度为2的结点数为18,故叶子结点数为18+1=19个。

41.D解析:本题考查两个知识点:①C语言用'\\n'这个字符常量表示换行;②getchar函数的作用是从终端输入一个字符,当遇到换行时结束输入。

42.D解析:*、/和%的优先级要高于+和—,同级别的运算符从左至右运算。所以本题首先计算5/2和5%2,虽然我们都知道5/2的结果应该是2.5,但C语言中规定了两个整数相除的结果为整数,而且是截尾取整,所以5/2的结果是2;5%2表示的是5除以2所得的余数,其结果为1。计算完后,表达式变为3.6-2+1.2+1,从左至右计算不难得出结果为3.8,故应该选择D。

43.D解析:在C语言中,数组元素下标是从0开始的;指针变量p指向数组的首地址。for循环语句中,指针变量p始终指向数组的首地址,因而执行循环赋值语句后数组各元素的值均变为2。

44.C解析:将变量a按位求反,再与b按位与,最后左移1位。9的二进制表示为00001001,020的二进制表示为00010000。a按位求反为11110110,再与b按位与结果为00010000,左移1位结果为00100000。按八进制输出为040。

45.B解析:C语言是一种高级语言,C语言源程序经过C语言编译程序编译之后,生成一个后缀为.OBJ的二进制文件(称为目标文件),最后还要由称为“连接程序”(Link)的软件,把此.OBJ文件与c语言提供的各种库函数连接在一起,生成一个后缀.EXE的可执行文件。显然C语言不能立即执行。

46.C解析:函数func()的作用是返回两个形参的和,第一个形参是x、y分别自减和自增后的和,其中(x-,y++,x+y)是一个逗号表达式,它的值应该等于x+y,所以整个表达式(x-,y++,x+y)的值为13,而第二个形参的值为8(根据语法规则,应当先使用,后自增),所以func()的返回值为13+8=21。

47.B数据库应用系统的逻辑设计包括数据库逻辑结构设计、数据库事务概要设计和应用程序概要设计三方面。数据库逻辑结构设计的主要步骤为:将E—R图转换为初始关系模式,对初始关系模式进行优化,检查关系表对数据库事务的支持性,确定关系模式完整性约束,设计基于关系模式的用户视图。

48.D解析:语句*p=*q:使指针p指向q所指向的存储单元,同时p得到该存储单元的内容及其类型,所以D项叙述正确。

49.D解析:该题目要求的是最大数的位置(下标)。程序通过对a所指数组中的元素进行逐个比较,记录最大数的下标i,并把该下标记录在变量p中,所以,如果a[i]>a[p]关系成立,应该把i的值赋给p,这样才满足题目的要求。

50.A

51.C解析:按位与运算符“&”的运算规则是:如果两个相应的二进制位都为1,则该位的结果为1,否则为0。因为本题中相与的两个数相同,即对应位的二进制数相等,所以结果为其值本身。

52.A

53.A解析:本题主要考查定义结构体的几个特点:①结构的定义明确了结构的组成形式,定义了一种C语言中没有而用户需要的新的数据类型。与其他的数据类型不同,在程序编译的时候结构的定义并不会使系统为该结构分配内存空间,只有在说明结构变量时才分配内存空间;②结构体的成员名可以与程序中的变量名相同:⑧结构体中的成员可以单独使用,它的作用相当于普通变量:④结构体可以嵌套定义。

54.D解析:本题考查了二叉树的基本概念。在二叉树中,叶子节点的度是1;当该二叉树为空树时,根节点的度为零;为非空树时,根节点的度为2。

55.C解析:选项A)和选项B)在条件判断语句的后面是空语句,什么都不做;在选项D)if后面是一个复合空语句;而在选项C)中,在x--后面少了一个分号,所以程序段在编译时,会出现语法错误。

56.D解析:解此题要注意的问题有两个:一是,二维数组在内存中的存放形式是线性的,且是以行方式排列的。例如:a[3][4]在内存中是以a[0][0],a[0][1],a[0][2],a[0][3],a[1][0],a[1][1],a[1][2],…的顺序排列的。二是,数组的下标范围是从0开始至上限减1为止的。例如:a[5]中5个元素的下标范围是0~4。所以,元素a[i][j]刚在m列的二维数组a中,其上面已经有a[0][?]~a[i-1][?],i行元素,加上其左面的a[i][0]~a[i][j-1],j个元素,再加上自己所处的位置1就是该元素在数组中的位置值了。i行元素的个数是i*m,所以元素a[i][j]在数组中的位置为i*+j+1。得出结论后还应该验证一下,当i=0,j=0时,a[0][0]所处的位置代入式子为0*m+0+1:1,符合题意。故正确答案为D。

57.A解析:选项A表示为读/写打开一个文本文件,符合题意;选项B表示为读/写建立一个新的文本文件;选项C表示为读/写打开一个二进制文件:选项D表示为读/写建立一个新的二进制文件。故应该选择A。

58.C解析:不论main函数在整个过程中的位置如何,一个C程序总是从main函数开始执行的。

59.B解析:本题考查文件使用方式标识符。方式“wb”为输出打开一个二进制文件;方式“wb+”为读写建立一个新的二进制文件;方式“rb+”为读写打开一个二进制文件:方式“rb”为输入打开一个二进制文件。

60.C解析:本题考查数组地址的表示。选项C)中,数组名所表示的数组地址不能被重新赋值。

61.A本题考查的是通过指针引用二维数组元素。通过一维数组名或指向一维数组元素的指针来引用数组元素有两种写法:a[i]和*(a+i),它们是等价的。这是一种运算符之间的等价转换,就好像a一(b—c)等价于a-b+c一样。知道了这种转换,我们可以将之扩展到二维数组甚至任意维数组上来。因为口运算符的结合性是从左至右的,所以w[i珩]等价于(w[i][j],此时可以先将任意一个口运算符转换为指针形式为(·(w+i))[j]或*(w[i]+j),或者同时转换为*(*(W+i)+j)。上述几种形式都完全等价于w[il[j]。

62.D软件测试是为

温馨提示

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

评论

0/150

提交评论