2021-2022年四川省资阳市全国计算机等级考试C语言程序设计测试卷一(含答案)_第1页
2021-2022年四川省资阳市全国计算机等级考试C语言程序设计测试卷一(含答案)_第2页
2021-2022年四川省资阳市全国计算机等级考试C语言程序设计测试卷一(含答案)_第3页
2021-2022年四川省资阳市全国计算机等级考试C语言程序设计测试卷一(含答案)_第4页
2021-2022年四川省资阳市全国计算机等级考试C语言程序设计测试卷一(含答案)_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年四川省资阳市全国计算机等级考试C语言程序设计测试卷一(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.有以下程序:#include<stdio.h>main(){chara[5][10]={“China”,“beijing”,“very”,“welcome”,“you”};char*p[5];inti;for(i=3;i<5;i++){p[i]=*(a+i);printf(“%s”,p[i]);printf(“%c”,*p[i]);}}程序运行后的输出结果是()。

A.wwyyB.ChinaCbeijingbC.veryvwelcomewD.welcomewyouy

2.下而程序的输出结果是()。

A)32

B)26

C)24

D)4

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

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

4.设一棵二叉树有3个叶子节点,有8个度为1的节点,则该二叉树中总的节点数为()

A.12B.13C.14D.15E.16F.17

5.欧几里得的《几何原本》描述了解最大公约数的算法,针对两个整型a,b(a>b>0),其伪代码如下,请估算该算法的复杂度

A.O(lgb)B.O(a*b)C.O(a*a)D.O(b*b)

6.有以下函数定义:voidfun(intn,doubx){……}若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是()。

A.fun(inty,doublem);

B.k=fun(10,12.5);

C.fun(x,n);

D.voidfum(n,x);

7.有以下程序:main(){intx[8]={8,7,6,5,O,0},*s;s=x+3;printf("%d\n",s[2]);}执行后输出结果是()。

A.随机值B.0C.5D.6

8.有以下程序voidf(intn,int*r){intr1=0;if(n%3==0)r1=n/3;elseif(n%5==0)r1=n/5;elsef(--n,&r1);*r=r1;}main(){intm=7,r;f(m,&r);printf("%d",r);}程序运行后的输出结果是A.2B.1C.3D.0

9.下列关于线性表、栈和队列的叙述,错误的是()。

A.线性表是给定的n(n必须大于零)个元素组成的序列

B.线性表允许在表的任何位置进行插入和删除操作

C.栈只允许在一端进行插入和删除操作

D.队列允许在一端进行插入在另一端进行删除

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

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

11.

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

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

13.

14.设有定义“intk=3,i=2;”,以下选项中,变量k的值与其他3个不同的是()。

A.k-=i;B.k=--i;C.k=i-1;D.k=i--;

15.有以下程序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

16.有以下程序intf(intA){returna%2;}main(){ints[8]={1,3,5,2,4,6),i,d=0;for(i=0;f(s[i];i++)d+=s[i];printf("%d\n",D);}程序运行后的输出结果是

A.9B.11C.19D.21

17.字符串”a+b=12\n”的长度为()。

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

18.以下程序中函数reverse的功能是将a所指数组中的内容进行逆置。voidreverse(inta[],intn){inti,t;for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}}main(){intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;reverse(b,8);for(i=6;i<10;i++)s+=b[i];printf("%d\n",s);}程序运行后的输出结果是

A.22B.10C.34D.30

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

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

20.数据结构通常研究数据的()及运算。

A.物理结构和逻辑结构B.存储和抽象C.理想和抽象D.理想与逻辑

二、2.填空题(20题)21.以下程序用来统计文件中字符个数。请填空。

#include"stdio.h"

main()

