2021年甘肃省酒泉市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第1页
2021年甘肃省酒泉市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第2页
2021年甘肃省酒泉市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第3页
2021年甘肃省酒泉市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第4页
2021年甘肃省酒泉市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

2021年甘肃省酒泉市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.有以下程序:#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

2.若有以下说明:chars1[]={"tree"},s2[]={"flower"};,则以下对数组元素或数组的输出语句中,正确的是()。

A.printf("%s%s",s1[5],s2[7]);

B.printf("%c%c",s1,s2);

C.puts(s1);puts(s2);

D.puts(s1,s2);

3.设有一个栈,元素依次进栈的顺序为A、B、C、D、E。下列()是不可能的出栈序列。

A.A,B,C,D,EB.B,C,D,E,AC.E,A,B,C,DD.E,D,C,B,A

4.以下函数的时间复杂度和空间复杂度为()A.T(n)=O(2^n),S(n)=O(n)

B.T(n)=O(1),S(n)=O(1)

C.T(n)=O(2^n),S(n)=O(1)

D.T(n)=O(n),S(n)=O(n)

5.以下只有在使用时才为该类型变量分配内存的存储类型说明是()。

A.auto和static

B.auto和register

C.register和static

D.extern和register

6.在数据结构中,与所使用的计算机无关的是数据的()结构。

A.逻辑B.存储C.逻辑和存储D.物理

7.下面程序的输出结果是()。

#include<stdio.h>

main()

{inta[4][5]={1,2,4,-4,5,-9,3,6,-3,2,7,8,4};

inti,j,n;

n=9;

i=n/5;

j=n-i*5-1;

printf("a[%d][%d]=%d\n",i,j,a[i][j]);

}

执行后输出结果是()。A.A.a[1][3]=6

B.a[1][3]=-3

C.a[1][3]=2

D.不确定

8.现有二叉搜索树(BST)前序遍历结果序列为abdefgc,中序遍历结果序列为debgfac,请问后序遍历结果序列为()

A.debgfaCB.edgfbcAC.edgbfcAD.degbfaC

9.有以下程序:main{inta=0,b=0;a=10;/*给a赋值b=20;给b赋值*/printf(“a+b=%d\n”,a+b);/*输出计算机结果*/}程序运行后的输出结果是()。A.a+b=10B.a+b=30C.30D.出错

10.对于哈希表,如果将装填因子α定义为表中装入的记录数与表的长度之比,那么向表中加入新纪录时,()

A.α的值随时冲突次数的增加而递减

B.α越大发生冲突的可能性越大

C.α等于1时不会再发生冲突

D.α低于0.5时不会发生冲突

11.有下列程序:fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printf("%d,",k);k=fun(j,m);printf("%d\n",k);}执行后的输出结果是()。

A.5,5B.5,11C.11,11D.11,5

12.在非线性结构中,每个结点()。

A.无直接前趋

B.只有一个直接前趋和个数不受限制的直接后继

C.只有一个直接前驱和后继

D.有个数不受限制的直接前驱和后继

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

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

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

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

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

14.若以“a+”方式打开一个已存在的文件,则下列叙述正确的是()。

A.文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可以进行添加或读操作

B.文件打开时,原有文件内容不被删除,只能进行读操作

C.文件打开时,原有文件内容被删除,只能进行写操作

D.以上三种说法都不正确

15.栈和队列的共同点是()。

A.都是先进先出B.都是先进后出C.只允许在端点处插入和删除元素D.没有共同点

16.一个递归的定义可以用递归过程求解,也可以用非递归过程求解,但单从运行时间来看,通常递归过程比非递归过程()。

A.较快B.较慢C.相同D.无法确定

17.在单链表指针为p的结点之后插入指针为s的结点,正确的操作是()。A.p->next=s;s->next=p->next;

B.s->next=p->next;p->next=s;

C.p->next=s;p->next=s->next;

D.p->next=s->next;p->next=s;

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

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

19.顺序查找不论在顺序线性表中还是在链式线性表中的时间复杂度为()。

A.O(n)B.O(n^2)C.O(n^1/2)D.O(1og2n)

20.若变量已经定义且正确赋值,则针对程序段“temp=a;a=b;b=temp;”,以下叙述中正确的是()。

