2021年江西省南昌市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2021年江西省南昌市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2021年江西省南昌市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2021年江西省南昌市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2021年江西省南昌市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

2021年江西省南昌市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出棱的顺序是()。A.A.12345ABCDEB.EDCBA54321C.ABCDEl2345D.54321EDCBA

2.

3.若栈采用顺序存储方式存储,现两栈共享空间V[1..m],top[i]代表第i个栈(i=1,2)栈顶,栈1的底在v[1],栈2的底在V[m],则栈满的条件是()。

A.|top[2]-top[1]|=0

B.top[1]+1=top[2]

C.top[1]+top[2]=m

D.top[1]=top[2]

4.以下选项中合法的c语言常量是()。

A.,C—STR’B.2014.1C.”\l.0D.2EK

5.连通图G中有n个顶点,G的生成树是()连通子图。

A.包含G的所有顶点B.包含G的所有边C.不包含G的所有顶点D.包含G的所有顶点和所有边

6.设一棵满二叉树共有15个结点,则在该满二叉树中的叶子结点数为()

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

7.下列对于软件测试的描述中正确的是()。

A.软件测试的目的是证明程序是否正确

B.软件测试的目的是使程序运行结果正确

C.软件测试的目的是尽可能多地发现程序中的错误

D.软件测试的目的是使程序符合结构化原则

8.设有以下定义uniondata{intd1;floatd2;}demo;则下面叙述中错误的是()。A.A.变量demo与成员d2所占的内存字节数相同

B.变量demo中各成员的地址相同

C.变量demo和各成员的地址相同

D.若给demo.d1赋99后,demo.d2中的值是99.0

9.如有inta=11;则表达式(a++*1/3)的值是()。

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

10.

11.将两个字符串连接起来组成一个字符串时,选用()函数。A.strlen()B.strcpy()C.strcat()D.strcmp()

12.以下关于typedef的叙述错误的是A.用typedef可以增加新类型

B.typedef只是将已存在的类型用一个新的名字来代表

C.用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名

D.用typedef为类型说明一个新名,通常可以增加程序的可读性

13.要解决散列引起的冲突问题,最常用的方法是()

A.数字分析法、除留余数法、平方取中法

B.除留余数法、线性探测法、平方取中法

C.线性探测法、二次探测法、链地址法

D.除留余数法、线性探测法、二次探测法

14.以下有关scanf函数的叙述中错误的是()。

A.在scanf函数的格式字符前既可以加入正整数指定输入数据所占的宽度,也可以对实数指定小数位的宽度

B.scanf函数有返回值,其值就是本次调用scanf函数时正确读入的数据项个数

C.scanf函数从输入字符流中按照格式控制指定的格式解析出相应数据,送到指定地址中

D.在scanf函数中的格式控制字符串不会输出到屏幕上

15.设有以下函数f(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}如果在下面的程序中调用该函数,则输出结果是______。main(){inta=2,i;for(i=0;i<3;i++)printf("%d\n"f(a));}

A.789B.7911C.71013D.777

16.有以下程序

intfun1(doublea){returna*=a;}

intfun2(doublex,doubley)

{doublea=0,b=0;

a=fun1(x);b=fun1(y);return(int)(a+b);

}

main()

{doublew;w=fun2(1.1,2.0);……}

程序执行后变量w中的值是A.5.21B.5C.5.0D.0.0

17.若有以下定义:chara;intb;floatc;doubled;则表达式a*b+b-c值的类型为()。A.floatB.intC.charD.double

18.表达式:(int)((double)9/2)-(9)%2.的值是A.0B.3C.4D.5

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

A.在C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

B.在C的函数中,最好使用全局变量

C.外部变量可以在函数之间传递数据

D.自动变量实质上是一个函数内部的局部变量

20.某堆栈的输入序列为a,b,c,d,下面的四个序列中,不可能是它的输出序列的是()。

A.a,c,b,dB.b,c,d,aC.c,d,b,aD.d,c,a,b

二、2.填空题(20题)21.在深度为7的满二叉树中,度为2的节点个数为()。

22.\13'在内存中占1个字节,"\12"在内存中占______个字节。

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

24.下列程序的输出结果是16.00,请填空:

main()

{

inta=9,b=2;

floatx=【】,y=1.1,z;

z=a/2+b*x/y+1/2;

printf("%5.2f\n",z);

}

25.有以下程序:

main()

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

for(p=a;p<a+10;p++)printf("%d,",*p);

}

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

26.某二叉树中度为2的节点有18个,则该二叉树中有()个叶子节点。

27.以下程序通过函数SunFun求。这里f(x)=x2+1,由F函数实现。请填空。

main()

{printf("Thesum=%d\n",SunFun(10));}

SunFun(intn)

{intx,s=0;

for(x=0;x<=n;x++)s+=F(【】);

returns;

}

F(intx)

{returnx*x+1;}

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

intm=17;

intfun(intx,inty)

{intm=3;

return(x*Y-m);

}

main()

{inta=5,b=7;

printf("%d\n",fun(a,B)/m);

}

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

#include<stdio,h>

main()

{inta=3,b=4,c=5,t=99;

if(b<a&&a<c)t=a;a=c;c=t;

if(a<e&&b<c)t=b;b=a;a=t;

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

}

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

structs

{intx,y;}data[2]={10,100,20,200};

main()

{

structs*p=data;

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

}

31.下面的程序通过函数average计算数组中各元素的平均值,请填空。

floatavetage(int*pa,intn)

{inti;

floatavg=0.0;

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

avg=avg+【】;avg=【】;

returnavg;

}

main()

{inti,a[5]={2,4,6,8,10,};

floatmean;

prinf("%mean=%f\n",mean);

}

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

strcen(chara[],charb[])

{intnum=0,n=0;

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

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

return(num);

}

33.若有定义语句chars[100],d[100];intj=0,i=0;且s中已赋字符串,请填空以实现拷贝。(注:不使用逗号表达式)

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

d[j]=0;

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

#include<stdio.h>

main()