{FILE*fp;longnum=OL;

if((fp=fopen("fname.dat","r")==NULL)

{Pirntf("Openerror\n");exit(0);}

while(【】)

{fgetc(fp);num++;}

printf("num=%1d\n",num-1);

fclose(fp);

}

22.在scanf()函数调用语句中,可以在格式字符和%号之间加上一个星号,它的作用是跳过对应的输入数据;当输入以下数据时,100200300400500<回车>,下面语句的执行结果为【】。

main()

{inta,b,C;

scanf("%d%*d%d%d",&a,&b,&c);

printf("%d%d%d",a,b,c);}

23.以下程序段中,错误的行号是【】。①#include<stdio.h>②main()③{charstr[14];str[]={"IloveChina!"};④printf("%s",str);⑤}

24.数据库系统在其内部分为三级模式,即概念模式、内模式和外模式。其中,______是用户的数据视图,也就是用户所见到的数据模式。

25.【】是数据库设计的核心。

26.以下程序运行后的输出结果是【】。

main()

{inti,n[]={0,0,0,0,0};

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

{n[i]=n[i-1]*2+1;

printf("%d",n[i]);

}

}

27.以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算:

y1=(x+8)2-2(x+8)+6

y2=sin2(x)-2sin(x)+6

请填空。

#include"math.h"

doublefun(doublex){return(x*x-2*x+6);}

main()

{doublex,y1,y2;

printf("Enterx:");scanf("%lf",&x);

y1=fun(【】);

y2=fun(【】);

printf("y1=%lf,y2=%lf\n",y1,y2);

}

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

main()

{

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

p++;

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

}

29.若a是int型变量,则表达式(a=2*3,a*2),a+6的值为______。

30.若从键盘输入58,则以下程序的输出结果是【】。

main()

{inta;

scanf(“%d”,&A);

if(a>50)printf(“%d”,A);

if(a>40)printf(“%d”,A);

if(a>30)printf(“%d”,A);

}

31.执行以下程序后的输出结果是【】。

main()

{inta=10;

a=(3*5,a+4);printf("a=%d\n",a);

}

32.测试的目的是暴露错误,评价程序的可靠性;而______的目的是发现错误的位置并改正错误。

33.在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种;前序遍历、【】遍历和后序遍历。

34.设有以下程序,为使之正确运行,请在横线中填入应包含的命令行。(注:try_me()函数在a:\myfile.txt中有定义。)

______

main()

{printf("\n");

try_me();

printf("\n");}

35.下面程序的运行结果是:【】。

fun(intt[],intn)

{inti,m;

if(n==1)returnt[0];

elseif(n>=2){m=fun(t,n-1);returnm;}

}

main()

{inta[]={11,4,6,3,8,2,3,5,9,2};

printf("%d\n",fun(a,10));

}

36.在两种基本测试方法中,【】测试的原则之一是保证所测模块中每一个独立路径至少要执行一次。

37.下列语句能循环______次。

ints=12;

while(s);

--s;

38.以下函数rotate的功能是:将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第。列中,把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b所指二维数组中的其他数据不变。

#defineN4

voidrotate(inta[][N],intb[][N])

{int,i,j;

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

{b[i][N-1]=【】;

【】=a[N-1][i];

}

}

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

40.以下sstrcpy()函数实现字符串复制,即将t所指字符串复制到s所指向内存空间中,形成一个新的字符串s。清填空。

voidsstrcpy(char*s,char*t)

{while(*s++=【】);}

main()

{charstr1[100],str2[]="abcdefgh";

strcpy(str1,str2);

printf('%s\n",str1);

}

三、1.选择题(20题)41.下列关于栈的叙述正确的是()

A.栈是非线性结构B.栈是一种树状结构C.栈具有先进先出的特征D.栈具有后进先出的特征

42.视图设计—般有3种设计次序,下列不属于视图设计的是______。

A.自顶向下B.由外向内C.由内向外D.自底向上

43.有以下程序#include<stdio.h>main(){FILE*fp;intk,n,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w");fprintf(fp,"%d%d%d\n",a[0],a[1],a[2]);fprintf(fp,"%d%d%d\n",a[3],a[4],a[5]);fclose(fp);fp=fopen("d2.dat","r");fscanf(fp,"%d%d",&k,&n

A.12B.14C.1234D.123456

44.有以下程序:main(){intm[][3]={1,4,7,2,5,8,3,6,9);inti,j,k=2;for(i=0;i<3;i++){printf("%d",m[k][i]);}}执行后输出结果是______。

A.456B.258C.369D.789

45.有以下程序段:intx=3;do{printf("%d",x-=2);}while(!(--x));其输出结果是______。

A.1B.30C.1-2D.死循环

46.以下叙述正确的是

A.continue语句的作用是结束整个循环的执行

B.只能在循环体内和swish语句体内使用break语句

C.在循环体内使用break语句或continue语句的作用相同

D.从多层循环嵌套中退出时,只能使用goto语句

47.有以下程序:main(){inti=1,j=2,k=3;if(i++==l&&(++j==3||k++==3))printf("%d%d%d\n",i,j,k):}程序运行后的输出结果是()。

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

48.以下叙述中错误的是______。A.用户所定义的标识符允许使用关键字

B.用户所定义的标识符应尽量做到“见名知意”

C.用户所定义的标识符必须以字母或下划线开头

D.用户定义的标识符中,大、小写字母代表不同标识

49.瀑布模型适合于______。

A.大型软件系统开发B.中型软件系统开发C.小型软件系统开发D.大、中、小型软件系统开发

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

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

51.一个关系中属性个数为1时,称此关系为()。

A.对应关系B.单一关系C.一元关系D.二元关系

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

A.算法的执行效率与数据的存储结构无关

B.算法的空间复杂度是指算法程序中指令(或语句)的条数

C.算法的有穷性是指算法必须能在执行有限个步骤之后终止

D.以上3种描述都不对

53.组成计算机网络的最大好处是()

A.进行通话联系B.资源共享C.发送电子邮件D.能使用更多软件

54.设有定义:inta=2,b=3,c=4;则以下选项中值为0的表达式是()。

A.(!a==1)&&(!b==0)

B.(a<b)&&!c‖1

C.a&&b

D.a‖(b+b)&&(c-a)

55.800个24×24点阵汉字字形库所需要的存储容量是()

A.7.04KBB.56.25KBC.7200BD.450KB

56.有以下程序

main()

{inta[4][4]={{l,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,j,k,t;

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

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

for(k=j+1;k<4;k++)

if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/

for(i=0;i<4;i++)printf("%d,",a[i][i]);

}

程序运行后的输出结果是

A.1,6,5,7,B.8,7,3,1,C.4,7,5,2,D.1,6,2,1,

57.设变量a、b、c、d和y都己正确定义并赋值。若有下列if语句

if(a<b)

if(c==d)y=0;

elsey=1;

该语句所表示的含义是()。

A.

B.

C.

D.

58.以下所列的c语言常量中,错误的是______。

A.0xFFB.1.2e0.5C.2LD.'\72'

59.下面程序段中c的二进制值是______。chara=3,b=6,c;c=ab<<1;

A.1011B.1111C.11110D.11100

60.以下的for循环()for(x=0,y=0;(y!=123)&&(x<4);x++)

A.是无限循环B.循环次数不定C.执行4次D.执行3次

四、选择题(20题)61.已知inti=10;表达式“20-0<=i<=9”的值是()。

A.0B.1C.19D.20

62.有以下程序

#include<stdio.h>

main()

{inti=5;

do

{if(i%3==1)

if(i%5==2)

{printf("*%d",i);break;}

i++;

}while(i!=0);

printf("\n");

}

程序的运行结果是

A.*7B.*3*5

C.*5D.*2*6

63.有以下程序:

#include<stdio.h>

main

{intx=4,y;

do

{y=x;

if(!y)printf("x");

else

printf("y"):

x--;

}while(x);

}

程序的输出结果是()。A.A.xyyxB.yyyyC.yyxxD.yxyx

64.下列选项中,能正确定义数组的语句是()。

65.

66.

67.有以下程序:

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

A.zB.0C.元素eh[5]的地址D.字符Y的地址

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

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

69.

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

#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

70.

71.有以下定义:

72.

73.在C语言中,要求运算数必须是整型的运算符是()。

A)%B)/

C)<D)!