A.C语言的顺序结构不允许将多条语句写在一行里

B.程序顺序结构对于此段程序是从左至右依次执行的

C.此程序段的执行顺序是,先执行“b=temp;”,再执行“a=b;”,最后执行“temp=a;”

D.将此段程序的前两个分号改成逗号,后面一个不变,则不能实现a和b值的交换

二、2.填空题(20题)21.以下程序的功能是从名为filea.dat的文本文件中逐个读入字符并显示在屏幕上。请填空。

#include<stdio.h>

main()

{FILE*fp;charch;

fp=fopen(【】);

ch=fgetc(fp);

while(!feof(fp)){putchar(ch);ch=fgetc(fp);}

putchar('\n');fclose(fp);

}

22.有以下程序段,且变量已正确定义和赋值。

for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k/1));

printf("s=%f\n\",s);

请填空,使下面程序段的功能与之完全相同。

s=1.0;k=1;

while(【】){s=s+1.0/(k*(k+1));【】;}

printf("s-=%f\n\n",s);

23.以下程序的运行结果是【】。

#defineMAX(a,b)(a>b?a:b)+1

main()

{inti=6,j=8,k;

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

}

24.下面程序的功能是:计算1~10之间的奇数之和与偶数之和,请填空。

#include<stdio.h>

main()

{inta,b,c,i;

a=c=0;

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

{a+=i;

【】;

c+=b;}

printf("偶数之和=%d\n",a);

printf("奇数之和=%d\n",c-11);}

25.在数据库系统中,实现各种数据管理功能的核心软件称为【】。

26.设一棵完全二叉树共有700个结点,则在该二叉树中有【】个叶子结点。

27.软件定义时期主要包括______和需求分析两个阶段。

28.数据独立性分为逻辑独立性与物理独立性。当数据的存储结构改变时,其逻辑结构可以不变,所以,基于逻辑结构的应用程序不必修改,称为【】。

29.算法的复杂度主要包括【】复杂度和空间复杂度。

30.以下程序中,函数SumColumMin的功能是:求出M行N列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。请填空。

#defineM2

#defineN4

voidSumColumMin(inta[M][N],int*sum)

{inti,j,k,s=0;

for(i=0:i<N;i++)

{k=0:

for(j=1;j<M;j++)

if(a[k][i]>a[j][i]k=j;

s+=______;

}

______=s:

}

main()

{intx[M][N]={3,2,5,1,4,1,8.3},s;

sumColumMin(______)

printf("%d\n".s):

}

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

#defineBA+3

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

32.性表的多种存储结构中,最简单的方法是【】。

33.若a=10,b=20,则表达式!(a<b)的值是【】。

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

#include<stdio.h>

main()

{intx=10,y=10,i;

for(i=0;x>8;y=++i)

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

}

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

main()

{

inta=1,b=2;

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

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

}

36.数据库设计分为以下6个设计阶段:需求分析阶段、______、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。

37.用树型结构表示实体类型及实体间联系的数据模型称为【】。

38.本程序用冒泡法对数组a[]的元素从大到小排序,请在程序空白处填空。voidbubble(inta[],intn){inti,j,max,temp;max=n-1;do{j=0;for(i=0;i<max;i++)if(a[i]<a[i+1]){temp=a[i];a[i]=a[i+1];a[i+1]=temp;j=i;}max=j;}while(());}

39.请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。

【】(double,double);

main()

{doublex,y;

scanf("%1f%1f",&x,&y);

printf("%1f\n",max(x,y));

}

doublemax(doublea,doubleB)

{return(a>b?a:b);}

40.软件测试分为白箱(盒)测试和黑箱(盒)测试。基本路径测试方法属于()测试。

三、1.选择题(20题)41.有定义语句:“intx,y;”,若要通过“scanf("%d,%d,&x,&y);”语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是

A.1112<回车>B.11,12<回车>C.11,12<回车>D.11,<回车>12<回车>

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

A.if(x++);

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

C.if(x>y)x--elsey++:

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

43.有以下程序:#include<stdio.h>main(){char*p,*q;p=(char*)malloc(sizeof(char)*20);q=p;scanf("%s%s",p,q);printf("%s%s\n",p,q);}若从键盘输入;abcdef<回车>,则输出结果是______。

A.defdefB.abcdefC.abedD.dd

44.下列选项中不符合良好程序设计风格的是A.源程序要文档化B.数据说明的次序要规范化C.避免滥用goto语句D.模块设计要保证高耦合、高内聚

45.有以下程序:main(){union{unsignedintn;unsignedcharc;}u1;u1.c='A';printf("%c\n",u1.n);}执行后输出结果是()。

A.产生语法错误B.随机值C.AD.65

46.有以下程序:#include<stdio,h>voidswap1(intc0[],inte1[]){intt;t=c0[0];c0[0]:c1[0];c1[0]=t;}voidswap2(int*c0,int*c1){intt;t=*c0;*c0=*c1;*c1=t;}main(){inta[2]={3.5}.b[2]={3,5};swapl(a,a+1);swap2(&b[0],&b[1]);printf("%d%a%d%d\n",a[0],a[1],b[0],b[1]);}程序运行后的车出结果是()。

A.3553B.5335C.3535D.5353

47.有以下程序:main(){unsignedchara,b,c;a=0x3;b=a|0x8;c=b<<1;printf("%d%d\n",b,C);}程序运行后的输出结果是()。

A.-1112B.-6-13C.1224D.1122

48.若i、j已定义成int型,则以下程序段中内循环体的总执行次数是()。for(i=6;i>0;i--)for(j=0;j<4.j++){…}

A.20B.24C.25D.30

49.有以下程序voidswapl(intc[]){intt;t=c[0];c[0]=c[1];c[1]=t;}voidswap2(intc0,intc1){intt;t=c0;c0=c1;c1=t;}main(){inta[2]={3,5},b[2]={3,5};swapl(a);swap2(b[0],b[1]);printf("%d%d%d%d\n",a[0],a[1],b[0],b[1]);}其输出结果是:

A.5353B.5335C.3535D.3553

50.设有如下定义,则执行表达式(nFa>b)&&(n=c>d)后,n的值为______。inta=1,b=2,c=3,d=4,m=2,n=2;

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

51.在一棵二叉树上第8层的结点数最多是_______。

A.8B.16C.128D.256

52.以下错误的定义语句是A.intx[][3]={{0},{1},{1,2,3}};

B.intx[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};

C.intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};

D.intx[][3]={1,2,3,4};

53.树是结点的集合,它的根结点数目是()。

A.有且只有1B.1或多于1C.0或1D.至少2

54.有以下程序(提示:程序中fseek(fp,-2L*sizeof(int),SEEK_END);语句的作用是使位置指针从文件末尾向前移2*sizeof(int)字节)#include<stdio.h>main(){FILE*fp;inti,a[4]={1,2,3,4},b;fp=fopen("data.dat","wb");for(i=0;i<4;i++)fwrite(&a[i],sizeof(int),1,fp);fclose(fp);fp=fopen("data.dat","rb");fseek(fp,-2L*sizeof(int),SEEK_END);fread(&b,sizeof(int),1,fp);/*从文件中读取sizeof(int)字节的数据到变量b中*/felose(fp);printf("%d\n",b);}执行后输出结果是

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

55.在下列叙述中,正确的一条是______。

A.对while循环、do-while循环和for循环,可以用continue语句跳出循环

B.表达式1+2<<3和sizeof(3.8)的结果分别为24和8

C.函数fputc(c,stdout)与putchar(c)的结果相同

D.在有参函数中,定义函数中指定的形参变量在程序一开始执行时便分配内存单元

56.栈和队列的共同特点是()。

A.都是先进先出B.都是先进后出C.只允许在端点处插入和删除元素D.没有共同点

57.对建立良好的程序设计风格,下列描述正确的是()。

A.程序应该简单、清晰、可读性好B.符号名的命名只需要符合语法C.充分考虑程序的执行效率D.程序的注释可有可无

58.字符串"\\\"ABCDEF\"\\"的长度是()。

A.15B.10C.7D.8

59.某二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为()

A.n+1B.n-1C.2nD.n/2

60.利用fseek函数可实现的操作是()。

A.实现文件的顺序读写B.改变文件的位置指针C.实现文件的随机读写D.以上答案均正确

四、选择题(20题)61.有如下程序:

main()

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

switch(x)

{

case0:b++;

casel:a++;

case2:a++;b++;

}

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

}

该程序的输出结果是()。

A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2

62.已定义以下函数:

fun(char*p2,char*p1)

{while((*p2=*p1)!=’\0’){p1++;p2++;}}

函数的功能是()。

A.将p1所指字符串复制到p2所指向内存空间

B.将p1所指字符串的地址赋给指针p2

C.对p1和p2两个指针所指字符串进行比较

D.检查p1和p2两个指针所指字符串中是否有’\0’

63.有如下程序

#include"stdio.h"

main()

{inta,b,m;

for(a=5;a>=1;a--)

{m=0;

for(b=a;b<=5;b++)

m=m+a*b;

}

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

}

上述程序的运行结果是

A.30B.15

C.20D.10

64.设intx=7,则~x的值是()。

A.-8B.7C.-1D.1

65.

66.现有格式化输入语句,

已知在输入数据后,

x,Y,z的值分别是23,56,78,则下列选项中正确的输入格式是()。

A.23,56,78<Enter>

B.x=23,y=56,z=78<Enter>

C.x=23C,sumy=56,z=78<Enter>

D.x=23],sum]y=56,line]z=78<Enter>