{charc;intn=100;

floatf=10:doublex:

x=f*=n/=(c=50);

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

}

35.若有如下定义:

intx=2,y=3,z=4;

则表达式!(x=y)||x+z&&y-z的值是【】。

36.当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为【】。

37.若有以下定义,则使指针p指向值为35的数组元素的语句是______。

inta[10]={14,27,47,29,35,21,49,71},*p;

38.数据库的逻辑模型设计阶段的任务是将______转换成关系模式。

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

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));

}

40.十进制数53转换为十六进制数为【】。

三、1.选择题(20题)41.下列关于C语言数据文件的叙述中正确的是A.文件由ASCII码字符序列组成,C语言只能读写文本文件

B.文件由二进制数据序列组成,C语言只能读写二进制文件

C.文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件

D.文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件

42.语句int(*ptr)()的含义是()。

A.ptr是一个返回值是int的函数

B.ptr是指向int型数据的指针变量

C.ptr是指向函数的指针,该函数返回一个int型数据

D.ptr是一个函数名,该函数的返回值是指向int型数据的指针

43.若有下列说明,则()不是对strcpy库函数的正确的调用。strcpy库函数用于复制一个字符串:char*str1="abcd",str2[10],*str3="hijklmn",*str4[2],*str5="aaaa"

A.strcpy(str2,str1)

B.strcpy(str3,str1)

C.strcpy(str4,str1)

D.strcpy(str5,str1)

44.以下程序的输出结果是()。#include<stdio.h>main(){inti;for(i=1;i<5;i++){if(i%2)printf("*");elsecontinue;printf("#");}printf("$\n");

A.*#*#*#$B.#*#*#*$C.*#*#$D.#*#*$

45.下列变量说明语句中,正确的是

A.char:abc;B.chara;b;c;C.intx;z;D.intx,z;

46.下面不属于软件设计原则的是()。

A.抽象B.模块化C.自底向上D.信息隐蔽

47.下面程序的输出是______。main(){char*s="12134211";intv1=0,v2=0,v3=0,v4=0,k;for(k=0;s[k];k++)switch(s[k]){default:v4++;case'1':v1++;case'3':v3++;case'2':v2++;}printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4);}

A.v1=4,v2=2,v3=1,v4=1

B.v1=4,v2=9,v3=3,v4=1

C.v1=5,v2=8,v3=6,v4=1

D.v1=8,v2=8,v3=8,v4=8

48.程序中头文件type1.h的内容是#defineN5#defineM1N*3程序如下:#define"type1.h"#defineM2N*2main(){inti;i=M1+M2;printf("%d\n",i);)程序编译后运行的输出结果是()。

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

49.对长度为n的线性表进行顺序查找,在最坏的情况下需要比较的次数为()。

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

50.C语言源程序名的后缀是A..exeB..CC..objD..cp

51.以下程序企图把从终端输入的字符输出到名为abc.txt的文件中,直到从终端读入字符#号时结束输入和输出操作,但程序有错。#include<stdio.h>main(){FILE*fout;charch;fout=fopen('abc.txt','w');ch=fgetc(stdin);while(ch!='#'){fputc(ch,fout);ch=fgetc(stdin);}fclose(fout);}出错的原因是

A.函数fopen调用形式有误B.输入文件没有关闭C.函数fgetc调用形式有误D.文件指针stdin没有定义

52.以下程序十函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址:#include<stdio.h>#include<string.h>char*scrap(char*s1,char*s2){if(strcmp(s1,s2)<0)return(s1);elsereturn(s2);}main(){inti;charstring[20],str[3][20];for(i=0;i<3;i++)gets(str[i]);strcpy(string,scmp(str[0],str[1]));/*库函数strcpy对宁符中进行复制*/strcpy(string,scmp(string,str[2]));printf("%s\n",string);}若运行时依次输入:abcd、4bba和abc三个宁符市,则输出结果为

A.abcdB.abbaC.abcD.abca

53.若a、b、c、d都是int型变量且都已经正确赋初值,则下列不正确的赋值语句是()。

A.a+d;B.a++;C.a=b=c=d=100;D.a=(b=3)+(d=5);

54.线性表的顺序存储结构和线性表的链式存储结构分别是______。

A.顺序存取的存储结构、顺序存取的存储结构

B.随机存取的存储结构、顺序存取的存储结构

C.随机存取的存储结构、随机存取的存储结构

D.任意存取的存储结构、任意存取的存储结构

55.为了提高测试的效率,应该()。

A.随机选取测试数据

B.取一切可能的输入数据作为测试数据

C.在完成编码以后制定软件的测试计划

D.集中对付那些错误群集的程序

56.下列关于单目运算符++、--的叙述中正确的是A.它们的运算对象可以是任何变量和常量

B.它们的运算对象可以是char型变量和int型变量,但不能是float型变量

C.它们的运算对象可以是int型变量,但不能是double型变量和float型变量

D.它们的运算对象可以是char型变量、int型变量和float型变量

57.在深度为5的满二叉树中,叶子结点的个数为A.32B.31C.16D.15

58.以下函数值的类型是_______。fun(floatx){floaty;y=3*x-4;returny;}

A.intB.不确定C.voidD.float

59.下面的程序执行后,文件test.t中内容是______。#include<stdio.h>voidfun(char*fName,char*st){FILE*myf;inti;myf=fopm(fname,"w");for(i=0;i<strlen(st);i++)fputc(st[i],myf);fclose(myf);}main(){fun("test.t","newworld");fun("test.t","hello,");}

A.hello,B.newworldhelloC.newworldD.hello.rld