74.以下选项中,能表示逻辑值“假”的是()

A.1B.0.000001C.0D.100.0

75.

76.有以下程序:

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

A.0B.1C.4D.8

77.

78.有以下程序:

#include<stdiO.h>

main()

{inta=1,b=0;

printf("%d,",b=a+b);

printf("%d\n",a=2+b);‘’

}

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

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

79.结构化程序设计所规定的三种基本控制结构是()。

A.for、while、switchB.输入、输出、处理C.顺序结构、选择结构、循环结构D.主程序、子程序、函数

80.下列说法不正确的是

A.数据库减少了数据冗余B.数据库实现了数据的共享

C.数据库避免了一切数据的重复D.数据库具有较高的数据独立性

五、程序改错题(1题)81.已知一个数列从0项开始的前3项为0,0,1,以后的各项都是其相邻的前3项之和。下列给定的程序中,函数proc的功能是:计算并输出该数列前n项的和sum。n的值通过形参传人。例如,当n=20时,程序的输出结果应为42762.000000。请修改程序中的错误,使它能得到正确结果。注意:不要改动maiil函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>doubleproc(intn){doublesum,s0,s1,s2,s;intk;sum=1.0;if(n<=2)sum=0.0;s0=0.0;s1=0.0;s2=1.0;//****found****for(k=4;k<n;k++)}{s=s0+s1+s2;sum+=S:s0=s1;s1=s2;//****found****s2=s;returnsum;}voidmain{intn;system("CLS");printf("InputN=");scanf("%d",&nJ;printf("%f\n",proc(n));}

六、程序设计题(1题)82.实现字符串拷贝的函数strcpy为()。

参考答案

1.Dmain函数定义一个二维字符数组a,它包含5个字符串,每个字符串存放在一个长度为10的一维数组中。指针数组P包含5个字符指针元素。for循环中,每次将*(a+i)赋给P[i],再输出P[i]和*P[i]。由于*(a+i)等价于a[i],因此每次都是将下标为i的字符串首地址赋给p[i],再输出该字符串和该字符串的首字符。i=3时,输出字符串“welcome”和首字符“w”;i=4时,输出字符串“you”和首字符“y”。综上,输出结果为welcomewyouy。故本题答案为D选项。

2.C本题考查的是联合所占的存储空间。sizeof(t)=sizeof(douhle)*3=8*3=24。联合体所占的存储空间取决于所占空间最大的成员所占的空间。

3.D

4.B

5.A

6.C解析:选项A中应将y和m前面的函数的类型说明符去掉,故选项A不正确;选项B中函数传了2个参数,其中一个为整型—个为浮点型,而fun()函数在定义时声明的2个参数,一个为整型一个为双精度型,其参数类型不一致,故选项B不正确;选项D在调用函数时,不应该再声明其返回类型,故选项D不正确。所以,4个选项中选项C符合题意.

7.B解析:通过赋值语句“s=x+3”,使指针变量s指向数组元素x[3],输出语句中的spl等价于*(s+2),即x[5]值为0。所以,B选项为所选。

8.A解析:本题考查了函数的递归调用。在f函数中,当m=7时,程序执行“f(--n,&r1);”语句,递归调用f(6,&r1),程序执行“r1=n/3;”语句,即r1=\u30006/3=2,然后执行“*r=r1;”语句,所以输出结果为2。

9.A解析:线性表的插入和删除允许在任何位置进行,所以B选项的说法是正确的;栈的操作只允许在栈顶进行,因此,栈称为先进后出表(FILO,FirstInLastOut),或“后进先出”表(LIFO,LastInFirstOut),所以C选项说法也是正确的;队列(queue)是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫做队头(front),允许插入的一端叫做队尾(rear),因此队列亦称作先进先出(FIFO,FirstInFirstOut)的线性表,或后进后出(LILO,LastInLastOut)的线性表。所以D选项说法也是正确的。

10.D第1个if语句是单独的一条语句,所以执行完第1个if语句后,r的值仍为初值0。第2个if语句与后续的两个elseif都是嵌套的,所以只会执行其中的一个语句,即“if(b==2)r=2;”这条语句。故本题答案为D选项。

11.A

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

13.C

14.D选项A是复合的赋值运算符,等价于“k=k-i”,所以k的值为1;选项B中前缀自减运算符首先将i的值自减1,然后将自减后的值赋给k,所以k和i的值都是1;选项C中k的值为1;选项D中后缀自减运算符将i的值先赋给k,然后i自减1,所以k的值为2。故本题答案为D选项。

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

16.A解析:本题考核的知识点是一维数组的定义,初始化和数组中元素的引用。函数f()的作用是形参a为偶数的时候返回0,主函数中首先定义了一个长度为8的一维数组,然后给它赋初值使得s[0]=1、a[1]=3、s[2]=5、s[3]=2、s[4]=4、s[5]=6.其他没有赋值的数组元素将自动赋值为0。for循环中,当s[1]不为偶数的时,将s[i]相加,即当i=3时,s[i]=2为偶数,退出循环,此时d的值为d=s101+s[1]+s[2]=1+3+5=9,因此最后输出的d的值为9。所以,4个选项中选项A符合题意。

17.B

18.A解析:本题考查的知识点是数组名作为函数参数及函数调用。reverse()数的功能是将具有n个元素的数组a反序存放。在主函数中调用语句是“reverse(b,8);”,实现的功能是把b数组的前八个元素逆置,所以b数组中依次存放的值为“8,7,6,5,4,3,2,1,9,10”。for循环了4次,分别把b[6]、b[7]、b[8]和b[9]的值(分别是2、1、9、10)加到了s中,s的结果是22,所以最后输出的s值为22。所以4个选项中A正确。

19.C栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种“后进先出”的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种“先进先出”的线性表:本题答案为C)。