67.

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

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

69.有以下程序:

程序的运行结果是()。

A.1234B.5678C.9101112D.1111

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

A.一个逻辑数据结构只能有一种存储结构

B.逻辑结构属于线性结构,存储结构属于非线性结构

C.一个逻辑数据结构可以有多种存储结构,且各种存诸结构不影响数据处理的效率

D.一个逻辑数据结构可以有多种存储结构,且各种存诸结构影响数据处理的效率

71.

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

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

73.检查软件产品是否符合需求定义的过程称为()。

A.确认测试B.集成测试C.验证测试D.验收测试

74.有如下程序

main()

{

inta=2,b=-1,c=2;

if(a<b)c=1;

if(b<0)c=0;

elsec++;

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

}

该程序的输出结果是

A.0B.1

C.2D.3

75.

76.以下叙述中错误的是______。A.C语言中对二进制文件的访问速度比文本文件快

B.C语言中,随机文件以二进制代码形式存储数据

C.语句FILEfp:定义了一个名为fp的文件指针

D.C语言中的文本文件以ASCII码形式存储数据

77.(73)已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是()

A.堆排序

B.直接插入排序

C.快速排序

D.直接选择排序

78.

79.有以下程序:

程序的运行结果是()。

A.0B.9C.6D.8

80.