60.有以下程序main(){inta=7,b=8,*p,*q,*r;p-&a;q=&b;r=p;p=q;q=r;printf("%d,%d,%d,%d\n",*p,*q,a,b);程序运行后的输出结果是

A.8,7,8,7B.7,8,7,8C.8,7,7,8D.7,8,8,7

四、选择题(20题)61.下列叙述中正确的是()。

A.在面向对象的程序设计中,各个对象之间具有密切的关系

B.在面向对象的程序设计中,各个对象都是公用的

C.在面向对象的程序设中,各个对象之间相对独立,相互依赖性小

D.上述3种说法都不对

62.

下列程序的输出结果是()。

main

{inta,b,d=25;

a=d/10%9;

b=a&&(一1);

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

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

63.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是()。A.A.数据库系统B.文件系统C.人工管理D.数据项管理

64.程序调试的任务是()。

A.设计测试用例B.验证程序的正确性C.发现程序中的错误D.诊断和改正程序中的错误

65.以下关于retllm语句的叙述中正确的是()。

A.一个自定义函数中必须有一条return语句

B.一个自定义函数中可以根据不同情况设置多条retum语句

C.定义成void类型的函数中可以有带返回值的return语句

D.没有return语句的自定义函数在执行结束时不能返回到调用处

66.下列描述中正确的是()。

A.程序就是软件

B.软件开发不受计算机系统的限制

C.软件既是逻辑实体,又是物理实体

D.软件是程序、数据和相关文档的集合

67.设j为Int型变量,则下面for循环语句的执行结果是()。

for(j=10;j>3;j--)

{if(j%3)j--;

--j;--j;

printf("%d",j);

}

A.63B.74C.62D.73

68.为了避免嵌套的条件分支语句if—else的二义性,C语言规定:C程序中的else总是与_____组成配对关系。

A.缩排位置相同的ifB.在其之前未配对的ifC.在其之前未配对的最近的ifD.同一行上的if

69.以下不构成无限循环的语句或语句组是()。

70.

下列程序的输出结果是()。

intfl(intx,inty){returnx>y?x:y;)

intf2(intx,inty){returnx>y?y:x;}

main

{inta=4,b=3,c=5,d=2,e,f,g;

e=f2(f1(a,b),f1(c,d));

f=f1(f2(a,b),f2(c,d));

g=a+b+c+d-e-f;

printf("%d,%d,%d\n",e,f,g);}

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

71.

72.从循环体内某一层跳出,继续执行循环外的语句是:___________。

A.break语句B.return语句C.continue语句D.空语句。

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

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

74.执行下列程序后,变量a,b,C的值分别是()。intx=5,y=4;inta,b,c;a=(--x==y++)?X:++y;b=++x:c=y:A.a=5,b=5,c=5B.a=4,b=5,c=5C.a=5,b=6,c=5D.a=1,b=5,c=6

75.

76.

77.

78.串的长度是______。A.A.串中不同字符的个数

B.串中不同字母的个数

C.串中所含字符的个数且字符个数大于零

D.串中所含字符的个数

79.若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是()。

A.a,point,*&a

B.&*a,&a,*point

C.*&point,*point,&a

D.&a,&*point,point

80.若a是数直类型,则逻辑表达式的值是()。A.1B.0C.2D.不知道a的值,不能确定

五、程序改错题(1题)81.下列给定程序中函数fun的功能是:从整数10到55之间,查找能被3整除且有一位上的数值是5的数,把这些数放在b所指的数组中,这些数的个数作为函数值返回。规定函数中al放个位数,a2放十位数。

请改正程序中的错误,使它能得出正确的结果。

注意:部分源程序在文件MODll.C中,不得增行或删行,也不得更改程序的结构!

六、程序设计题(1题)82.假定输入的字符串只包含字母和“#”号,请编写函数fun(),它的功能是:删除字符串中所有的“#”号。在编写函数时,不得使用C语言提供的字符串函数。例如,若字符串中的内容为“##w#e1##come###”,删除后,字符串中的内容则应当是“welcome”。请勿改动main()函数与其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.B栈是先进后出的原则组织数据,所以人栈最早的最后出栈,所以选择B。

2.D

3.B

4.B所谓常量是指在程序运行的过程中,其值不能被改变的量。在C语言中,有整型常量、实型常量、字符常量和字符串常量等类型。选项A是字符串,但使用单引号,错误,选项c,D,为实型常量中指数形式,但指数形式e(E)之前必须是数字,之后必须为整数,错误。故答案为B选项。

5.A

6.BB)【解析】在具有11个结点的满二叉树,其非叶子结点数为int(n/2),而叶子结点数等于总结点数减去叶子结点数。本题n=15,故非叶子结点数等于int(15/2)=7,叶子结点数等于15-7=8。

7.C解析:关于软件测试的目的,GrenfordJ.Myers在《TheArtofSoftwareTesting》一书中给出了深刻的阐述:软件测试是为了发现错误而执行程序的过程;一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试。整体来说,软件测试的目的就是尽可能多地发现程序中的错误。本题答案为C。

8.D解析:联合体的所有成员共占同一段内存,所以联合体变量的长度与它的最长成员所占长度…致,本题中float所占内存字节数为4,而\u3000int类型在TurboC\u30002.0中是占2字节、在VisualC++6.0中占4字节,所以int类型所占内存字节数不会超过float,那demo就与成员d2所占字节数是相同的,选项A的说法正确。联合体的所有成员的首地址都是相同的,和联合体变量的地址一致。故选项B和C都是正确的。由于int类型数据和float类型数据在内存中的存放格式是不一样的,所以给d1赋99后,d2中不会得到99.0这个值。故选项D不正确,答案应该选择D。

9.B

10.B

11.C将两个字符串连接起来组成一个字符串,选用strcat函数来连接。

12.A解析:本题考查的重点是typedef的理解运用。C语言允许通过typedef为数据类型定义新名字,但是,它并非是生成新的数据类型,因此选项A是错误的。

13.C

14.A在scanf函数的格式字符前可以加入一个正整数指定输入数据所占的宽度,但不可以对实数指定小数位的宽度,选项A错误,其他选项正确。故本题答案为A选项。

15.A解析:本题考查静态变量的问题。函数f中c是静态变量存放在静态存储区,在程序的整个运行期间都不释放占据的存储单元。函数f被调用3次,调用过程如下。

第1次调用;a=2、b=0、c=3,执行b++和c++后b=1、c=4,f(a)=a+b+c=2+1+4=7

第2次调用:a=2、b=0、c=4.执行b++和c++后b=1、c=5,f(a)=a+b+c=2+1+5=8

第3次调用:a=2、b=0、c=5,执行b++和c++后b=1、c=6,f(a)=a+b+c=2+1+6=9

所以输出结果为选项A。

16.C(33)C)解析:题中变量w的定义为double型,函数fun2()的定义为int型,按照各类数值型数据间的混合运算,整型数据被转换为实型数据。

