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

下载本文档

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

文档简介

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

一、单选题(20题)1.设无向图G中有n个顶点e条边,则其对应的邻接表中的表头结点和边表接点的个数分别为()。

A.n,eB.e,nC.2n,eD.n,2e

2.以下程序的运行结果是()。#include<stdio.h>main(){st,uctdate{intyear,month,day;}today;printf("%d\n",sizeof(structdate));}

A.6B.8C.10D.12

3.以下叙述正确的是()。

A.表达式“sizeof(FILE*)==sizeof(int*)”的值为真

B.文件指针的值是一个整数,它的值一定小于文件字节数

C.文件指针的值是所指文件的当前读取位置

D.使用fscanf函数可以向任意类型的文件中写入任意数量的字符

4.以三级模式为框架形成的3种数据库中,真实存在于计算机外存的数据库是()。

A.概念数据库B.用户数据库C.物理数据库D.逻辑数据库

5.下列有关格式输入函数scanf的叙述中正确的是()

A.输入项可以是C语言中规定的任何变量,并且在任何变量前必须加地址符号“&”

B.可以只有格式控制项,没有地址列表项

C.在输入数据时,必须规定精度。如:scanf("%4.2f",&d);

D.当输入数据时,必须指明变量地址

6.设栈S的初始状态为空,栈的容量为5,若入栈元素的顺序是e1、e2、e3、e4、e5,则出栈元素的顺序不可能是______。

A.e1、e2、e3、e4、e5

B.e5、e4、e3、e2、e1

C.e2、e4、e3、e5、e1

D.e3、e4、e1、e2、e5

7.以下能正确定义字符串的语句是()。

A.charstr=“\x43”;

B.charstr[]=“\0”;

C.charstr=”;

D.charstr[]={‘\064’};

8.以下是if语句的基本形式:

if(表达式.语句

其中“表达式”()。

A.必须是逻辑表达式B.必须是关系表达式C.必须是逻辑表达式或关系表达式D.可以是任意合法的表达式

9.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf(“%d,%d,%d,%d\n”,a,b,c,d);}程序的运行结果是()。

A.1,1,2,0B.0,0,0,3C.编译有错D.0,1,2,0

10.

11.有以下函数:charfun(char*p){returnP;}该函数的返回值是()。A.无确切的值B.形参p中存放的地址值C.一个临时存储单元的地址D.形参p自身的地址值

12.若需要0(nlog2n)的时间内完成对数组的排序,且要求排序是稳定的,则可选择排序方法是()。A.快速排序B.堆排序C.归并排序D.直接插入排序

13.

14.设顺序表的长度为n,则顺序查找的平均比较次数为()

A.nB.n/2C.(n+1)/2D.(n-1)/2

15.

16.

有以下结构体说明和变量的定义,且指针P指向变量a,指针q指向变量b,则不能把结点b连接到结点a之后的语句是()。

structnode

{chardata;

structnode*next:

}a,b,*p=&a,*q=&b;

A.a.next=q;B.P.next=&b;C.p->next=&b;D.(*p).next=q;

17.有以下程序:main{intnum[4][4]={1,2,3,4},{5,6,7,8},{9,10,11,12,},{13,14,15,16}},i,j;for(i=0;i<4;i++){for(j=0;j<i;j++)printf("%4c",);for(j=________;J<4;j++)printf("%4d",num[i][j]);printf("\n");}}若要按以下形式输出数组右上半三角1234678111216则在程序下划线处应填入的是()。A.i-1B.iC.i+1D.4一i

18.有以下程序main(){inti;for(i=0;i<3;i++)switch(i){case1:printf("%d",i);case2:printf("%d",i);default:printf("%d",i);}}执行后输出的结果是A.11122B.12C.12020D.120

19.有以下程序:

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

A.4321098765B.5678901234C.0987654321D.0987651234

20.当执行下面的程序时,如果输入ABC,则输出结果是()#include<stdio.h>#include<string.h>main(){charss[10]="12345";gets(ss);strcat(ss"6789");printf("%s\n",ss);}