五、程序改错题(1题)81.下列给定程序中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值。从第l项起,斐波拉契数列为:1,1,2,3,5,8,13,21,…例如,若给n输入7,则该项的斐波拉契数值为l3。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>longfun(intg){//****found****switch(g);{case0:return0;//****found****casel:case2:return1;}return(fun(g-1)+fun(g-2));}voidmain{longfib;intn;printf("Inputn:");scanf("%d",&n);printf("n=%d\n",n);fib=fun(n);printf("fib=%d\n\n",fib);}

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

参考答案

1.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选项。

2.C

3.C

4.A

5.B在用静态static与外部extern定义变量时,系统立刻给其分配内存,而定义自动类auto与强制放入寄存器register类型变量时,只有当使用时才分配内存。

6.A

7.Bn=9,i=n/5=1;j=9-1*5-1=3,输出为a[1][3]=-3

8.B

9.AC语言规定,注释语句可以换行写,并且一个“/*”和其后紧跟的第一个“*/”中间的部分是注释内容,并且注释部分的内容不参与程序的执行,因此本题中没有执行“b=20”;这条语句。

10.B

11.B解析:子函数fun(intx,inty),将变量m和i声明为局部静态变量,因此第1次调用主函数后,局部静态变量m和i的值为5和3,第1次函数调用结束时,它们的值不释放保持不变,所以第2次调用时,局部静态变量m和i的初始值分别为5和3,即在执行“i+=m+1”时,i的值为9,因此最终m的值为11。

12.D

13.D形参是定义函数时由用户定义的。实参是函数调用时,主调函数为被调函数提供的原始数据。在C语言中,实参向形参传送数据的方式是“值传递'是单向传递。故本题答案为D选项。

14.A解析:本题考查文件使用方式标识符,以“a+”方式打开一个已存在的文件,则表示保留文件中原有的数据,文件的位置指针在文件末尾,此时,可以进行追加或读操作。

15.C解析:栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种“后进先出”(或“先进后出”)的线性表;而队列只允许在表的一端进行插入操作,在另一端:进行删除操作,是一种“先进先出”(或“后进后出”)的线性表。因此栈和队列的共同点是只允许在端点处插入和删除元素。

16.B

17.B

18.D

19.A

20.BC语言允许将多条语句写在一行,选项A错误;题干中的语句是从左至右依次执行的,选项B正确,选项C错误。题干中的程序前两个分号改成逗号,就构成了逗号表达式。逗号表达式会依次从左到右计算各个表达式,整个表达式的值是最后一个表达式的值,所以此例也可以实现a和b值的交换,选项D错误。故本题答案为B选项。

21.“filea.dat”“r”“filea.dat”,“r”解析:考查对文件的操作。fopen函数的调用方式通常为fopen(文件名,使用文件方式)。本题中要求程序可以打开filea.dat文件,并且是要读取文件中的内容,所以空白处应当填入'filea.dat','r'。

22.k<=n或n>=kk++k<=n或n>=k\r\nk++解析:while语句和for语句的作用都是循环控制语句的执行,两者之间是可以互相转换的。将while(EXP)转换为for语句可以写成for(;EXP;);将for(EXP1;EXP2;EXP3)转换为while语句可以写成:EXP1;while(EXP2){...EXP3;}。故本题的两个空分别应填写for语句的第2和第3个表达式。即k<=n或n>=k和k++。当然也可写成与之等价的其他形式。

23.99解析:本题考查宏定义与三目运算符的综合用法,宏定义是原样替换,本题中,如果a>b成立,则a+1的值为整个表达式的值,否则为b+1的值为整个表达式的值,(应注意后面的加1)。

24.b=i+1b=i+1解析:本题考查了for循环语句的执行过程。i+=2是修正表达式,执行一次循环体后i的值就增加2,i的初始值为0,每次加2之后和累加至a,所以a的值就是1~10之间的偶数之后;b的值是1~11之间的奇数和,但在输出b值时c去掉多加的11,即为1~10之间的奇数之和。

25.数据库管理系统或DBMS数据库管理系统或DBMS解析:数据库管理系统(DatabaseManagementSystem,DBMS)是一种操纵和管理数据库的大型软件,是用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过DBMS访问数据库中的数据,数据库管理员也通过DBMS进行数据库的维护工作。它提供多种功能,可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。因此,数据库系统中,数据库管理系统是实现各种数据管理功能的核心软件。本题的答案是数据库管理系统或DBMS。

26.350350解析:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。在根据完全二叉树的定义,在一棵完全二叉树中,最多有1个度为1的结点。因此,设一棵完全二叉树具有n个结点,若n为偶数,则在该二叉树中有n/2个叶子结点以及n/2-1个度为2的结点,还有1个是度为1的结点:若n为奇数,则在该二叉树中有[n/2]+1个叶子结点以及[n/2]个度为2的结点,没有度为1的结点。本题中,完全二叉树共有700个结点,700是偶数,所以,在该二叉树中有350个叶子结点以及349个度为2的结点,还有1个是度为1的结点。所以,本题的正确答案为350。

27.可行性研究可行性研究解析:软件生命周期一般包括可行性研究与需求分析、设计、实现、测试、交付使用及维护等,还可以将软件生命周期分为三个阶段:①软件定义阶段:可行性研究和需求分析;②软件开发阶段:设计、实现和测试;③软件运行维护阶段:交付使用和维护。

28.物理独立性物理独立性解析:逻辑独立性是指,由于数据的局部逻辑结构与总体逻辑结构之间也由系统提供映像,使得当总体逻辑结构改变时,其局部逻辑结构叮以不变,从而根据局部逻辑结构编写的应用程序也可以不必修改。物理独立性是指,由于数据的存储结构与逻辑结构之间山系统提供映像,使得当数据的存储结构改变时,其逻辑结构可以不变,所以,基于逻辑结构的应用程序不必修改。

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

30.a[k][i]*sumx&s

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

32.顺序存储顺序存储

33.00解析:已知a=10,b=20,所以逻辑表达式a<b的值为true,即为1,在这个表达式前面有一个逻辑运算符!,表示反操作,所以整个语句的值应当为false,即为0。

34.101091101091解析:for(表达式1;表达式2:表达式3)语句的功能是:首先计算表达式1的值,然后检测表达式2的值,若其值为真,则执行循环体语句,执行完毕后,再计算表达式3的值。然后再检测表达式2的值是否为真,若为真,继续执行循环体语句,若为假,则退出循环:第1次循环x>8成立,输出x=10,y=10后,x的值减1,i=1,执行y=++i操作,y的值变为1;判断条件还成立,输出x=9,y=1,然后x的值减1,循环条件不成立,则退出循环。

35.212,1解析:本题中,执行a=a+b时,a=1,b=2,a=1+2=3,b=a-b时,a=3,b=2,b=3-2=1;a=a-b时,a=3,b=1,a=3-1=2;因此,本题的输出是2,1

36.概念设计阶段(数据库概念设计阶段)概念设计阶段(数据库概念设计阶段)

37.层次模型用树型结构表示实体类型及实体间联系的数据模型称为层次模型,用有向图结构表示实体类型及实体间联系的数据模型称为网状模型,用二维表格结构表示实体及其联系的数据模型称为关系模型。

38.max>0max>0解析:本题是典型的冒泡排序题,每一次for循环将从数组a中找出剩下数中的最大的值放在这些数的最前端,若数组a中有n个数,则完成数组排序共需n-1次循环。令max=n-1,每次循环后i值增1,i<max条件不足,即n-1次循环后,此时i=j=max=0,循环结束。

39.doublemax或externdoublemaxdoublemax或externdoublemax解析:本题中main()函数需要调用max()函数,在main()之前就需要声明函数max(),并且可以用extern说明符使变量的作用域扩充到需要用到它的函数,所以,填写doublemax(或externdoublemax)。

40.自盒自盒解析:自盒测试法即结构测试,它与程序内部结构相关,要利用程序结构的实现细节设计测试实例。白盒测试法主要有逻辑覆盖、基本路径测试等。

41.A解析:本题考核的知识点是scanf()函数的运用。seanf()函数有两个参数,第一个参数为输入格式字符串,第二个参数为输入变量地址列表,在scallf()语句中非格式字符可以作为输入时数据的间隔,输入时必须原样输入,在本题中输入格式串为%d,%d其中“,”为非格式字符,所以输入时必须原样输入。所以4个选项中选项A符合题意。

42.C解析:if是C语言的关键字,表达式两侧的圆括号不能少,最后一条语句足用花括号括起来的一组语句。选项A和B是在表达式后面跟了一条空语句,选项D是在表达式后跟厂一组空语句。选项C中的x--是表达式而不是语句。所以在编泽时会出现错误信息。

43.A解析:本题考查%s控制符在scanf函数中的应用。scanf函数中%s控制符的作用是将键盘输入的字符串送到内存,输入的字符串从第一个非空格字符算起,遇到空格或回车就认为是输入结束。本题中执行语句scanf('%s%s',p,q)时,从键盘输入abcdef<回车>后,指针变量p指向字符串'abc\\0',q指向字符串'def\\0',但是由于p和q指向同一个存储单元,所以存储单元中存放的是'def\\0',printf函数的输出结果为defdef。

44.D解析:编程风格是在不影响性能的前提下,有效地编排和组织程序,以提高可读性和可维护性。更直接地说,风格就是意味着要按照规则进行编程。这些规则包括:(1)程序文档化。就是程序文档包含恰当的标识符、适当的注解和程序的视觉组织等。(2)数据说明。出于阅读理解和维护的需要,最好使模块前的说明语句次序规范化。此外,为方便查找,在每个说明语句的说明符后,数据名应按照字典顺序排列。(3)功能模块化。即把源程序代码按照功能划分为低耦合、高内聚的模块。(4)注意goto语句的使用。合理使用goto语句可以提高代码的运行效率,但goto语句的使用会破坏程序的结构特性。因此,除非确实需要,否则最好不使用goto语句。因此,本题的正确答案是D。

45.C解析:本题在定义共用体的同时,定义了一个共用体型变量u1,共占两个字节,有两个成员n和c,两个成员的首地址是相同的。因此给u1.c赋一个A,其实就是给无符号整型成员u1.n的低字节赋一个A,输出u1.n的时候是以字符型的形式输出,只输出它的低地址的一个字节,因此为A。所以,C选项为所选。

46.D解析:函数swap1,swap2的功能均为交换两个数。main函数调用swap1(a,a+1);使得数组a的首地址赋给形参c0[],a[1]的首地址赋给形参c1[],故交换c0[0]与c1[0]后,a[0]与a[1]的值也发生了变化;函数调用swap2(&b[0],&b[1]);的功能也一样,使指针变量c0指向了b[0]存储单元,c1指向了b[1]存储单元,并在swap2函数中进行了交换,所以b[0],b[1]的值也发生变化,故本程序输出的结果是5353。

47.D解析:将a的值用二进制表示:00000011。a与Ox8(二进制表示为00001000)按位或,得到结果00001011赋值给b,b的值为11。再将b左移一位得到:00010110,赋值给c,c的值为22。所以最后输出的b,c的值为11,22。

48.B解析:本题考查的是嵌套for循环执行次数。对于外层i的循环中任何一个i,内层j的循环中的j都要从0变化到3,j=4时退出循环;然后外层i循环的i减少1,内层循环的i仍要从0变化到3,j=4时退出循环……直到外层i循环的i变为0,退出i循环。所以执行多重循环时,对外层循环变量的每一个值,内层循环的循环变量都要从初始值变化到终值。对外层循环的每一次循环,内层循环要执行完整的循环语句。外层for语句执行6次,内层for语句执行4次,所以内循环体执行6*4=24次。

49.B解析:函数间的参数的传递有两种情况,第一种情况变量作为形参时的参数传递,变量作为形参时,要求对应的实参应为变量或表达式,变量作为函数的参数其传递方式是“值传递”,该种情况下,形参被赋值为实参的值,然后实参与形参再无联系。也就是说对形参的改变将不再影响实参;第二种情况是地址或数组名作为形参时的参数传递,该种情况下对形参的改变将对实参产生影响。本题中函数swapl()是传递的地址。所以对该形参c的改变将影响实参,分析可知该函数的作用,是使数组c的第一个元素和第二个元素的值互换。主函数中调用该函数将a作为实参传递给形参c,故执行该函数后a的第一个元素和第二个元素的值将交换。分别为5和2。函数swap2()是值传递的,所以该函数执行后对数组b将没有任何改变,此时该数组的第一个和第二个元素依然为3和5,因此最后的输出为5、3、3和5。

50.B

51.C解析:根据二叉树的性质1:二叉树第k(k>1)层上,最多有2k-1个结点。于是第8层的结点数最多是27=128。

52.C解析:本题考查的是二维数组的定义和初始化方法。C语言中,在定义并初始化二维数组时,可以省略数组第一维的长度,但是不能省略第二维的长度。故选项C)错误。