20.A

21.!feof(fp)!feof(fp)解析:本题中统计文件中字符个数的算法可描述为;首先判断文件位置指针是否指向了文件尾,如果不是则读出一个字符,同时字符的个数加1,再判断文件位置指针是否位于文件尾,如此循环,直到文件位置指针位于文件尾为止。本题首先以读文件的方式打开了文件“fname.dat”,如果打开成功则把返回的文件型指针赋值给fp,然后通过循环求文件中的字符数。首先判断文件位置指针是否位于文件尾,如果不是则循环读取字符,每次字符数加l。所以下划处应填循环条件,文件位置指针不是指向文件尾,即“!feof(fp)”。

22.100300400100300400解析:scanf的格式控制字符串中,“*”表示跳过对应的输入数据,所以第二个输入数200被跳过去了,只有100,300,400三个数被从键盘输入了进来。

23.③数组可以在定义时整体赋初值,但不能在赋值语句中整体赋初值。因此,可将第三行改为charstr[14]={"IloveChina!"};

24.外模式外模式解析:外模式由概念模式推导而出,给出了每个用户的局部数据描述,即数据视图。

25.数据模型数据模型

26.1371513715解析:本题中,定义了一个整型数组n并初始化,在for循环语句中,再对数组中各元素重新赋值。循环执行第一次时,n[1]=n[0]*2+1=0+1=1,printf函数输出1,然后i的值加1,比较i<=4成立,继续执行循环体语句,使后一个数为前一个数的2倍加1。所以最后输出为1、3、7、15。