A.ABC6789B.ABC67C.12345ABC6D.ABC456789

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

#include<stdio,h>

#include<stating,h>

voidfun(char*s,intp,intk)

{inti;

for(i=p;i<k-1;i++)s[i]=s[i+2];

}

main()

{chars[]="abedefg";

fun(s,3,strlen(s));puts(s);

}

22.数据结构分为逻辑结构与存储结构,线性链表属于【】。

23.对二叉排序树进行查找的方法是:用待查的值与根结点的值相比,若比根小,则继续在【】子树中找。

24.用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间,请填空。st=(char*)【】;

25.以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。请填空。

intfun(intn)

{intm=0,f=1,i;

for(i=1;i<=n;i++)

{m+=i*f;

f=【】;

}

returnm;

}

main()

{printf("m=%d\n",【】)};

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

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

28.自动批处理文件名必须是【】。

29.下面的程序实现字符串的复制。

voidcopy_string(from,to)

【】;

{for(;*from;from++,to++)

*to=*from;

【】;

}

main()

{char*a="Iamwang",*b="youareLi";

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

【】;

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

}

30.以下函数的功能是求x的y次方,请填空。

doublefun(doublex,inty)

{inti;

doublez;

for(i=1,z=x;i<y;i++)z=z*【】;

returnz;

}

31.在C语言中,可以利用【】,将一个表达式的值转换成指定的类型。

32.设有下列宏定义:#defineA2

#defineBA+3

则执行赋值语句;t=B*2;t为int型变量后的值是______。

33.问题处理方案的正确而完整的描述称为______。

34.若有下列定义(设int类型变量占两个字节),则i=【】,j=【】。

inti=8,j=9;floatx=123.456;

print("i=%oj=%o\n",i,j);

35.设有chara,b;,若要通过a&b运算屏蔽掉a中的其他位,只保留第2位和第8位(右起为第1位),则b的二进制是【】。

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

main()