53.A树形结构是一类重要的非线性数据结构。树是n(n≥0)个结点的集合,对应任意一棵非空树,它具有以下几点重要的性质。

①有且仅有一个特定的称为根的结点。

②当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,…,TM,其中每一个集合本身又是一棵树,称为子树。

因此,本题的正确答案有且只有一个。

54.D解析:函数fopen(eonstchar*filename,cortstchar*mode)的功能是以mode指定的模式打开filename指定的磁盘文件;fclose(FILE*fp)的功能是关闭文件指针fp指向的文件;函数fscanf(FILE*fp,constchar*format[address,--))的功能是根据for-mat中的格式从fp指向的文件中读取数据,并存入到相应的address指向的变量中。函数fprintf(FILE*fp,constchar*format[,argument,--])的功能是把argument列表中的表达式值写到fp所指向的文件中;函数fwrlte(void*ptr,intsize,intn,FILE*fP)的功能是把ptr指向的缓冲区中的size×n个字节写到文件指针fP指向的文件中。本题中首先定义了一个文件指针fp,然后通过函数fopen以“wb”的方式打开文件“data.dat”,直接通过一个for循环,每循环一次调用函数fwrite将数组中的元素a[i]的值写进fp所指的文件中,该循环共循环4次,循环完后fp所指文件的内容为123,然后通过fclose函数关闭fp所指文件。接着通过函数fopen以“rb”的方式打开文件“data.dat”,通过fseek函数让指针fp从文件末尾向前移动2个int型大小字节的,然后通过函数fread从fp所指的文件中读取一个int型大小的数据到变量b中,故此时b的值为3,因此最后输出的b的值为3。