27.x+8sin(x)x+8,sin(x)解析:考查考生对函数调用相关知识的了解。用x+8代替函数fun(doublex)中形式参数x;用sin(x)代替函数fun(doublex)中形式参数x。

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

29.1212解析:本题考查逗号表达式的运算规则。逗号表达式的基本格式为:“表达式1,表达式2,…”,其整个表达式的结果取最后一个子表达式的值。本题中首先计算逗号表达式中的第1个表达式a=2*3=6,然后计算第2个表达式a*2,这时整个表达式的值为12,但要注意,因为第2个表达式并没有给a赋值,因此a的值不变;接下来执行最后一个表达式a+6=12,所以整个表达式最后的值为12。

30.585858585858解析:在程序中,执行scanf()语句后,a被赋值为58。接着执行第一个if语句,因为,a=58>50,执行第一个if语句后面的输出语句,输出58;接着执行第二个if语句,因为,a=58>40,执行第二个if语句后面的输出语句,输出58;接着执行第三个if语句,因为,a=58>30,执行第三个if语句后面的输出语句,输出58,所以最后的输出为585858。

31.a=14a=14解析:逗号表达式的值是以逗号分隔的最后一个表达式的值。所以题目中的语句a=(3*5,a+4);就等价于a=a+4;。故本题输出结果是a=14。

32.调试调试

33.中序中序解析:在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、中序遍历和后序遍历.前序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。中序遍历指在访问根结点、遍历左了树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树:并且遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。后序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历右子树,然后访问根结点,最后遍历左子树;并且遍历左、右子树时,仍然光遍历右子树,然后访问根结点,最后遍历左子树。

34.#include<a:\myfile.txt>#include<a:\\myfile.txt>解析:本题考查了函数的存储分类的概念。如果没有特别说明,函数的存储范围是从定义函数的位置到文件的结尾,如果其他文件想使用这个函数,需要用ginclude文件包含命令将定义函数的文件包含进来。

35.1111解析:此题涉及函数的调用和if语句。程序先执行第二个if语句,然后再执行第一个if语句,最后用return返回数值。