{char*p[]={"BOOL","OPK","H","SP:,};

for(i=3;i>0;i--,i--)printf("%c",*p[i]);

printf("\n");}

37.若有以下程序:

main()

{int,p,a=5;

if(P=a!=0)

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

else

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

}

执行后输出结果是【】。

38.下列程序的运行结果是______。

#definePOWER(x)((x)*(x))

main()

{inti=1;

printf("%d,%d",POWER(i++),i);

}

39.下列程序段的输出结果是【】。

main()

{charb[]="Hello,you";

b[5]=0;

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

}

40.算法的复杂度主要包括时间复杂度和______复杂度。

三、1.选择题(20题)41.下面程序的输出结果是()main(){inta=-1,b=4,k;k=(a++<=0)&&(!(b--<=0));prinft("%d%d\n",k,a,b);}

A.003B.012C.103D.112

42.有以下程序:main(){inta=1,b=2,m=0,n=0,k;k=(n=b>a)||(m=a>b);printf("%d,%d\n"m,k,m);}程序运行后的输出结果是()。

A.0,0B.O,1C.1,0D.1,1

43.下列程序的运行结果是()。#include<stdio.h>#defineADD(x)x+xmain(){intm=1,n=2,k=3;ints=ADD(m+n)*k;printf("s=%d",s);}

A.sum=18B.sum=10C.sum=9D.sum=25

44.有以下程序main(){inta=3,b=4,c=5,d=2;if(a>B)if(b>C)printf("%d",d+++1);elseprintf("%d",++d+1);printf("%d\n",D);}程序运行后的输出结果是

A.2B.3C.43D.44

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

A.数据的逻辑结构与存储结构必定是一一对应的

B.由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构

C.程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构

D.以上三种说法都不对

46.软件(结构)设计阶段产生的文档是______。

A.程序流程图B.系统功能说明书C.系统模型说明书D.模块结构图和模块说明书

47.字符(char)型数据在微机内存中的存储形式是______。

A.反码B.补码C.EBCDIC码D.ASCII码

48.以下各选项企图说明一种新的类型名,其中正确的是______。

A.typedefv1int;

B.typedefv2=int;

C.typedefintv3;

D.typedefv4:int

49.关系表中的每一横行称为一个()。A.元组B.字段C.属性D.码

50.下列循环体的执行次数是()。#include<stdio.h>main(){inti,j;for(i=0j=1;i<j+1;i+=1,j--)printf("%d\n",j);}

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

51.能将高级语言程序转换成目标语言程序的是______。

A.调试程序B.解释程序C.编译程序D.编辑程序

52.以下不能正确计算代数式sm2()值的C语言表达式是

A.1/3*sin(1/2)*sin(1/2)

B.sin(0.5)*sin(0.5)/3

C.pow(sin(0.5),2)/3

D.1/3.0*pow(sin(1.0/2),2)

53.下列可作为C语言赋值语句的是______。

A.x=3,y=5;B.a=b=6;C.i--;D.y=int(x);

54.表示关系a≤b≤c的C语言表达式为()。

A.(a<=B)&&(b<=C)

B.(a<=B)and(b<=C)

C.(a<=b<=C)

D.(a<=B)&(b<=C)

55.在位运算中,操作数每右移两位,其结果相当于()。

A.操作数乘以2B.操作数除以2C.操作数除以4D.操作数乘以4

56.若有说明inti,j=2,*p&i;,则能完成i=j赋值功能的语句是______。

A.i=*p;B.*p=*&j;C.i=&j;D.i=**p;

57.下列二维数组的说明中,不正确的是()。

A.floata[][4]={0,1,8,5,9};

B.inta[3][4]

C.#defineN5floata[N][3]

D.inta[2][9.5];

58.以下程序的输出结果是main(){charx=040;printf(“%o\n”,x<<1);}

A.100B.80C.64D.32

59.已知在ASCII代码中,字母A的序号为65,下列程序的输出结果是______。#include<stdio.h>main(){charc1='A',c2='Y';printf("%d,%d\n",c1,c2);}

A.因输出格式不合法,输出错误信息B.65,90C.'A','Y'D.65,89

60.以下程序的输出结果是#include<stdio.h>voidprt(int*x,int*y,int*z){printf("%d,%d,%d\n",++*x,++*y,*(z++));}main(){inta=10,b=40,c=20;prt(&a,&b,&c);prt(&a,&b,&c);}

A.11,42,3112,22,41

B.11,41,2012,42,20

C.11,21,4011,21,21

D.11,41,21.12,42,22

四、选择题(20题)61.(72)n个顶点的强连通图的边数至少有______。

A.n-1

B.n(n-1)

C.n

D.n+1

62.有如下程序

#defineN2

#defineMN+1

#defineNUM2*M+1

main()

{

inti;

for(i=1;i<=NUM;i++)

printf("%d\n",i);

}

该程序中for循环执行的次数是

A.5B.6

C.7D.8

63.

64.

65.

66.(64)在单链表中,增加头结点的目的是()

A.方便运算的实现

B.使单链表至少有一个结点

C.标识表结点中首结点的位置

D.说明单链表是线性表的链式存储实现

67.有以下程序main(){union{charch[2];intd;}s;s.d=0x4321;printf("%x,%x\n",s.ch[0],s.ch[1]);}在16位编译系统上,程序执行后的输出结果是______。A.21,43B.43,21C.43,00D.21,00

68.给出以下定义:

则正确的叙述为()。

A.数组m和数组n等价B.数组m和数组n的长度相同C.数组m的长度小于数组n的长度D.数组m的长度大于数组n的长度

69.设有下列二叉树:

对此二叉树中序遍历的结果为()。

A.ACBDEFB.DEBFCAC.ABDECFD.DBEAFC

70.计算机能直接执行的程序是()。

A.源程序B.目标程序C.汇编程序D.可执行程序

71.

下列程序的运行结果为()。

#defineMAX(x,y)(x)>(y)?(x):(y)

main

{inta=2,b=3,C=1,d=3,t:

printf("%d\n",(MAX(a+h,c+d))*100):

}

A.500B.5C.4D.400

72.

73.

74.有以下说明和定义语句

structstudent

{

intage;charnum[8];

};

structstudentstu[3]={{20,"200401"},{21,"200402"},{10\9,"200403"}};

structstudent*p=stu;

以下选项中引用结构体变量成员的表达式错误的是

A.(p++)->numB.p->numC.(*p).numD.stu[3].age

75.

76.有以下程序:

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

A.一263B.2C.0D.一26

77.

有以下程序:

voidswap(char*x,char*y)

{chart;

t=*x;*x=*y;*y=t;

}

main

{char*s1="abe",*s2="123":

swap(s1,s2);

printf("%s,%s\n",s1,s2);

}

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

A.123,abeB.abc.123C.1bc,a23D.321,cba

78.有以下程序

#include<stdio.h>

voidprt(int*x,int*y,int*z)

{printf("%d,%d,%d\n",++*x,++*y,*z++);}

main()

{inta=10,b=40,c=20;

prt(&a,&b,&c);

prt(&a,&b,&c);

}

程序的输出结果是

79.

80.有下列程序

main()

{

inta[5]={2,4,6,8,10},*p,**k;

p=a;

k=&p;

printf("%d",*(p++));

printf("%d\n",**k);

}

运行该程序,其输出结果是

A.4B.22

C.24D.46

五、程序改错题(1题)81.下列给定程序中,函数proc的功能是:从字符串str中,删除所有大写字母F。请修改程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdio.h>voidproc(char*str){inti,j;//****found****for(i=j=0;str[i]一0;i++)if(str[i]!=F)//****found****str[i]=str[i];str[j]=\0;}voidmain{charstr[80];printf("\nEnterastring:");gets(str);printf("Theoriginalstring:");puts(str);proc(str);printf("Thestringafterdeleted:");puts(str);printf("\n\n");}

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),其功能是将一个数字字符串转换成与其面值相同的长整型整数。可调用strlen函数求字符串的长度。例如,在键盘输入字符串2345210,函数返回长整型整数2345210。注意:部分源程序存放在文件prog1.c中,请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()指定的部位填入所编写的若干语句。试题程序:

参考答案

1.A

2.A解析:结构体变量的长度是其内部成员总长度之和,在本题中,structdate中包含year,month,day三个整型变量。通常一个整型变量占2个字节,因此,用sizeof求得该结构体变量的长度为6个字节。

3.A“sizeof(FILE*)=4”,因为“file*”为指针,指针变量占用字节数为4,所以“sizeof(int*)=4”,选项A正确。文件指针的值是地址,是一个十六进制数,它的值不一定小于文件字节数,因此选项B错误。文件指针是所指文件的当前读取位置,而不是文件指针的值,因此选项C错误。“intfscanf(FILE*Stream,constchar*format,[argument...]);”,fScanf函数可以向任意类型的文件写入任意数量的数据(不能超过系统的缓冲区),写文件先写入缓冲区,最后一起写入文件,因此选项D错误。故本题答案为A选项。

4.B

\n①以内模式为框架所组成的数据库,1物理数据库;②以概念模式为框架所组成的数据库叫概念数据库;③以外模式为框架所组成的数据库叫用户数据库。它是真实存在于计算机外存中的数据库。

\n

5.D解析:如果是指针型变量或数组名,则变量前不加地址符号&,所以选项A的说法有误。必须有地址列表项才能实现正确输入,所以选项B的说法有误。在输入数据时,不可以指定实型数据的精度,所以选项C的说法有误。只有选项D的说法正确。

6.D解析:栈是仅在表头和表尾进行插入和删除元素操作的线性表,其特点是“先进后出”。本题中,进栈的过程中可以出栈。选项D中,如果第一个出栈的元素为e3,由于入栈顺序是e1、e2、e3,那么e3出栈后,栈中元素必定有e1和e2,因为e1先入栈,故e1应在e2后出栈,所以选项D是不可能的出栈顺序。

7.BC语言中,字符串是用一对双引号标识的字符序列,并用字符型数组来存放。C选项和D选项不属于字符串,A选项定义的是一个字符变量str,但赋值字符串,显然也不正确。故本题答案为B选项。

8.D解析:本题主要考查关于if语句的说明,if后面圆括号中的表达式,可是任意合法的C语言表达式(如:逻辑表达式、关系表达式、算术表达式、赋值表达式等),也可以是任意类型的数据(如:整型、实型、字符型、指针型等。)

9.C本题中“if(a=1)b=1”与“elsed=3;”之间多了语句“c=2;”,所以会出现else语句的位置错误的编译失败提示。故本题答案为C选项。

10.A

11.B

12.C

13.B

14.C

15.D

16.B

\n本题考查结构体指针变量的赋值方法,要把结点b连接到结点;l的后面,必须把b的地址给a的next指针。故8正确。

\n

17.B本题中要求输出右上半角的数,对角线上的数的下标相同,所以j=i。

18.A解析:当执行switch语句时,首先计算紧跟其后一对括号中的值,然后在语句体内寻找与该值吻合的case标号。若相等,则执行该标号后开始的各语句,包括在其后的所有case和default后的语句,直到switch语句体结束。

19.B该程序首先给一维数组赋值,然后三次调用fun函数,其中fun(a,0,3);功能是将一维数组中第1个元素和第4个元素互换,第2个元素和第3个元素互换;其中fun(a,4,9);功能是将一维数组中第5个元素和第10个元素互换,第6个和第9个元素互换,第7个元素和第8个元素互换;其中fun(a.O,9);功能是将将一维数组中第l个元素和第10个元素互换,第2个元素和第9个元素互换……依此类推。因此B选项正确。

20.A

21.abcfgabcfg解析:fun函数中for循环语句的作用是将s所指的字符串中从第5个字符到第7个字符依次向前移动两个位置。输出结果为abcfg。

22.存储结构

23.左左解析:对二叉排序树进行查找,若待查的值与根结点的值相比,若比根小,则继续在左子树中找;若比根大,则在右子树中找。

24.malloc(11)malloc函数的格式是void*(或char*)malloc(size),size表示应分配的存储区,此题要分配11字节的单元,把11代入即可。

25.=-ffun(10)=-f\r\nfun(10)解析:本题要求调用fun()函数计算m的值,故在主函数中的空白处应该填调用fun()函数的语句。fun()函数有一个形参n,为每次参加计算的值个数,故在主函数中的空白处应该填fun(10),在fun()函数中用到了一个for循环,共循环n次,当循环第i次的时候,m的值等于m=1-2+…+[(-1)的i-1次方]*i,所以在fun()函数的空白处应该填使f改变符号的语句,故应填-f或其他等价形式。

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

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

28.AUTOEXEC.BAT

29.char*from*to*to='\0'copy_string(ab)char*from,*to\r\n*to='\\0'\r\ncopy_string(a,b)解析:函数copy_string()用到了形参from,to是指针变量,实参a、b是字符串指针,第一个空格应填形参说明语句“char*from,*to”。当from所指的字符串全部复制给to所指的字符串时,有可能to所指原字符串长度大于from所指字符串长度,即可能to所指串的后面字符仍留在复制后的to所指串中。为避免这种情况,必须在from所指串复制完后,马上给to所指串加上串结束符。因此,第二个空格应填*to='\\0'。main()函数应调用copy_string()函数,第三个空格应填copy_string(a,b)。

30.xx解析:函数的定义形式为;

函数类型函数名(形参表)

{

类型说明语句;

执行语句;

}

本题中函数的功能是:累积变量以求得变量的Y次方。

31.强制类型转换强制类型转换

32.88解析:本题考查带参数的宏定义及相关运算.运算过程为:t=B*2=A+3*2=2+3*2=8。

33.算法或程序或流程图算法或程序或流程图解析:算法是问题处理方案正确而完整的描述。

34.1011

35.1000001010000010解析:运算“&”的规则是只有当两个相应的二进制位都为1时,该位的结果才为1。要保留第2、8位,只要将其与二进制数10000010相与。

36.

37.11解析:首先计算if语句后面的表达式,根据运算符的优先级可知,先算“a!=0”,该值为1,再把1赋值给p,结果为1(真),执行其后的printf语句,输出的值为1。

38.111,1解析:POWER(i++)中先引用i的值1,再将i的值加1,POWER(i++)=1*1=1。

39.HelloHello解析:字符串中,数值0或符号'/0'表示字符串的结束。本题中,b[5]被赋了0值,表明字符串b的第六个字符就是结束标志。因此,只输出前五个字符,即Hello。

40.空间空间解析:算法的复杂度主要包括时间复杂度和空间复杂度。所谓算法的时间复杂度,是指执行算法所需要的计算工作量。一个算法的空间复杂度,一般是指执行这个算法所需要的内存空间。

41.C

42.C解析:在||运算中当其左边的表达式为真,右边的表达式将不再执行。主函数中,||左边的表达式k=(n=b>a),2>1为真,所以n被赋值为1,接着k被赋值1,即||运算符左边表达式为真,此时不再计算||右边的表达式,因此m的值没有被改变仍为0,最后的输出结果1,0。所以,4个选项中选项C符合题意。

43.B解析:本题考查带参数的宏的定义及相关运算:S=m+n+m+n*k=1+2+1+2*3=10。

44.A解析:本题考核的知识点是if-else语句的程序分析。我们首先看程序中if-else的匹配,由于C语言中规定else总是与最近的if搭配,因此程序中else与第二个订搭配,即该if-else语句为第一个if语句的执行部分,接着判断第一个if后面括号里的表达式的值“a>b”为假('3>4'为假),因此不执行后面if-else语句,程序将执行下面的输出语句输出d,而d一直未被改变故为原来的值2,所以,4个选项中选项A符合题意。

45.D解析:一般来说,一种数据的逻辑结构根据需要可以表示成多种存储结构,因此,数据的逻辑结构与存储结构不一定是一一对应的。选项A中的说法是错误的。虽然计算机的存储空间是向量式的存储结构,但由于一种数据的逻辑结构根据需要可以表示成多种存储结构,例如,线性链表是线性表的链式存储结构。一般来说,性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致。性链表中,各数据元素之间的前后件关系是由各结点的指针域来指示的。因此,数据的存储结构不一定是线性结构。选项B中的说法也是错误的。虽然程序设计语言中的数组一般是顺序存储结构,但是,利用数组也能处理非线性结构。例如,满二叉树与完全二叉树是非线性结构,但对于满二叉树与完全二叉树来说,根据完全二叉树的性质6,可以按层序进行顺序存储,即利用程序设计语言中的数组来存储,这样,不仅节省了存储空间,又能方便地确定每一个结点的父结点与左右子结点的位置。对于一般的二叉树来说,也可以将二叉树中每一个结点的左指针、右指针以及数据域分别用三个数组中的对应元素来存储,即实际上也是利用了程序设计语言中的数组来处理二叉树这样的非线性结构。选项C中的说法也是错误的。综上所述,选项A、B与C中的说法都是错误的。

46.D

47.D解析:将—个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符的ASCII码值放到存储单元中。

48.C解析:C语言中可以使用typedef来重新定义已有的数据类型,相当于为数据类型取个别名。

49.A解析:关系表中,每一行称为一个元组,对应表中的一条记录;每一列称为表中的一个属性,对应表中的一个字段;在二维表中凡能惟一标识元组的最小属性集称为该表的键或码。

50.C解析:本题考查for循环。第一次循环前先判断循环条件,此时i=0,j=1,i<j+1成立,循环第一次;第二次循环前先判断循环条件,此时i=1,j=0,(j--是先使用j的值再减1),i<j+1不成立,结束循环。

51.C解析:用高级语言编写的程序称为“源程序”,而计算机只能识别和执行由O和1组成的二进指令,所以高级语言必须先用—种称为“编译程序”的软件,把源程序翻译成二进制形式的“目标程序”。

52.A解析:当运算符“/”的左右两边运算分量都是整数的时候,运算结果也是一个整数,如果除不净则舍去小数部分。若两个运算分量有一个是实数,才会返回真正除法上的实数结果。选项A中传递给sin()函数的参数表达式1/2计算出来的结果为整数0,所以不能正确计算出题目要求的值,而其余选项中,除号两边都至少有一个运算分量是实数,故应该选择A。

53.C

54.A解析:本题考查逻辑与运算符&&。在C语言中使用运算符“&&”连接两个表达式,也可以表示逻辑与运算符。在C语言中不允许出现a<=b<=c这种格式。

55.C解析:在位运算中,操作数每右移两位,相当于在操作数的左侧添0,最右面的两位被移出,即操作数除以4。

56.B解析:指针是一种用来存放变量地址的特殊变量。本题中指针变量P用于存放整型变量i的地址,改变*P的值即为改变i的值。又因为“&”和“*”两个运算符的优先级别相同,按自右而左的方向结合,所以*&j先进行&j运算,得j的地址,再进行*运算,取所得地址里面的值,故*&j与j等价。

57.D解析:C语言规定,对于二维数组,只可以省略第一个方括号中的常量表达式,而不能省略第二个方括号中的常量表达式:二维数组的一般定义格式是:类型说明符数组名[常量表达式][常量表达式]。

58.A解析:首先将八进制040转换成二进制数000100000,在将此二进制数左移一位为001000000,输出时转换成八进制数100。

59.D

60.B解析:尽管C语言以传值方式进行函数调用,但也可以通过传递指针的值(变量的地址)来达到修改实参变量值的目的,这是此题主要说明的问题。其次,应注意表达式。(z++)的值是*z,其后的z++在程序中无实际作用。函数调用时,由于x,y和z分指向a,b和c,因此,*x,*y和*z就是a,b和c。第一次调用函数时,*x=a=10,*y=b=40,*z=c=20输出结果为11,41,20,至此,已经可以肯定选项B)是正确的。在第一次输出后,a=11,b=41,c=20,第二次输出为:12,42,20。注意:指针作为参数的函数调用的执行过程。