55.C解析:选项A错误,continue语句只能结束本次循环,不能结束整个循环。要跳出循环可用break语句。选项B错误,表达式1+2<<3等价于(1+2)<<3,即0000000000000011向右移3位,移后变为0000000000000000,即0。选项C正确,函数fputc的操作对象是文件,而putchar是直接向标准输出设备输出字符。标准输出设备是一个特殊文件,即设备文件,文件型指针指向标准输出设备,因而功能相同。选项D错误,在定义函数中指定的形参变量,在未出现函数调用时,它们并不占内存中的存储单元。

56.C解析:考查栈和队列概念的掌握。栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种'后进先出'的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种'先进先出'的线性表。模块之间的耦合程度反映了模块的独立性,也反映了系统分解后的复杂程度。按照耦合程度从弱到强,可以将其分成5级,分别是:数据耦合、同构耦合、控制耦合、公用耦合和内容耦合。选项C),没有这种耦合方式。

57.A解析:“清晰第一,效率第二”,在考虑到程序的执行效率的同时,一定要保证程序清晰、可读;对符号名的命名,除了要符合语法要求外,还要具有一定的含义;程序的注释可以帮助程序员理解程序,不是可有可无的。

58.B解析:本题涉及字符串最基本的两个概念:①字符串的长度是指字符串中字符的个数,但不包括字符串结束符;②以反斜杠“\\”开头的特殊字符序列,意思是把反斜杠后面的字符序列转换成特定的含义,而不是原来的含义,不包含在字符串长度之内,“\\”连同后面的字符为一个长度。