36.白盒或白箱或白盒子或WhiteBox白盒或白箱或白盒子或WhiteBox解析:本题考查软件工程的测试。测试一般有两种方法:黑盒测试和白盒测试。黑盒测试不考虑程序的内部逻辑结构和处理过程,只着眼于程序的外部特性。用黑盒测试来发现程序中的错误,必须用所有可能的输入数据来检查程序能否都能产生正确的输出。白盒测试是在了解程序内部结构和处理过程的基础上,对程序的所有路径进行测试,检查路径是否都能按预定要求正确工作。因此,划线处应填入“白盒(箱)”或“WhiteBox”。

37.无限无限解析:分析程序“while(s)”语句后面有一个“;”不能执行后面的语句,只是执行空语句,所以s=12保持不变,因此,没有条件限制的能循环无限次(即死循环)。

38.a[0][i]b[i][0]a[0][i]b[i][0]解析:根据题意,第一处所在语句行的作用是把a数组中的第0行放到b数组的最后一列中,a数组的第0行用a[0][]来表示,所以第一处填a[0][i];第二所在语句行的作用是将a数组的最后一行放到b数组的第0列中,b数组的第0列用b[][0]来表示,所以,第二处应填b[i][0]。

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

40.*t++或*(t++)*t++或*(t++)解析:主函数中定义了两个字符型数组str1和str2,并且给str2赋初值“abcdefgh”,接着调用函数strcpy(str1,str2),将字符串str2的值赋给str1。在函数sstrcpy(*s,*t)中,用了一个while循环,每循环一次将形参指针t所指的字符赋给形参指针s所指向的存储空间,然后将指针s和t都移到下一个元素。所以空白处应该填*t++或*(t++)。

41.D解析:栈是一种对操作的位置加以限制的线性表,它采用了顺序存储方式,属于线性结构。与队列不同,栈只允许在表的一端进行插入或删除操作,具有后进先出的特征。

42.B解析:视图设计—般有3种设计次序,它们分别是自顶向下、自底向上和由内向外,它们又为视图设计提供了具体的操作方法,设计者可根据实际情况灵活掌握,可以单独使用也可混合使用。

43.D解析:将有6个元素的整型数组分两行输出到一个文件中,因为输出的都是数字并且每行都没有分隔符,所以当再对其进行读取操作时,每一行都会被认为是一个完整的数,而换行符则作为它们的分隔符。

44.C解析:数组m初始化后结果为:m[0][0]=1、m[0][1]=4、m[0][2]=7、m[1][0]=2、m[1][1]=5、m[1][2]=8、m[2][0]=3、m[2][1]=6、m[2][2]=9。for循环语句的作用是输出数组元素m[2][0]、m[2][1]和m[2][2],所以输出结果为:369。

45.C解析:在程序中,首先定义了一个整型变量x并赋初值为3,接着执行do-while循环。在do-while循环中,先执行循环体,即执行printf语句(输出表达式X-=2;的值,这个表达式相当于x=x-2=3-2=1,所以第一次输出值为1),接着判断while后面括号里的条件表达式是否为真。这个表达式!(--X)等价于!(0)为真(这里--X是先自减,再进行判断,此时x自减1,值为0),继续执行循环体,即执行printf语句(输出表达式x-=2;的值,这个表达式相当于x=x-2=0-2=-2,所以第二次输出值为-2),接着判断while后面括号里的条件表达式是否为真,显然,表达式!(--x)等价于(!(-3))为假,退出循环,所以其最终的输出结果为1-2。所以,4个选项中选项C符合题意。

46.B

47.D解析:本题的考点是关于C语言的逻辑表达式的计算规则。对于逻辑表达式“i++==1&&(++j==3||k++==3)”,首先判断“i++==1”,由于i初值为1,“i++==1”为真,同时i加1值为2。由于第一项为真,对于“&&”运算符,结果取决于后一项“(++j==3||k++==3)”。而逻辑表达式“(++j==3||k++==3)”计算时,首先判断“++j==3”,由于j初值为2,++j后j值为3,“++j==3”为真,对于“||”运算符不需要判断后一项表达式的结果就可以断定此逻辑表达式结果为真,因此“k++==3”并没有进行判断,k++也未执行,k仍是初值3,输出结果应该是233。正确选项是D。