17.D在表达式a*b+d-c中,double的类型最高,C语言中,由低类型自动向高类型转换,所以最后的结果一定是double型。

18.B\n本题考查了强制类型转换。9/2为double型,所以结果为4.5,又强制转换为整型,所以结果为4。9%2为取余运算,结果为1。最终结果4-1=3。

\n

19.B解析:编译时,编译系统不为局部变量分配内存单元,而是在程序运行中,当局部变量所在的函数被调用时,编译系统根据需要要临时分配内存,调用结束空间释放;全局变量一经定义,编译系统为其分配固定的内存单元,在程序运行的自始至终都占用固定的单元。在考虑内存不定的情况下,最好使用全局变量。

20.D

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

22.22解析:'\\13':表示八进制数13表示的ASCII字符,是一个字符,占一个字节;而”\\12”是个字符串,除了八进制数12表示的ASCII字符占一个字节外,还有在字符串的末尾加上串结束标志“'\\0'”,所以共有2个字节。

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

解析:本题,已知结果z=16.00,即16.0=a/2+b*x/y+1/2,分别把a、b,代入,得到16.0=9/2+2*x/1.1+1/2。因为a=9,a是整型,所以9/2的值在没有进行类型转换时,等于4,1/2同理,等于0。代入求一元一次方程,很容易就可以得出x=6.6。

25.12345678901,2,3,4,5,6,7,8,9,0,解析:p指向a的首地址。a+10表示的是a[10]的地址,嘲此此程序的功能就是输出数组a。

26.19

27.xx解析:考查函数的调用。函数调用时,实参与形参一致,函数F只有一个形参,故函数的调用为F(x)。

28.11解析:本题考查局部变量和全局变量的区别:局部变量是指作用域在函数级和块级的变量,全局变量是指作用域在程序级和文件级的变量。本程序首先定义了一个全局变量m=17,m=17的作用域在整个程序内。在fun函数内部定义了一个局部变量m=3,m=3的作用域仅在fun函数内部,通过fun函数返回两个形参的积再减m。在主函数中,输出fun(a,b)/m=(5*7-3)/17=1。

29.45994599解析:要注意每条证语句后面是三条语句,而不是一条语句。执行第一条if语句时,条件表达式不成立,执行a=c;c=t;,此时a=5,c=99;执行第二条if语句时,条件表达式成立,执行t=b;b=a;a=t;交换a,b的值,输出结果为4,5和99。

30.1111解析:程序中结构体数组data首地址(即&data[0])赋值给结构体指针变量p,++(P->x)表示先将p所指向的结构体变量的成员x值加1,然后将此x(即data[0].x)输出。

31.pa[i]avg/n

32.0'或0或NULLn++或++n或n=n+1或n+=10'或0或NULL\r\nn++或++n或n=n+1或n+=1

33.s[i++]s[i++]解析:本题中为了能实现字符串的拷贝,需要使字符数组s从头到尾依次遍历其所有元素.本题应使用i的自增后置来实现。

34.220220解析:根据赋值运算符“自右至左”的结合顺序,程序中赋值表达式x=f*=n/=(c=50)的求解步骤为:首先计算n/=(c=50),即n=n/c=100/50=2;然后计算f*=n,即f=f*n=10*2=20.000000,由此得到x的值为20.000000。

35.11解析:运算符的优先级次序由高到底是!,算术运算符,&&,||。先运算!(x=y),由于x=3非零,则表达式!(x=y)的值为0。再运算x+z,x+z=3+4=7,非零则运算y-z,y-z=3-4=-1,非零则表达式x+z&&y-z的值为1。0||1=0,则表达式!(x=y)||x+z&&y-z的值是1。

36.上溢上溢解析:入队运算是指在循环队列的队尾加入一个新元素。这个运算有两个基本操作:首先将队尾指针进一(即rear=rear+1),并当rear=m+1时置rear=1;然后将新元素插入队尾指针指向的位置。当循环队列非空(s=1)时且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算,这种情况称为“上溢”。

37.p=a+4或p=&a[4]。p=a+4或p=&a[4]。解析:可以直接将数组元素a[4]的地址(即&a[4])赋给指针变量p,也可以用数组名加偏移量的形式(即a+4)表示数组元素a[4]的地址,并赋给指针变量p。

38.E-R图E-R图解析:数据库逻辑设计的任务是将概念模型进一步转化成相应的数据模型。而E-R图是主要的概念模型,因此数据库的逻辑设计的主要工作是将E-R图转换成关系模式。

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

40.35

41.D解析:C语言把文件看成是一个字符(字节)的序列,即由一个一个字符(字节)的数据顺序组成。根据数据的组织形式,可分为ASCII文件和二进制文件。ASCII文件又称文本文件,它的每一个字节放一个ASCII代码,代表一个字符。二进制文件是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。

42.C解析:本题考查的是指向函数的指针。函数指针定义的基本格式为:类型标识符(*指针变量名)()。“类型标识符”为函数返回值的类型。

43.C解析:strcpy(s1,s2)函数的功能是将字符串s2复制到字符串s1中(注意:要保证s1存储区能容纳下s2字符串)。

44.C解析:程序中当i不能整除2时输出*,然后输出#,能够整除2时将结束本次循环,进入到下一次循环。当循环结束后,输出$。

45.D

46.C解析:软件设计遵循软件工程的基本目标和原则,建立了适用于在软件设计中应该遵循的基本原理和与软件设计有关的概念。①抽象是一种思维工具,就是把事物本质的共同特性抽出来而不考虑其他细节。②模块是指可以单独命名且可编址的元素。如高级语言中的过程、函数、子程序等。③信息隐蔽是指在一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不能访问的。④模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。因此,本题的正确答案是C。