59.A解析:本题考查数据结构中二叉树的性质。二叉树满足如下一条性质,即:对任意一棵二叉树,若终端结点(即叶子结点)数为n0,而其度数为2的结点数为n2,则n0=n2+1。根据这条性质可知,若二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为n+1。因此,本题的正确答案是选项A。

60.D解析:改变文件位置指针函数fseek()的功能:①改变文件的位置指针;②辅助实现文件的顺序读写;③辅助实现文件的随机读写。

61.A\n当X为1时,执行case1,a自加等于1,因为case1后没有break,接着执行case2,此时a的值为2,b自加为1,故选择A选项。

\n

62.A将p1指向的字符赋给p2,然后再移向下一个字符,直到结束字符0为止,因此这是将p1所指的字符串复制到p2所指的内存空间。

63.B在本题中,程序首先定义了三个整型变量,然后执行for循环,从循环的结构条件我们可以知道,循环执行了5次,循环变量a的值分别为5,4,3,2,1。

当a=5时,m=0,执行第二层循环,循环开始时,是变量a的值赋给循环变量b,而且只要循环变量b的值小于等5,循环继续,循环变量b的值每经过一次循环后自加1,这时由于b=a=5,循环只执行一次,m=m+a*b可描述为m=0+5*5=25。如果我们一直这样分析下去,由于循环的次数太多,那么费时肯定也很多,而且还容易出错,因此,我们需要找到新的解决问题的办法。

从我们对上一次循环执行过程的分析可以看出,第一层循环,每次在最前面执行语句m=0操作,即将我们前面执行的m结果值进行清0操作,使其不影响后面m的值,程序最终要输出的m是当a=1时那次循环计算到的m的值。

当a=1时,b的初值为1,第二层循环执行5次,第一次计算到的m=0+1*1=1;第二次计算到的m=1+1*2=3;第三次计算到的m=3+1*3=6;第四次计算到的m=6+1*4=10;第五次计算到的m=10+1*5=15。整个过程其实相当于求1~5的和。

因此,程序最终的输出结果为15,答案选B。

64.A本题主要考查按位求反运算和C语言正负数的表示,“O”代表正数,“1”代表负数;x=7的二进制为00111,第一个0代表正数,~

温馨提示

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

评论

0/150

提交评论