48.A解析:C语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。大写字母和小写字母被认为是两个不同的字符,用户在定义标识符时应尽量做到“见名知意”,且不允许使用关键字作标识符。

49.C解析:根据瀑布模型的特点(连续无反馈)是对于每一个阶段来说,前一个阶段工作的正确无误是至关重要的。因此,瀑布模型不能很好地适应那些需求不易确定和多变的软件项目的开发。由于大项目在软件开发的前期阶段,人们很难详细地了解系统的许多细节,从而在项目进行过程中常会出现需求变化。因此,瀑布模型适用于小系统开发项目,而不适用于大、中型软件系统开发。

50.A解析:本题主要考查按位求反运算和C语言中正负数的表示,“0”代表正数,“1”代表负数;x=7的二进制为00111,第一个0代表正数,~x为11000,第一个1代表负数,值为8。

51.C解析:在关系模型数据库中,基本结构是二维表,这种二维表称为关系。关系的列称为属性,一个具有N个属性的关系称为N元关系。注意:各种关系查询语言与过程性语言和非过程性语言的关系,过程性语言的特点。

52.C解析:算法的执行效率与数据的存储结构密切相关。算法的空间复杂度是指算法执行过程中所需的存储空间。

53.B

54.A解析:逻辑运算符的优先级由高到低运算次序如下:!(非)→&&(与)→||(或),选项A)的表达式中,先计算!a,结果为0,由于'0==1'不成立,故整个表达式的值为0。

55.B

56.A解析:本题利用多重for循环的嵌套来实现对二维数组元素的按列排序。利用最外层循环来实现对列的控制。内部循环利用选择法对数组元素按照从小到大的顺序进行排列,最后输出对角线上的元素值。

57.C解析:语句if(c==D)y=0;elsey=1;是if(a<B)语句的一个子句。所以整个C语句表达式的意思是:在、a<b的情况下,如果c=d则y=0,否则y==1。所以,选项C)为正确答案。

58.B解析:在C语言中常量可以用十进制数、八进制数、十六进制数来表示:也可以用转义字符、长整型、科学计数法等来表示。选项A为十六进制表示法正确,故选项A正确。选项B为科学计数法,但在选项B中的科学计数的表示形式是错误的,指数不能为小数,故选项B的表示法是错误的。选项C为长整型表示法正确,故C正确。选项D为转义字符表示正确,故选项D的表示法是正确的。所以,4个选项中选项B符合题意。

59.B解析:C语言提供六种位运算符,按优先级由高到低的顺序分别为:取反(~)、左移(<<)和右移(>>)、按位与(&)、按位异或(∧)、按位或(|)。所以表达式c=ab<<1先运算b<<1得二进制值为00001100,再运算a∧00001100,最后得二进制值00001111。

60.C

61.B运算符的优先级;首先计算20-0=0,0<=i成立,结果为1.1<=9成立,所以最后结果还是1.

62.A本题考查C语言中对整数求余数运算。运算符“%”是两个数相除后取余数。分析本题的程序,main函数中的主体为一个do-while循环,该循环的终止条件为i==0。do-while循环内部起始为一个if语句,该语句包含一个if子语句,外层if语句的判断条件是i%3==1,表示i的取值范围为{1,4,7,11,…},内部if子语句的判断条件为i%5==2,表示i的取值范围为{2,7,12,…}。如果外层和内层的if语句的条件都满足,则执行语句printf('*%d',i);break;,该语句输出*i形式的结果并跳出do-while循环。如果两个if语句有一个条件不满足,则执行i++操作,继续执行do-while循环。i的初始值为5,只有满足两个if语句条件时才能够跳出do-while循环,即当i=7时,循环结束,输出结果为*7。

63.B本题考查do-while语句和if…else语句。do-while语句的功能是先执行循环体再判断条件,所以,先判断if语句的条件,y=-4,!y为逻辑0,条件不成立,执行下面的else语句,输出y,然后将x的值减1,x=3,条件不成立,执行下面的else语句,输出Y,然后将X的值减1,x=2,满足while循环条件,继续循环。第三次循环:先判断if语句的条件,y=2,!y为逻辑0,条件不成立,执行下面的else语句,输出y,然后将X的值减1,x=l,满足while循环

温馨提示

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

评论

0/150

提交评论