61.C

62.B分别将N、M的宏定义代入NUM的表达式中,可以得到NUM=2*2+1+1=6,所以当常数NUM作为for循环的终止条件时,应当循环6次。

63.D

64.C

65.D

66.A

67.A结构体和共用体;在“联合”中,各成员共享一段内存空间,一个联合变量的长度等于各成员中最长的长度。应该说明的是,这里所谓的共享不是指把多个成员同时装入一个联合变量内,而是指该联合变量可被赋予任一成员值,但每次只能赋一种值,赋入新值则冲去旧值

68.D按照m方式声明的数组,系统会在数组尾部自动添加字符’\0’,因此m的长度比n大l。

69.D前序遍历:ABDECF\n中序:DBEAFC\n后序:DEBFCA

70.D计算机能直接执行的程序是可执行程序,其扩展名为.exe。故本题答案为D选项。

71.A

\n本题考查带参数宏的定义,运算符:(x)>(y)?(x):(y)当表达式为真时输出X,否则输出Y,调用(MAX(a+b,c+d))*100时,(a+b=5)>(c+d=4),输出a+b=5,所以x=5*100。

\n

72.C

73.D

74.D引用形式有以下三种:①结构体变量.成员名;②(*p).成员名;③p→成员名。所以A、B、C答案都是正确的。故本题答案为D。

75.B

76.Dis

温馨提示

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

评论

0/150

提交评论