47.C解析:当switch后面括弧内的表达式的值与某一个case后面的常量的表达式的值相等时,就执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句。

48.C解析:编译预处理时,用“type1.h”中的内容替代命令#include“type1.h”。表达式“i=M1+M2”经过宏替换为“i=5*3+5*2”即i=25,所以最后输出的i的值为25。所以4个选项中C正确。

49.C解析:对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止.在最坏的情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为n。

50.B解析:C语言源程序的后缀为.c;经过编译得到的目标程序文件的后缀为.obj;再将目标程序文件链接后得到可执行文件的后缀为.exe。故本题应该选择B。

51.A解析:本题考核的知识点是文件的简单应用。stdin是标准输入设备的文件指针,不需定义直接可以使用,它随系统的启动而打开,随系统的关闭而关闭,fgetc()函数的作用是从某个文件中读取一个数据,其参数为要读取文件的文件指针,所以本题中的调用形式是正确的。fopen()函数有两个参数,第一个参数是打开的文件名,第二个参数是文件打开模式,两个参数都是字符串,本例中'fout=fopen(\'abc.txt\',\'w’);”语句的fopen()函数参数是错误的,应该用双引号'''',正确的应改为fout=fopen(“abc.txt”,“w”);。所以,A选项为所选。

52.A解析:字符串比较大小的标准是从第一个字符开始依次向右比较,遇到某一个字符ASCII码值较大时,该字符所在的字符串就是较大的字符串。主函数中调用了函数scmp(),分析不难知道该函数的作用是返回参加比较的两个字符串中的较小的字符串,它的主函数中定义了一个二维字符数组来存放三个字符串.接着通过for循环给每个字符串赋值,赋值后三个字符串分别为“abcd”、“abba”、“abc”,接着比较str[0]和str[1]的大小,根据字符串大小比较标准可知str[0]较小,然后通过函数strcpy()把str[0]中的字符串,拷贝到string中,然后比较string和str[2]的大小,比较结果是string较小,最后输出string的值为“abcd”,所以,4个选项中选项A符合题意。

53.A解析:C语言规定,赋值号的右边可以是一个赋值表达式.因此选项C)、选项D)正确:在选项B)中,a++是一个自加1的表达式,a被重新赋值,因此它是一个合法的赋值表达式:选项A)中,a+d是一个算术表达式,虽然最后有一个分号,但这个表达式中没有赋值操作,因此它不是一条赋值语句。

54.B【命题目的】考查有关线性表存储结构的基本知识。

【解题要点】顺序存储结构中,数据元素存放在一组地址连续的存储单元中,每个数据元素地址可通过公式LOC(ai)=LOC(a1)+(I-1)L计算得到,从而实现了随机存取。对于链式存储结构,要对某结点进行存取,都得从链的头指针指向的结点开始,这是一种顺序存取的存储结构。

【考点链接】顺序存储结构和链式存储结构的定义和性质,两种存储结构的操作方法。

55.D本题主要考查软件的测试。软件测试的主要目的体现在下面几个方面。

(1)软件测试是为了发现错误而执行程序的过程。

(2)一个好的测试用例能够发现至今尚未发现的错误。

(3)一个成功的测试是发现了至今尚未发现的错误的测试。

软件测试的效率是指利用更少的成本创造更多的价值,提供软件测试效率的方法有很多,如制定一个合理的详细的测试计划,了解测试项目的业务需求,集中对付那些错误群集的程序等。而选项A所描述的随机选取测试数据是不能保证提高测试效率的,选项B描述的取一切可能的输入数据作为测试数据显然不能提高测试效率,反而使工作量加大,降低测试效率。

56.D本题主要考查自加与自减运算符。在C语言中,自加与自减运算符具有以下性质:

(1)自加运算符“++”和自减运算符“--”的运算本身是一种赋值运算,其结果是使运算对象的值增1或减1。

(2)++、--运算符是单目运算符,运算对象可以是整型变量或字符型变量,也可以是实型变量,但不能是常量和表达式。

(3)自加、自减运算符无论是作为前缀还是后缀运算符,对于变量而言,其效果相同,但作为表达式来说,其值不同。

(4)++和--运算符的结合方向是“自右向左”。

(5)不要在一个表达式中对同一个变量进行多次自增或自减运算。可以知道本题正确的答案是D。

57.C2(n-1)

=2(5-1)=16

58.A解析:函数定义时如果数据类型默认,则默认为int。函数中如果有“retum(表达式):”语句,表达式的类型可能与函数的类型不一致,但它并不能改变函数的类型,实际情况是把表达式转换为函数值的类型作为返回值,因此本题的函数值类型是int。

59.A解析:C语言中文件有文本文件与二进制文件,对文件的使用前必须先打开,打开方式有只读、写入、读写等方式。

60.C解析:本题考核的知识点是指针变量的基本应用。程序中定义了两个变量a和b,并分别赋初值为7和8,定义了三个指针变量p、q、r,并让指针p指向变量a,让Q指向变量b,然后通过一个中间指针变量r,使指针变量p和q互换,互换后p指向q所指的内容即b,Q指向开始p所指向的内容即a,因此最后输出的*p,*q的值为8,7,a,b的值没有改变仍为7,8,所以,4个选项中选项C符合题意。

61.C本题考查对面向对象的理解,面向对象的程序设计是对象模拟问题领域中的实体,各对象之间相对独立,相互依赖性小,通过消息来实现对象之间的相互联系。

62.B

\n当逻辑运算符“&&”两边的值是非零时,逻辑表达式的值为真(即为1)。所以b=2&&(-1)=1,2%9=2,故a=2,故先算a/10=25/10=2。

\n

63.A数据库系统的一个重要目标就是使程序和数据真正分离,数据蚀立性包括数据的物理独立性和数据的逻辑独立性。相对文件系统人工管理和数据项管理,数据库系统的数据独立性大大增加。

64.D程序调试的任务是诊断和改正程序中的错误。

65.B在函数中允许有多个IettLrll语句,但每次调用只能有一个return语句被执行,因此只能返回一个函数值。定义成void类型的函数,不允许从该函数取得返回值,也不允许使用return语句,c选项描述错误。没有return语句的函数在执行到函数的最后一条语句后会自动返回到调用处,A、D选项描述错误。因此B选项正确。

66.D解析:软件是运行在计算机硬件之上的逻辑实体,包括程序、数据和相关的文档,软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制。

67.B当j=10时,for循环成立,j%3为1,if条件也为真,当执行完j--后,j为9,再执行“--j;--J;”后,j的值为7,因此输出7,继续循环执行j--后j为6,当j=6时for循环成立,j%3为0,if条件为假,此时执行“--j;--j;”后,j为4,输出4,再继续循环执行j--后j为3,当j=3时,for循环不成立,退出循环,故选择8选项。

68.C

69.A选项A)中d0后面的语句只执行了一次便结束了循环;B)选项中条件while(1)永远成立,因此是死循环;C)选项中n的值为l0,而循环体为空语句,所以while(n)永远为真,进入死循环;D)选项中fbr语句第二个表达式为空,因此没有判定条件,进入死循环。因此本题答案为A)。

70.A

\n根据函数的定义可知,如果x>Y成立,则函数f1返回x的值,函数f2返回y的值。所以fl(a,b)=4,n(c,d)=5,f2(a,b)=3;,f2(c,d)=2,故e=f2(4,5)=4,f=f1(3,2)=3,g=4+3斗5+2-4-3=7。

\n

71.B

72.A

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

74.B本题考查自加(++)、自减(--)运算符的使用。“++x,--x”,在变量x前使用,先使X的值加1或者减1,再使用此时的表达式的值参与运算;“x++,x--”,先把使用X的值参与运算,在使用X之后,再使x的值加1或者减1。对于表达式--x=4,y++=4,两者相等,--x=y++为真,所以a=x=4,执行完此语句后y的值是5。第2个表达式b=++x,x的值先加1,然后赋给b,即b=x+1=5;第一个表达式c=y=5。故B正确。

75.C

76.B

77.A

78.D解析:串的长度指的是串中字符的个数,且其字符个数可以为零。选项D正确。

79.D本题主要考查指针变量对数值的引用。在题目中,首先定义了整型指针变量point和一个整型变量a,变量a的初值为4,然后是指针变量指向a,或者说将变量a所在存储单元的地址值赋给指针变量。

在选项A中,很显然,不全是地址,只有point表示地址,而*&a等价于*(&a),表示取一个数值。

在选项B中,也不都表示地址,其中*point表示数值,其他两个表示地址。

在选项C中,与选项B类似,其中的*point表示数值。

在选项D中,都表示地址,是题目的选择答案。

80.A无论a的值为多少,(a==1)和(a!=1)总会有一个成立,两者或运算,则值为真。为1。81.

(1)a2=k/10;

(2)returni;

【考点分析】本题考查:取数值n的各个位;return语句,将需要返回的函数值返回给函数main。

【解题思路】

(1)a2存放十位数,所以是a2=k/10,此处是一个书写错误。

(2)根据题意,要返回能被3整除的数的个数,从循环体中可以知道其个数是由i来计算的,所以返回的是i。

82.

【解析】在while循环中,利用if判断表达式中每一个字符是否为“#”,如果不是,将其复制到字符串,否则跳过,这就实现了函数的功能。

(1)首先利用工作指针指向字符串,当指针不指向串尾时,就对字符串进行循环判断。

(2)在循环中利用if判断表达式字符是否为“#”,如果不是,将其复制到字符串,否则跳过。

(3)所有字符处理完后,记得在新串s的末尾加上结束符“ˊ\0ˊ”。

2021年江西省南昌市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出棱的顺序是()。A.A.12345ABCDEB.EDCBA54321C.ABCDEl2345D.54321EDCBA

2.

3.若栈采用顺序存储方式存储,现两栈共享空间V[1..m],top[i]代表第i个栈(i=1,2)栈顶,栈1的底在v[1],栈2的底在V[m],则栈满的条件是()。

A.|top[2]-top[1]|=0

B.top[1]+1=top[2]

C.top[1]+top[2]=m

D.top[1]=top[2]

4.以下选项中合法的c语言常量是()。

A.,C—STR’B.2014.1C.”\l.0D.2EK

5.连通图G中有n个顶点,G的生成树是()连通子图。

A.包含G的所有顶点B.包含G的所有边C.不包含G的所有顶点D.包含G的所有顶点和所有边

6.设一棵满二叉树共有15个结点,则在该满二叉树中的叶子结点数为()

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

7.下列对于软件测试的描述中正确的是()。

A.软件测试的目的是证明程序是否正确

B.软件测试的目的是使程序运行结果正确

C.软件测试的目的是尽可能多地发现程序中的错误

D.软件测试的目的是使程序符合结构化原则

8.设有以下定义uniondata{intd1;floatd2;}demo;则下面叙述中错误的是()。A.A.变量demo与成员d2所占的内存字节数相同

B.变量demo中各成员的地址相同

C.变量demo和各成员的地址相同

D.若给demo.d1赋99后,demo.d2中的值是99.0

9.如有inta=11;则表达式(a++*1/3)的值是()。

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

10.

11.将两个字符串连接起来组成一个字符串时,选用()函数。A.strlen()B.strcpy()C.strcat()D.strcmp()

12.以下关于typedef的叙述错误的是A.用typedef可以增加新类型

B.typedef只是将已存在的类型用一个新的名字来代表

C.用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名

D.用typedef为类型说明一个新名,通常可以增加程序的可读性

13.要解决散列引起的冲突问题,最常用的方法是()

A.数字分析法、除留余数法、平方取中法

B.除留余数法、线性探测法、平方取中法

C.线性探测法、二次探测法、链地址法

D.除留余数法、线性探测法、二次探测法

14.以下有关scanf函数的叙述中错误的是()。

A.在scanf函数的格式字符前既可以加入正整数指定输入数据所占的宽度,也可以对实数指定小数位的宽度

B.scanf函数有返回值,其值就是本次调用scanf函数时正确读入的数据项个数

C.scanf函数从输入字符流中按照格式控制指定的格式解析出相应数据,送到指定地址中

D.在scanf函数中的格式控制字符串不会输出到屏幕上

15.设有以下函数f(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}如果在下面的程序中调用该函数,则输出结果是______。main(){inta=2,i;for(i=0;i<3;i++)printf("%d\n"f(a));}

A.789B.7911C.71013D.777

16.有以下程序

intfun1(doublea){returna*=a;}

intfun2(doublex,doubley)

{doublea=0,b=0;

a=fun1(x);b=fun1(y);return(int)(a+b);

}

main()

{doublew;w=fun2(1.1,2.0);……}

程序执行后变量w中的值是A.5.21B.5C.5.0D.0.0

17.若有以下定义:chara;intb;floatc;doubled;则表达式a*b+b-c值的类型为()。A.floatB.intC.charD.double

18.表达式:(int)((double)9/2)-(9)%2.的值是A.0B.3C.4D.5

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

A.在C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

B.在C的函数中,最好使用全局变量

C.外部变量可以在函数之间传递数据

D.自动变量实质上是一个函数内部的局部变量

20.某堆栈的输入序列为a,b,c,d,下面的四个序列中,不可能是它的输出序列的是()。

A.a,c,b,dB.b,c,d,aC.c,d,b,aD.d,c,a,b

二、2.填空题(20题)21.在深度为7的满二叉树中,度为2的节点个数为()。

22.\13'在内存中占1个字节,"\12"在内存中占______个字节。

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

24.下列程序的输出结果是16.00,请填空:

main()

{

inta=9,b=2;

floatx=【】,y=1.1,z;

z=a/2+b*x/y+1/2;

printf("%5.2f\n",z);

}

25.有以下程序:

main()

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

for(p=a;p<a+10;p++)printf("%d,",*p);

}

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

26.某二叉树中度为2的节点有18个,则该二叉树中有()个叶子节点。

27.以下程序通过函数SunFun求。这里f(x)=x2+1,由F函数实现。请填空。

main()

{printf("Thesum=%d\n",SunFun(10));}

SunFun(intn)

{intx,s=0;

for(x=0;x<=n;x++)s+=F(【】);

returns;

}

F(intx)

{returnx*x+1;}

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

intm=17;

intfun(intx,inty)

{intm=3;

return(x*Y-m);

}

main()

{inta=5,b=7;

printf("%d\n",fun(a,B)/m);

}

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

#include<stdio,h>

main()

{inta=3,b=4,c=5,t=99;

if(b<a&&a<c)t=a;a=c;c=t;

if(a<e&&b<c)t=b;b=a;a=t;

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

}

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

structs

{intx,y;}data[2]={10,100,20,200};

main()

{

structs*p=data;

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

}

31.下面的程序通过函数average计算数组中各元素的平均值,请填空。

floatavetage(int*pa,intn)

{inti;

floatavg=0.0;

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

avg=avg+【】;avg=【】;

returnavg;

}

main()

{inti,a[5]={2,4,6,8,10,};

floatmean;

prinf("%mean=%f\n",mean);

}

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

strcen(chara[],charb[])

{intnum=0,n=0;

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

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

return(num);

}

33.若有定义语句chars[100],d[100];intj=0,i=0;且s中已赋字符串,请填空以实现拷贝。(注:不使用逗号表达式)

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

d[j]=0;

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

#include<stdio.h>

main()

{charc;intn=100;

floatf=10:doublex:

x=f*=n/=(c=50);

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

}

35.若有如下定义:

intx=2,y=3,z=4;

则表达式!(x=y)||x+z&&y-z的值是【】。

36.当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为【】。

37.若有以下定义,则使指针p指向值为35的数组元素的语句是______。

inta[10]={14,27,47,29,35,21,49,71},*p;

38.数据库的逻辑模型设计阶段的任务是将______转换成关系模式。

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

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));

}

40.十进制数53转换为十六进制数为【】。

三、1.选择题(20题)41.下列关于C语言数据文件的叙述中正确的是A.文件由ASCII码字符序列组成,C语言只能读写文本文件

B.文件由二进制数据序列组成,C语言只能读写二进制文件

C.文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件

D.文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件

42.语句int(*ptr)()的含义是()。

A.ptr是一个返回值是int的函数

B.ptr是指向int型数据的指针变量

C.ptr是指向函数的指针,该函数返回一个int型数据

D.ptr是一个函数名,该函数的返回值是指向int型数据的指针

43.若有下列说明,则()不是对strcpy库函数的正确的调用。strcpy库函数用于复制一个字符串:char*str1="abcd",str2[10],*str3="hijklmn",*str4[2],*str5="aaaa"

A.strcpy(str2,str1)

B.strcpy(str3,str1)

C.strcpy(str4,str1)

D.strcpy(str5,str1)

44.以下程序的输出结果是()。#include<stdio.h>main(){inti;for(i=1;i<5;i++){if(i%2)printf("*");elsecontinue;printf("#");}printf("$\n");

A.*#*#*#$B.#*#*#*$C.*#*#$D.#*#*$

45.下列变量说明语句中,正确的是

A.char:abc;B.chara;b;c;C.intx;z;D.intx,z;

46.下面不属于软件设计原则的是()。

A.抽象B.模块化C.自底向上D.信息隐蔽

47.下面程序的输出是______。main(){char*s="12134211";intv1=0,v2=0,v3=0,v4=0,k;for(k=0;s[k];k++)switch(s[k]){default:v4++;case'1':v1++;case'3':v3++;case'2':v2++;}printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4);}

A.v1=4,v2=2,v3=1,v4=1

B.v1=4,v2=9,v3=3,v4=1

C.v1=5,v2=8,v3=6,v4=1

D.v1=8,v2=8,v3=8,v4=8

48.程序中头文件type1.h的内容是#defineN5#defineM1N*3程序如下:#define"type1.h"#defineM2N*2main(){inti;i=M1+M2;printf("%d\n",i);)程序编译后运行的输出结果是()。

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

49.对长度为n的线性表进行顺序查找,在最坏的情况下需要比较的次数为()。

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

50.C语言源程序名的后缀是A..exeB..CC..objD..cp

51.以下程序企图把从终端输入的字符输出到名为abc.txt的文件中,直到从终端读入字符#号时结束输入和输出操作,但程序有错。#include<stdio.h>main(){FILE*fout;charch;fout=fopen('abc.txt','w');ch=fgetc(stdin);while(ch!='#'){fputc(ch,fout);ch=fgetc(stdin);}fclose(fout);}出错的原因是

A.函数fopen调用形式有误B.输入文件没有关闭C.函数fgetc调用形式有误D.文件指针stdin没有定义

52.以下程序十函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址:#include<stdio.h>#include<string.h>char*scrap(char*s1,char*s2){if(strcmp(s1,s2)<0)return(s1);elsereturn(s2);}main(){inti;charstring[20],str[3][20];for(i=0;i<3;i++)gets(str[i]);strcpy(string,scmp(str[0],str[1]));/*库函数strcpy对宁符中进行复制*/strcpy(string,scmp(string,str[2]));printf("%s\n",string);}若运行时依次输入:abcd、4bba和abc三个宁符市,则输出结果为

A.abcdB.abbaC.abcD.abca

53.若a、b、c、d都是int型变量且都已经正确赋初值,则下列不正确的赋值语句是()。

A.a+d;B.a++;C.a=b=c=d=100;D.a=(b=3)+(d=5);

54.线性表的顺序存储结构和线性表的链式存储结构分别是______。

A.顺序存取的存储结构、顺序存取的存储结构

B.随机存取的存储结构、顺序存取的存储结构

C.随机存取的存储结构、随机存取的存储结构

D.任意存取的存储结构、任意存取的存储结构

55.为了提高测试的效率,应该()。

A.随机选取测试数据

B.取一切可能的输入数据作为测试数据

C.在完成编码以后制定软件的测试计划

D.集中对付那些错误群集的程序

56.下列关于单目运算符++、--的叙述中正确的是A.它们的运算对象可以是任何变量和常量

B.它们的运算对象可以是char型变量和int型变量,但不能是float型变量

C.它们的运算对象可以是int型变量,但不能是double型变量和float型变量

D.它们的运算对象可以是char型变量、int型变量和float型变量

57.在深度为5的满二叉树中,叶子结点的个数为A.32B.31C.16D.15

58.以下函数值的类型是_______。fun(floatx){floaty;y=3*x-4;returny;}

A.intB.不确定C.voidD.float

59.下面的程序执行后,文件test.t中内容是______。#include<stdio.h>voidfun(char*fName,char*st){FILE*myf;inti;myf=fopm(fname,"w");for(i=0;i<strlen(st);i++)fputc(st[i],myf);fclose(myf);}main(){fun("test.t","newworld");fun("test.t","hello,");}

A.hello,B.newworldhelloC.newworldD.hello.rld

60.有以下程序main(){inta=7,b=8,*p,*q,*r;p-&a;q=&b;r=p;p=q;q=r;printf("%d,%d,%d,%d\n",*p,*q,a,b);程序运行后的输出结果是

A.8,7,8,7B.7,8,7,8C.8,7,7,8D.7,8,8,7

四、选择题(20题)61.下列叙述中正确的是()。

A.在面向对象的程序设计中,各个对象之间具有密切的关系

B.在面向对象的程序设计中,各个对象都是公用的

C.在面向对象的程序设中,各个对象之间相对独立,相互依赖性小

D.上述3种说法都不对

62.

下列程序的输出结果是()。

main

{inta,b,d=25;

a=d/10%9;

b=a&&(一1);

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

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

63.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是()。A.A.数据库系统B.文件系统C.人工管理D.数据项管理

64.程序调试的任务是()。

A.设计测试用例B.验证程序的正确性C.发现程序中的错误D.诊断和改正程序中的错误

65.以下关于retllm语句的叙述中正确的是()。

A.一个自定义函数中必须有一条return语句

B.一个自定义函数中可以根据不同情况设置多条retum语句

C.定义成void类型的函数中可以有带返回值的return语句

D.没有return语句的自定义函数在执行结束时不能返回到调用处

66.下列描述中正确的是()。

A.程序就是软件

B.软件开发不受计算机系统的限制

C.软件既是逻辑实体,又是物理实体

D.软件是程序、数据和相关文档的集合

67.设j为Int型变量,则下面for循环语句的执行结果是()。

for(j=10;j>3;j--)

{if(j%3)j--;

--j;--j;

printf("%d",j);

}

A.63B.74C.62D.73

68.为了避免嵌套的条件分支语句if—else的二义性,C语言规定:C程序中的else总是与_____组成配对关系。

A.缩排位置相同的ifB.在其之前未配对的ifC.在其之前未配对的最近的ifD.同一行上的if

69.以下不构成无限循环的语句或语句组是()。

70.

下列程序的输出结果是()。

intfl(intx,inty){returnx>y?x:y;)

intf2(intx,inty){returnx>y?y:x;}

main

{inta=4,b=3,c=5,d=2,e,f,g;

e=f2(f1(a,b),f1(c,d));

f=f1(f2(a,b),f2(c,d));

g=a+b+c+d-e-f;

printf("%d,%d,%d\n",e,f,g);}

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

71.

72.从循环体内某一层跳出,继续执行循环外的语句是:___________。

A.break语句B.return语句C.continue语句D.空语句。

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

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

74.执行下列程序后,变量a,b,C的值分别是()。intx=5,y=4;inta,b,c;a=(--x==y++)?X:++y;b=++x:c=y:A.a=5,b=5,c

温馨提示

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

评论

0/150

提交评论