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

下载本文档

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

文档简介

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

一、单选题(20题)1.

2.

3.在以下给出的表达式中,与“while(E)”中的“(E)”不等价的表达式是()。

A.(E>0||E<0)B.(E==0)C.(!E==0)D.(E!=0)

4.设有以下说明语句

structex

{intx;floaty;charz;}example;

则下面的叙述中不正确的是

A.struct结构体类型的关键字

B.example是结构体类型名

C.x,y,z都是结构体成员名

D.structex是结构体类型名

5.C语言可执行程序的开始执行点是()。

A.包含文件中的第一个函数B.程序中第一个函数C.程序中的main()函数D.程序中第一条语句

6.排序的算法很多,若排序的稳定性和不稳定性分类,则()是不稳定排序。

A.冒泡排序B.归并排序C.直接插入排序D.希尔排序

7.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

8.下列叙述中正确的是A.程序设计就是编制程序

B.程序的测试必须由程序员自己去完成

C.程序经调试改错后还应进行再测试

D.程序经调试改错后不必进行再测试

9.若x,i,j和k都是int型变量,则执行下面表达式后x的值为()。x=(i=4,j=16,k=32)

A.4B.16C.32D.52

10.

11.函数fseek(pf,OL,SEEK_END)中的SEEK_END代表的起始点是()。

A.文件开始B.文件末尾C.文件当前位置D.以上都不对

12.以下程序intaa[3][3]={{2},{4},{6}};main(){inti,*p=&aa[0][0];for(i=0;i<2;i++){if(i==0)aa[i][i+1]=*p+1;else++p;printf("%d",*p);}}的输出是________。

A.23B.26C.33D.36

13.若以下选项中的变量已正确定义,则正确的赋值语句是()。

A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3

14.有以下程序:intfun(intx){intp;if(x==0||x==1)return(3);p=x-fun(x-2);returnp;}main{printf("%d\n",fun(7));}执行后的结果是()。A.7B.3C.2D.0

15.有以下程序:#include<stdio.h>voidfun(doublex,double*y,double*z){*y=*y-1.0;*z=*z+x;}main(){doublea=2.5,b=9.0,*pa,*pb;pa=&a;pb=&b;fun(b-a,pa,pb);printf(“%f\n”,a);}程序运行后的输出结果是()。

A.8.000000B.9.000000C.1.500000D.10.500000

16.若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为()。

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

17.有下列程序:fun(intX,inty){return(x+y);)main(){inta=1,b=2,c=3,sum;sum=fun((a++,b++,a+b),c++);printf("%d\n",sum);}执行后的输出结果是()。A.6B.7C.8D.9

18.以下说法不正确的是

A.C程序中必须有一个main()函数,C程序是从main()函数的第1条语句开始执行的。

B.非主函数都是在执行主函数时,通过函数调用或嵌套调用而得以执行的。

C.C程序中的main()函数必须放在程序的开始位置。

D.C程序中的main()函数位置可以任意指定。

19.

20.有以下程序:#includeintadd(inta,intb){return(a+b);}Main(){Intk,(*f)(),a=5,b=10;f=add;...}则以下函数调用语句错误的是()。A.k=f(a,b);B.k=add(a,b);C.k=(*f)(a,b);D.k=*f(a,b);

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

floatfun(intx,inty)

{return(x+y);}

main()

{inta=2,b=5,c=8;

printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}

22.下面函数的功能是将一个字符串的内容颠倒过来,请填空。

voidfun(charstr[])

{inti,j,k;

for(i=0,j=【】;i<j;i++,j--)

{k=str[i];

str[i]=str[j];

str[j]=k;}}

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

abcl23edf456gh,执行程序后输出: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);

}

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

25.已知字符A的ASCⅡ代码值为65,以下程序运行时若从键盘输入:B33<回车>.则输出结果是()。

#include

main()

{chara,b;

a=getchar();scanf("%d",&B);

a=a-'A'+'0';b=b*2;

printf("%c%c\n",a,B);

}

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

#include<stdio.h>

msin()

{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.以下程序段的输出结果是【】。

inta=1234;

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

28.在具有n个单元、顺序存储的循环队列中,队满时,共有【】个元素。

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

30.有以下程序:

intsub(intn){return(n/10+n%10);}

main()

{intx,y;

scanf("%d",&x);

y=sub(sub(sub(x)));

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

}

若运行时输入:1234<回车>,程序的输出结果是【】。

31.mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。

intmystrlen(char*str)

{inti;

for(i=0;【】!='\0';i++);

return(【】);

}

32.在面向对象方法中,信息隐蔽是通过对象的______性来实现的。

33.关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、______和自定义完整性。

34.以下程序中函数f的功能是在数组x的n个数(假定n个数互不相同)小找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。请填空。

#include<stdio.h>

voidf(intx[],intn)

{intp0,p1,i,j,t,m;

i=j=x[0];p0=p1=0;

for(m=O;m<n;m++)

{if(x[m]>i){i=x[m];p0=m;}

elseif(x[m]<j){j=x[m];p1=m;)

}

t=x[p0];x[p0]=x[n-1];x[n-1]=t;

t=x[pl];x[p1]=【】;【】=t

}

main()

{inta[10],u;

for(u=0;u<10;u++)scamp("%d",&a[u]);

f(a,10);

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

ptintf("\n");

}

35.以下程序中函数fun的功能是:构成一个如图所示的带头结点的单词链表,在结点的数据域中放入了具有两个字符的字符串。函数disp的功能是显示输出该单链表中所有结点中的字符串。请填空完成函数disp。[*]

#include<stdio.h>

typedefstructnode/*链表结点结构*/

{charsub[3];

structnode*next;

}Node;

Nodefun(chars)/*建立链表*/

{…}

voiddisp(Node*h)

{Node*

36.以下程序中给指针p分配三个double型动态内存单元,请填空。

#include<stdio.h>

main()

{dOuble*p;

p=(double*)malloc();

p[0]=1.5;p[1]=2.5;p[2]=3.5

printf("%f%f%f\n",p[0],p[1],p[2]);

}

37.E-mail地址由用户名和域名两部分组成,这两部分的分隔符为【】。

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

#include<stdio.h>

main()

{intx=3,y=2,z=1;

if(x<y)

if(y<0)z=0;

elsez+=1;

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

}

39.已知a为8位二进制数,要想通过ab运算使a的低5位变反(即0变1,1变0),高3位不变,b的值应为【】。

40.在结构化分析方法中,用于描述系统中所用到的全部数据和文件的文档称为【】。

三、1.选择题(20题)41.C语言可执行程序的开始执行点是()。

A.包含文件中的第一个函数B.程序中第一个函数C.程序中的main()函数D.程序中第一条语句

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

A.在赋值表达式中,赋值号的左边既可以是变量,也可以是任意表达式

B.实型变量中允许存放整型数

C.若a和b类型相同,在执行了赋值a=b后,b中的值将放入a中,但b中的值不变

D.在C程序中,求余运算符“%”两边的类型相同时才能进行运算

43.数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和______。A.编码设计B.测试阶段C.运行阶段D.物理设计

44.算法的空间复杂度是指()。

A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间

45.下列程序的功能是()。main(){staticints[3][3]={1,2,3,4,5,6,7,8,9,),m,n;for(m=0;m<3;m++){for(n=0;n<=m;n++)printf("%d",s[m][n]);printf("\n');}}

A.输出3×3矩阵的下三角的元素

B.输出3×3矩阵的上三角的元素

C.输出3×3矩阵的对角线上的元素

D.输出3×3矩阵的元素

46.在计算面中,算法是指______。

A.查询方法B.加工方祛C.解题方案的准确而完整的描述D.排序方法

47.请读程序:#include<stdio.h>#include<string.h>voidfun(char*w,intm){chars,*p1,*p2;p1=w;p2=w+m-1;while(p1<p2){s=*p1++;*pl=*p2--;*p2=s;}}main(){chara[]="ABCDEFG";fun(a,strlen(a));puts(a);}上面程序的输出结果是()

A.GEFDCBAB.AGADAGAC.AGAAGAGD.GAGGAGA

48.有以下程序:intfun1(doubleA){returna*=a;}intfun2(doublex,doubley){doublea=0,b=0;a=fun1(x);b=funl(y);return(int)(a+B);}main(){doublew;w=fun2(1.1,2.0);……}程序执行后变量w中的值是()。

A.5.21B.5C.5D.0

49.下列有关数据库的描述,正确的是A.数据处理是将信息转化为数据的过程

B.数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变

C.关系中的每一列称为元组,一个元组就是一个字段

D.如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字

50.若有说明语句:double*p,a;则能通过scanf语句正确给输入项读入数据的程序段是()。

A.*p=&a;sCanf("%1f",p);

B.*p=&a;scanf("%f",p);

C.p=&a;scanf("%1f",*p);

D.p=&a;scanf("%1f",p);

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

A.在C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值

B.在C语言中,在调用函数时,实参和对应形参在类型上只需赋值兼容

C.在C语言中,外部变量的隐含类型是自动存储类别

D.在C语言中,函数形参的存储类型是自动(auto)类型的变量

52.设有以下语句:structst{intn;structst*next;};staticstructsta[3]={5,&a[1],7,&a[2],9,'\0'},*p;p=&a[0];则表达式的值是6的为______。

A.p++->nB.p->n++C.(*p).n++D.++p->n

53.有以下程序intf1(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

54.已知intk=10,m=3,n;则下列语句输出结果是printf("%d\n",n=(k%m,k/m));

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

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

A.log2nB.n/2C.nD.n+1

56.下列不属于软件工程的3个要素的是______。

A.工具B.过程C.方法D.环境

57.以下程序运行后,输出结果是#definePT5.5#defineS(x)PT*x*x#include<stdio.h>main(){inta=1,b=2;printf("%4.1f\n",S(a+b));}

A.49.5B.9.5C.22D.45

58.以下程序段的执行结果为#definePLUS(X,Y)X+Ymain(){intx=1,y=2,z=3,sum;sum=PLUS(x+y,z)*PLUS(y,z);printf("SUM=%d",sum);}

A.SUM=9B.SUM=12C.SUM=18D.SUM=28

59.若有说明inta[][3]={1,2,3,4,5,6,7,8,9},则a数组第一维的大小是()。

A.2B.3C.4D.无确定值

60.main(){floatx=123.456;printf("%-5.2f\n",x);}以上程序输出的结果是______。

A.123.4B.123.5C.123.45D.123.46

四、选择题(20题)61.具有3个结点的二叉树有

A.2种形态B.4种形态C.7种形态D.5种形态

62.if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是()。A.可以是任意合法的数值B.必须是整数值C.必须是正数D.必须是逻辑值

63.

64.执行下列程序时输入:123<空格>456<空格>789<回车>,输出结果是

main()

{chars[100];intc,i;

scanf("%c",&c);scanf("%d",&i);scanf("%s",s);

prinnf("%c,%d,%s\n",c,i,s);}

A.123,456,789B.1,456,789

C.1,23,456,789D.1,23,456

65.有以下程序

inta=2;

intf(int*a)

{

return(*a)++;

}

main()

{

ints=0;

{

inta=5;

s+=f(&a);

}

s+=f(&a);

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

}

执行后的输出结果是

A.10B.9

C.7D.8

66.

67.

68.

69.以下数组定义中错误的是()。

70.以下程序段中的变量已正确定义:

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

A.********B.****C.**D.*

71.冒泡排序在最坏情况下的比较次数是()。

A.n(n+1)/2B.nlog2nC.n(n-1)/2D.n/2

72.已有定义:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判断e中的字符是否为大写字母的表达式是()。

A.isupper(c)

B.A<=c<=Z

C.A<=cc<=Z

D.c<=(z-32)(a-32)<=c

73.按照“先进后出”原则组织数据的结构是()。

A.队列B.栈C.双向链表D.二叉树

74.

75.

76.以下程序的运行结果是()。

A.m=4k=5i=5k=5

B.m=4k=4i=5k=5

C.m=4k=4i=4k=5

D.m=4k=5i=4k=5

77.有以下程序:main(){unsignedinta;intb=-1;a=b;printf("%u",a);}程序运行后的输出结果是()。

A.-1B.65535C.32767D.-32768

78.在面向对象方法中,不属于“对象’’基本特点的是()。A.一致性B.分类性C.多态性D.标识唯一性

79.以下所列的C语言常量中,错误的是()。

A.0xFFB.1.2e0.5C.2LD.‘72’

80.

五、程序改错题(1题)81.下列给定的程序中,函数proc()的功能是:判断字符ch是否与sir所指字符串中的某个字符相同;若相同,则什么也不做,若不同,则将其插在串的最后。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.假定输入的字符串中只包含字母和*号。请编写函数proc,它的功能是:将字符串中的前导*号全部删除,中间和后面的*号不删除。 例如,若字符串中的内容为****a*bc*def*g****,删除后,字符串中的内容则应当是a*bc*def*g****。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。 试题程序: #include<stdio.h=:{> #include<conio.h> woidproc(char*str) { } voidmaincharstr[81];printf("Enterastring:\n");gets(str);proc(str):printf("Thestringafterdeleted:\n");puts(str);}

参考答案

1.D

2.A

3.Bwhile语句中条件表达式E的值不为0即真,认为满足条件。这与B选项中表达式的含义正好相反。故本题答案为B选项。

4.B解析:本题中,structex是结构体类型名,ex-ample是结构体变量名。

5.C解析:每个C程序有且只有一个主函数main(),且程序必须从main函数开始执行,并在main()函数中结束。

6.D

7.D解析:中序遍历的递归算法定义:①遍历左子树;②访问根结点;③遍历右子树。前序遍历的递归算法定义:①访问根结点;②遍历左子树;③遍历右子树。后序遍历的递归算法定义:①遍历左子树;②遍历右子树;③访问根结点。根据前序遍历的结果可知,a是根结点。由中序遍历的结果dgbaechf可知,d、g、b是左子树的结点,e、c、h、f是右子树的结点。再由前序遍历的结果bdg可知,b是a左边子树的根,由cefh可知,c是a右边子树的根。再由中序遍历的结果dgb可知,d、g是b左边子树的结点,b右边子树无结点。再由前序遍历结果dg可知,d为b左子树的根,g是以d为根的子树的右结点。至此,a的左子树已完全弄清楚了。同样的道理,可以弄清楚以c为根的子树的结点位置。所以可知后序遍历的结果是D。

8.C解析:软件设计的基本目标是用比较抽象概括的方式确定目标系统如何完成预定的任务,软件没计是确定系统的物理模型。软件测试即使用人工或自动手段来运行或测定某个系统的过程,其日的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件调试后要进行回归测试,防止引进新的错误。

9.C

10.C

11.B解析:SEEK_END代表的是文件末尾,SEEK_SET代表的是文件的开始,SEEK_CUR代表的是文件当前位置。

12.A解析:观察题目,可以发现,*p=&aa[0][0]语句实际是将数组aa的首地址赋给了指针变量p,将i的值带入for循环中,i=0时,aa[0][1]=3,*p=2;*p输出的是指针所指向的数组值,此时p所指向的是aa[O][0],输出2,而i=1时执行了++p操作使指针向后移动指向了aa[0][1],所以在输出*p时应为3。

13.C解析:赋值的一般形式为:变量名:表达式;,赋值的方向为由右向左,即将:右侧表达式的值赋给:左侧的变量,执行步骤是先计算再赋值。选项A中运算符%的运算对象必须为整数,而选项A中26.8不为整数,故选项A不正确;选项B将一个变量赋值给一个常量,这在C语言中是不允许的,故选项B不正确;选项D中也是将一个常量3赋值给一个常量,故选项D不正确;所以,4个选项中选项C符合题意。

14.C调用函数fun(7)时,由于x的值为7,执行语句“p=x-fun(x-2);”,相当于执行p=7-fun(5);\r\n调用函数fun(5)时,由于x的值为5,执行语句“p=x-fun(x-2);”,相当于执行p=7-fun(3);\r\n调用函数fun(3)时,由于x的值为3,执行语句“p=x-fun(x-2);”,相当于执行p=7-fun(1);\r\n调用函数fun(1)时,由于X的值为1,执行语句“return(3);”,函数的返回值为3。\r\n因此函数调用fun(7)等价于7-(5-fun(3)),即7-(5-(3-fun(1))),即7-(5-(3-3)),所以函数fun(7)的返回值为2。答案为C。

15.Cmain函数定义两个double类型的变量a、b,分别赋初值为2.5、9.0。另外定义两个double类型的指针变量pa、pb,其中pa指向a,pb指向b。然后将b-a、pa、pb传给函数fun,此时x的值为6.5,y指向a,z指向b。“*y=*y-1.0;”是将变量a的值减去1.0赋给a,a的值为1.5;“*z=*z+x;”是将变量b的值加上6.5赋给b,b的值为15.5。fun函数执行完毕后,输出a的值为1.5。故本题答案为C选项。

16.C

17.C函数fun(intx,inty)的功能是返回x+Y的值。在主函数中,变量a,b,c的初始值分别为1,2,3。因此逗号表达式“a++,b++,a+b”的值等于5,表达式c++的值为3,调用于函数的表达式为“fun(5,3);”,其返回值等于8。

18.C解析:本题考核的知识点是main()函数的作用,以及main()函数在程序中出现的位置。一个完整的C语言程序有且仅有一个主函数(main()函数)。程序总从main()函数的第一条语句开始执行,到main()函数的最后一条语句结束,其他函数都是在执行main()函数时,通过函数调用或嵌套调用而得以执行的。C语言规定,main()函数在程序中的位置是任意的,故选项c不正确。所以,4个选项中C符合题意。

19.A

20.DD)选项中*f(a,b)表示调用后返回一个指向整型数据的地址指针,即该函数的返回值为指针类型,所以不能将其赋值给整形变量k。

21.99解析:本题考查函数的综合知识。首先,我们可以利用强制转换类型转换运算符,将一个表达式转换成所需类型。如:(double)a是将a转换成double类型;(int)(x+y)是将x+y的值转换成整型。

本题可按部就班地逐步运算:

fun((int)fun(a+c,b),a-c)

fun((int)fun(10,5),2-8)

fun((int)15.000000,-6)

fun(15,-6)

9

22.strlen(str)-1strlen(str)-1解析:程序中的for循环就是用来完成串反序的,所以应该对循环的条件进行初始化,所以在[18]应该填入strlen(str)-1。注意,在串反序的时候,不应该把串结束符‘\\0’也反序。

23.s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]&&'9'>=s[i]或s[i]<=57&&s[i]>=48或57>=s[i]&&48<=s[i]或48<=s[i]&&57>=s[i]s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]&&'9'>=s[i]或s[i]<=57&&s[i]>=48或57>=s[i]&&48<=s[i]或48<=s[i]&&57>=s[i]解析:字符数组的初始化,字符串的输入和输出的应用。C语言没有字符串变量,字符串不是存放在一个变量中而是存放在一个字符型数组中,因此为了存放字符串,常常在程序中定义字符型数组;字符串存放在字符数组中,但字符数组与字符串可以不等长,C语言规定以“\\0”字符作为字符串结束标志。

本题中,chars[80],d[80];定义了两个字符型数组,可以放入80个字符。gets函数是c语言提供的一个专门用于读字符串的函数,它读入全部字符(包括空格),直到遇到回车为止。本题中,读入字符串s后,开始比较s中的每个字符是否为数字字符,因为字符数据在内存中以相应的ASCII码存放,所以只需比较相应的ASCII码值是否在48('0'的ASCII代码)与57('9'的ASCII代码)之间,或者直接与'0','9'进行比较,如果是数字字符则将此字符存入d数组中,不是则继续进行下一字符的比较,直至s结束(即'0'的出现)。将“'\\0'”字符作为字符串d结束标志,最后调用puts函数输出d。所以在空格处应填入比较语句s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]&&'9'>=s[i]或s[i]<=57&&s[i]>=48或&&48<=s[i]或57>=s[i]。

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

25.1B

26.1371513715解析:程序中n是一个有5个元素,且元素值全为0的数组。在for循环中,当i=1时,n[1]=n[0]*2+1,此时n[1]=1;i=2时,n[2]=n[1]*2+1,此时n[2]=3;i=3时,n[3]=n[2]*2+1,此时n[3]=7;i=4时,n[4]=n[3]*2+1,此时n[4]=15,循环结束。输出函数中%d后有空格,因此输出结果为13715。

27.12341234解析:在%与格式符之间插入一个整型数来指定输出宽度,当指定宽度小于输出数的实际宽度时,则按实际宽度输出。

28.n-1

29.物理独立性物理独立性解析:数据的独立性是指数据和应用程序相互独立,分为物理独立性和逻辑独立性。其中物理独立性是指数据的物理结构(包括存储结构、存取方式)改变时,不需要修改应用程序。而逻辑独立性是指当逻辑结构改变时,不需要修改应用程序。

30.1010解析:y=sub(sub(sub(x)))=sub(sub(127))=sub(19)=10。

31.str[i]或str+iistr[i]或str+i\r\ni

32.封装封装

33.参照完整性参照完整性

34.x[O]x[O]x[O]\r\nx[O]解析:根据题意,f()函数要“将其中最小的数与第一个数对换,把最大的数与最后一个数对换”,而填空处的上一行语句正是使用交换算法,将下标为p0的元素与数组x的最后一个元素(n个元素的数组,其最后一个元素的下标为n-1)交换。所以不难得知,填空所在行的语句是要将下标为p1的元素与数组x的第1个元素交换。故两个空都应该填x[0]。

35.

36.3*sizeof(double)或size(double)*3或24或3*8或8*33*sizeof(double)或size(double)*3或24或3*8或8*3解析:本题考核的知识点是malloc()函数.该函数的调用格式是“malloc(n)”,作用是申请n个字符的存储单元,并返回该存储区的首地址,实际调用的时候可在前面加上“(类型说明符*)”,以转换成需要的类型的地址.所以在此空格处应该填写3*sizeof(double)或size(double)*3或其他等价的表达式。

37.@

38.11解析:ifelse语句的功能是:若表达式的值为真,执行语句1,并跳过其他语句,执行ifelse语句的下一条语句,若表达式的值为假,跳过语句1,执行语句2,依次往下判断。题中,x=3,y=2,第一个if语句的控制条件x<y就不满足,又没有与之配对的else语句,所以直接执行printf语句,在整个过程中变量z的值都没发生变化。

39.1F1F解析:11=0,01=1,实现了按位的求反。

40.数据字典数据字典解析:在结构化分析方法中,用于描述系统中所用到的全部数据和文件的文档称为数据字典。

41.C解析:每个C程序有且只有一个主函数main(),且程序必须从main函数开始执行,并在main()函数中结束。

42.B解析:选项A),在赋值表达式中,赋值号的左边只能是变量或者是代表某个存储单元的表达式,不能是任意表达式。

在判断选项B)时首先应该建立这杆的概念,整型变量中只能存放整型数,实型变量中能存放实型数,也能存放整型数。

选项C),执行表达式a=b后,将把变量b存储单元中的值赋给变量a,从而覆盖a中原有的值,但b中原有的值并不改变。

选项D),在C程序中,求余运算符“%”两边的类型均为整型数据。

43.DD)【解析】数据库设计目前一段采用生命周期法.即将整个数据库应用系统的开分解成目标独立的若干阶段,它们是:需要分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、编码阶段、测试阶段、运行阶段、进一步修改阶段。在数据库设计中采用上面几个阶段中的前四个阶段,并且重点以数据结构和模型设计为主线。

44.D【解析】算法的空间复杂度是指执行这个算法所需要的内存空间。一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行中所需要的额外空间。其中额外空间包括算法程序执行过程中的工作单元以及某种数据结构所需要的附加存储空间。如果额外空间量相对于问题规模来说是常数,则称该算法是原地工作的。在许多实际问题中,为了减少算法所占的存储空间,通常采用压缩存储技术,以便尽量减少不必要的额外空间。

45.A解析:本题使用了一个双重for循环,外循环变量m的变化范围是0~2,而内循环变量n的变化范围从0~m,所以执行循环体时(m,n)的值依次为(0,0),(1,0),(1,1),(2,0),(2,1),(2,2),故输出的是3×3矩阵的下三角元素。所以应该选择A。

46.C解析:计算机算法是指解题方案的准确而完整的描述,它有以下几个基本特征:可行性、确定性、有穷性和拥有足够的情报。

47.C

48.C解析:在fun1()函数中只有一条return语句,返回的是表达式a*=a的值,该值等于a*a。但是,由于fun1()函数的返回值类型被定义为int,所以返回值被取整,即fun1()函数实现的是求一个双精度数平方的整数部分。在fun2()函数中,分别对两个参数调用fun1()函数,然后将两个返回值相加、取整后返回。所以,程序执行后,w中的值是[1.12]+[2.02]=1+4=5(中括号代表截尾取整)。又因为w被定义为double型,所以变量w中的值应该为一个双精度值5.0。故应该选择C。

49.D数据处理是指将数据转换成信息的过程,故选项A叙述错误。数据的物理独立性是指数据的物理结构的改变,不会影响数据库的逻辑结构,故选项B叙述错误。关系中的行称为元组,对应存储文件中的记录,关系中的列称为属性,对应存储文件中的字段,故选项C叙述错误。所以本题选D。

50.D解析:double*p,a;语句表示定义了一个指向双精度型的指针变量p和双精度型变量a,而语句p=&a表示将变量a的地址赋给指针变量p;scanf'('%1f',p)表示用键盘输入的数赋给指针变量p所指向的地址单元中。scanf()函数要求在输入double型数据,格式控制符必须用%1f(或%1e)。否则,数据不能正确输入。所以选项D)为正确答案。

51.C解析:外部变量在编译时由系统分配永久的内存空间,所以外部变量的类型不是自动存储类别。

52.D解析:本题主要考查结构体变量的定义和应用,以及运算符的优先级。

53.A解析:函数f1(x,y)的功能返回x,y中较大的一个,而函数f2(x,y)的功能是返回x,y中较小的一个,所以f1(a,b)=4,f1(c,d)=3,f2(c,d)=2,故e=f2(4,5),f=(3,2)=3,g=4+3+5+2-4-3=7。

54.B解析:表达式n=(k%m,k/m)实际上是将k/m的结果赋值给了n。逗号表达式中最后一个表达式的值是该逗号表达式的值,所以输出结果为k/m。

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

56.D解析:本题考查了软件工程的基本概念。软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理和文档生成;过程支持软件开发的各个环节的控制和管理。

57.A解析:宏替换用“#define宏名宏体”的形式来定义。在进行编译预处理时,将把程序中宏定义之后的所有宏名用宏体替换。宏虽然可以带参数,但宏替换过程中不像函数那样要进行参数值的计算、传递及结果返回等操作;宏替换只是简单的字符替换,不进行计算。因而本题中的S(a+b)进行宏替换后为PT*1+2*1+2=5.5*1+2*1+2=9.5。注意:带参数的宏定义。

58.B解析:本题考查带参数的宏定义及应用方法,这种宏不只是进行字符串的替换,还要进行参数的替换。

格式为:#define宏名(参数表)字符串

我们先看一个简单的带参数的宏定义:#defineX(A,B)A*B*B并且在程序中有语句:y=X(4,3);经过替换后变为y=4*3*3;这就是带参数的宏定义的使用方法。注意:宏是按原形替换,本题替换后为sun=1+2+3*2+3;。

59.B解析:本题考查二维数组第一维的大小如何确定。二维数组第一维的大小由下列规则确定:①当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小:②当初值的个数不能被第二维的常量表达式的值除尽时,第一维的大小等于所得商数加1。

60.D解析:f格式符,用来输出实数,以小数形式式输出。“%-m.nf”的含义是:输出数据共占m列,其中n位小数,如果输出位数小于m,则右端补空恪。如果总长度大于列数,则按实际情况四舍五入输出。

61.D解析:因为二叉树有左、右子树之分,所以有3个结点的二叉树具有5种不同的形态。

62.A

63.D

64.D本题考查格式输入。程序中定义了一个字符数组s,两个整型变量i和c。随后调用了三次格式输入函数scanf。第一个scanf函数只能输入一个字符型的数据,第二个函数是输入一个整型数据,第三个函数是输入一个字符串。执行代码时,输入123<空格>456<空格>789<回车>,将1作为一个字符用第一个scanf函数输入,23作为一个整型数据由第二个函数输入,而字符串的输入则是以非空白字符开始到第一个空白字符结束,将456作为字符串由第三个scanf函数输入到数组中,该函数在第二个空格处结束。

65.C在一个函数的内部定义的变量是内部变量,它只在本函数范围内有效,也就是说,只有在本函数内才能使用它们,在此函数以外是不能使用这些变量的。本题中的inta=5;只在{inta=5;s+=f(&a);}内有效。

在函数之外定义的变量称为外部变量,外部变量是全局变量。全局变量可以为本文件中其他函数所共用,它的有效范围为:从定义变量的位置开始到本源文件结束。本题的开头inta=2;即为全局变量,实际上起作用的也就是这个。故本题答案为C。

66.B

67.C

68.A

69.AA)选项dPx[2][31定义的是一个2行3列的二维数组,而在给数组元素赋值时却赋成了3行,因此错误。

70.D本题考察for循环语句,注意第二个for语句的后面有一个分号,即printf函数不属于循环体,无论循环执行多少次,printf(”*”)语句只执行一次。因此,本题正确答案为D)。

71.C冒泡排序的基本思想是:将相邻的两个元素进行比较,如果反序,则交换;对于一个待排序的序列,经一趟排序后,最大值的元素移动到最后的位置,其他值较大的元素也向最终位置移动,此过程称为一趟冒泡。对于有n个数据的序列,共需n-1趟排序,第i趟对从l到n-i个数据进行比较、交换。冒泡排序的最坏情况是待排序序列逆序,第l趟比较n-1次,第2趟比较n-2次。依此类推,最后趟比较1次,一共进行n-l趟排序。因此,冒泡排序在最坏情况下的比较次数是(n-1)+(n-2)+…+l,结果为n(n-1)/2。本题的正确答案是选项C。

72.B解析:在本题中,选项B,实际是先计算关系表达式“‘A<=c’”的值是0还是1,再比较该值与字符‘Z’之间的大小关系,显然不能实现题目所要求的功能,而选项A,C,D都可以。

73.B栈是线性表的一种,其插入和删除运算都只在表的一端进行。进行插入、删除的一端称为栈顶,封闭的一端称为栈底。栈顶元素是最后被插入的元素,不是最后被删除的元素,是按先进后出的原则组织数据的。

74.B

75.A

76.B由于在main函数中,变量i=4,所以

77.B当运算对象为不同的类型时,数据的转换方向为int→unsigned→long→double。本题程序中的变量b为int型,先要转换为unsigned型,int型变量的数值范围为-32768~32767,最高位为符号位,而unsigned所表示的数的范围为0~65535,它的最高位为数值位。由于内存中是以补码形式存储数据的,所以,整型的“-1”在内存中表示为16个1,最高位的“1”表示符号负,将它转换为unsigned类型,即将原符号位表示符号的“1”看成数值,就可得到16个数值位1,即65535。

78.A在面向对象方法中,对象的基本特点包括:标识唯一性、分类性、多态性、封装性、模块独立性好。一致性不属于对象的基本特点,因此本题答案为A)。

79.B在C语言中,用e来表示科学计数法时,规定在e后面的数字必须为整数。

80.D

81.

【解析】形参的个数和类型由调用该函数的实参的个数和类型决定,由main()函数中调用的函数proc()可知,“voidproc(charstr,charch)”应改为“voidproc(char*str,charch)”;将字符串中的每一个字符与给定字符相比较,当字符串结束或者字符串中有与给定字符相同的字符时结束。如果到字符串的最后一个字符仍没找到与给定字符相同的字符,将给定字符插在字符串的最后,因此,“if(*str==ch)”应改为“if(*str==ˊ\0ˊ)”;最后还要为字符串添加一个结束符,因此“str[1]=ˊ0ˊ;”应改为“str[1]=ˊ\0ˊ”。

82.voidproc(char*str){char*p=str:while(*p==*)p++;//通过P的移动来达到使P指向第一个不是*号的字符for(;*p!=\0;p++,str++)//把从第一个不是*号的字符放到a中*str=*P:*str=\0;//最后用\0作为字符串结束标志}【解析】题目中要求将字符串中的前导*号全部删除首先将指针p移动到第一个不是*的字符,将指针P之后的字符放入原来的字符串中,并为新的字符串添加结束符。2021年贵州省贵阳市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.

2.

3.在以下给出的表达式中,与“while(E)”中的“(E)”不等价的表达式是()。

A.(E>0||E<0)B.(E==0)C.(!E==0)D.(E!=0)

4.设有以下说明语句

structex

{intx;floaty;charz;}example;

则下面的叙述中不正确的是

A.struct结构体类型的关键字

B.example是结构体类型名

C.x,y,z都是结构体成员名

D.structex是结构体类型名

5.C语言可执行程序的开始执行点是()。

A.包含文件中的第一个函数B.程序中第一个函数C.程序中的main()函数D.程序中第一条语句

6.排序的算法很多,若排序的稳定性和不稳定性分类,则()是不稳定排序。

A.冒泡排序B.归并排序C.直接插入排序D.希尔排序

7.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

8.下列叙述中正确的是A.程序设计就是编制程序

B.程序的测试必须由程序员自己去完成

C.程序经调试改错后还应进行再测试

D.程序经调试改错后不必进行再测试

9.若x,i,j和k都是int型变量,则执行下面表达式后x的值为()。x=(i=4,j=16,k=32)

A.4B.16C.32D.52

10.

11.函数fseek(pf,OL,SEEK_END)中的SEEK_END代表的起始点是()。

A.文件开始B.文件末尾C.文件当前位置D.以上都不对

12.以下程序intaa[3][3]={{2},{4},{6}};main(){inti,*p=&aa[0][0];for(i=0;i<2;i++){if(i==0)aa[i][i+1]=*p+1;else++p;printf("%d",*p);}}的输出是________。

A.23B.26C.33D.36

13.若以下选项中的变量已正确定义,则正确的赋值语句是()。

A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3

14.有以下程序:intfun(intx){intp;if(x==0||x==1)return(3);p=x-fun(x-2);returnp;}main{printf("%d\n",fun(7));}执行后的结果是()。A.7B.3C.2D.0

15.有以下程序:#include<stdio.h>voidfun(doublex,double*y,double*z){*y=*y-1.0;*z=*z+x;}main(){doublea=2.5,b=9.0,*pa,*pb;pa=&a;pb=&b;fun(b-a,pa,pb);printf(“%f\n”,a);}程序运行后的输出结果是()。

A.8.000000B.9.000000C.1.500000D.10.500000

16.若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为()。

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

17.有下列程序:fun(intX,inty){return(x+y);)main(){inta=1,b=2,c=3,sum;sum=fun((a++,b++,a+b),c++);printf("%d\n",sum);}执行后的输出结果是()。A.6B.7C.8D.9

18.以下说法不正确的是

A.C程序中必须有一个main()函数,C程序是从main()函数的第1条语句开始执行的。

B.非主函数都是在执行主函数时,通过函数调用或嵌套调用而得以执行的。

C.C程序中的main()函数必须放在程序的开始位置。

D.C程序中的main()函数位置可以任意指定。

19.

20.有以下程序:#includeintadd(inta,intb){return(a+b);}Main(){Intk,(*f)(),a=5,b=10;f=add;...}则以下函数调用语句错误的是()。A.k=f(a,b);B.k=add(a,b);C.k=(*f)(a,b);D.k=*f(a,b);

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

floatfun(intx,inty)

{return(x+y);}

main()

{inta=2,b=5,c=8;

printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}

22.下面函数的功能是将一个字符串的内容颠倒过来,请填空。

voidfun(charstr[])

{inti,j,k;

for(i=0,j=【】;i<j;i++,j--)

{k=str[i];

str[i]=str[j];

str[j]=k;}}

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

abcl23edf456gh,执行程序后输出: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);

}

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

25.已知字符A的ASCⅡ代码值为65,以下程序运行时若从键盘输入:B33<回车>.则输出结果是()。

#include

main()

{chara,b;

a=getchar();scanf("%d",&B);

a=a-'A'+'0';b=b*2;

printf("%c%c\n",a,B);

}

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

#include<stdio.h>

msin()

{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.以下程序段的输出结果是【】。

inta=1234;

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

28.在具有n个单元、顺序存储的循环队列中,队满时,共有【】个元素。

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

30.有以下程序:

intsub(intn){return(n/10+n%10);}

main()

{intx,y;

scanf("%d",&x);

y=sub(sub(sub(x)));

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

}

若运行时输入:1234<回车>,程序的输出结果是【】。

31.mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。

intmystrlen(char*str)

{inti;

for(i=0;【】!='\0';i++);

return(【】);

}

32.在面向对象方法中,信息隐蔽是通过对象的______性来实现的。

33.关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、______和自定义完整性。

34.以下程序中函数f的功能是在数组x的n个数(假定n个数互不相同)小找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。请填空。

#include<stdio.h>

voidf(intx[],intn)

{intp0,p1,i,j,t,m;

i=j=x[0];p0=p1=0;

for(m=O;m<n;m++)

{if(x[m]>i){i=x[m];p0=m;}

elseif(x[m]<j){j=x[m];p1=m;)

}

t=x[p0];x[p0]=x[n-1];x[n-1]=t;

t=x[pl];x[p1]=【】;【】=t

}

main()

{inta[10],u;

for(u=0;u<10;u++)scamp("%d",&a[u]);

f(a,10);

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

ptintf("\n");

}

35.以下程序中函数fun的功能是:构成一个如图所示的带头结点的单词链表,在结点的数据域中放入了具有两个字符的字符串。函数disp的功能是显示输出该单链表中所有结点中的字符串。请填空完成函数disp。[*]

#include<stdio.h>

typedefstructnode/*链表结点结构*/

{charsub[3];

structnode*next;

}Node;

Nodefun(chars)/*建立链表*/

{…}

voiddisp(Node*h)

{Node*

36.以下程序中给指针p分配三个double型动态内存单元,请填空。

#include<stdio.h>

main()

{dOuble*p;

p=(double*)malloc();

p[0]=1.5;p[1]=2.5;p[2]=3.5

printf("%f%f%f\n",p[0],p[1],p[2]);

}

37.E-mail地址由用户名和域名两部分组成,这两部分的分隔符为【】。

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

#include<stdio.h>

main()

{intx=3,y=2,z=1;

if(x<y)

if(y<0)z=0;

elsez+=1;

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

}

39.已知a为8位二进制数,要想通过ab运算使a的低5位变反(即0变1,1变0),高3位不变,b的值应为【】。

40.在结构化分析方法中,用于描述系统中所用到的全部数据和文件的文档称为【】。

三、1.选择题(20题)41.C语言可执行程序的开始执行点是()。

A.包含文件中的第一个函数B.程序中第一个函数C.程序中的main()函数D.程序中第一条语句

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

A.在赋值表达式中,赋值号的左边既可以是变量,也可以是任意表达式

B.实型变量中允许存放整型数

C.若a和b类型相同,在执行了赋值a=b后,b中的值将放入a中,但b中的值不变

D.在C程序中,求余运算符“%”两边的类型相同时才能进行运算

43.数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和______。A.编码设计B.测试阶段C.运行阶段D.物理设计

44.算法的空间复杂度是指()。

A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间

45.下列程序的功能是()。main(){staticints[3][3]={1,2,3,4,5,6,7,8,9,),m,n;for(m=0;m<3;m++){for(n=0;n<=m;n++)printf("%d",s[m][n]);printf("\n');}}

A.输出3×3矩阵的下三角的元素

B.输出3×3矩阵的上三角的元素

C.输出3×3矩阵的对角线上的元素

D.输出3×3矩阵的元素

46.在计算面中,算法是指______。

A.查询方法B.加工方祛C.解题方案的准确而完整的描述D.排序方法

47.请读程序:#include<stdio.h>#include<string.h>voidfun(char*w,intm){chars,*p1,*p2;p1=w;p2=w+m-1;while(p1<p2){s=*p1++;*pl=*p2--;*p2=s;}}main(){chara[]="ABCDEFG";fun(a,strlen(a));puts(a);}上面程序的输出结果是()

A.GEFDCBAB.AGADAGAC.AGAAGAGD.GAGGAGA

48.有以下程序:intfun1(doubleA){returna*=a;}intfun2(doublex,doubley){doublea=0,b=0;a=fun1(x);b=funl(y);return(int)(a+B);}main(){doublew;w=fun2(1.1,2.0);……}程序执行后变量w中的值是()。

A.5.21B.5C.5D.0

49.下列有关数据库的描述,正确的是A.数据处理是将信息转化为数据的过程

B.数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变

C.关系中的每一列称为元组,一个元组就是一个字段

D.如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字

50.若有说明语句:double*p,a;则能通过scanf语句正确给输入项读入数据的程序段是()。

A.*p=&a;sCanf("%1f",p);

B.*p=&a;scanf("%f",p);

C.p=&a;scanf("%1f",*p);

D.p=&a;scanf("%1f",p);

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

A.在C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值

B.在C语言中,在调用函数时,实参和对应形参在类型上只需赋值兼容

C.在C语言中,外部变量的隐含类型是自动存储类别

D.在C语言中,函数形参的存储类型是自动(auto)类型的变量

52.设有以下语句:structst{intn;structst*next;};staticstructsta[3]={5,&a[1],7,&a[2],9,'\0'},*p;p=&a[0];则表达式的值是6的为______。

A.p++->nB.p->n++C.(*p).n++D.++p->n

53.有以下程序intf1(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

54.已知intk=10,m=3,n;则下列语句输出结果是printf("%d\n",n=(k%m,k/m));

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

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

A.log2nB.n/2C.nD.n+1

56.下列不属于软件工程的3个要素的是______。

A.工具B.过程C.方法D.环境

57.以下程序运行后,输出结果是#definePT5.5#defineS(x)PT*x*x#include<stdio.h>main(){inta=1,b=2;printf("%4.1f\n",S(a+b));}

A.49.5B.9.5C.22D.45

58.以下程序段的执行结果为#definePLUS(X,Y)X+Ymain(){intx=1,y=2,z=3,sum;sum=PLUS(x+y,z)*PLUS(y,z);printf("SUM=%d",sum);}

A.SUM=9B.SUM=12C.SUM=18D.SUM=28

59.若有说明inta[][3]={1,2,3,4,5,6,7,8,9},则a数组第一维的大小是()。

A.2B.3C.4D.无确定值

60.main(){floatx=123.456;printf("%-5.2f\n",x);}以上程序输出的结果是______。

A.123.4B.123.5C.123.45D.123.46

四、选择题(20题)61.具有3个结点的二叉树有

A.2种形态B.4种形态C.7种形态D.5种形态

62.if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是()。A.可以是任意合法的数值B.必须是整数值C.必须是正数D.必须是逻辑值

63.

64.执行下列程序时输入:123<空格>456<空格>789<回车>,输出结果是

main()

{chars[100];intc,i;

scanf("%c",&c);scanf("%d",&i);scanf("%s",s);

prinnf("%c,%d,%s\n",c,i,s);}

A.123,456,789B.1,456,789

C.1,23,456,789D.1,23,456

65.有以下程序

inta=2;

intf(int*a)

{

return(*a)++;

}

main()

{

ints=0;

{

inta=5;

s+=f(&a);

}

s+=f(&a);

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

}

执行后的输出结果是

A.10B.9

C.7D.8

66.

67.

68.

69.以下数组定义中错误的是()。

70.以下程序段中的变量已正确定义:

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

A.********B.****C.**D.*

71.冒泡排序在最坏情况下的比较次数是()。

A.n(n+1)/2B.nlog2nC.n(n-1)/2D.n/2

72.已有定义:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判断e中的字符是否为大写字母的表达式是()。

A.isupper(c)

B.A<=c<=Z

C.A<=cc<=Z

D.c<=(z-32)(a-32)<=c

73.按照“先进后出”原则组织数据的结构是()。

A.队列B.栈C.双向链表D.二叉树

74.

75.

76.以下程序的运行结果是()。

A.m=4k=5i=5k=5

B.m=4k=4i=5k=5

C.m=4k=4i=4k=5

D.m=4k=5i=4k=5

77.有以下程序:main(){unsignedinta;intb=-1;a=b;printf("%u",a);}程序运行后的输出结果是()。

A.-1B.65535C.32767D.-32768

78.在面向对象方法中,不属于“对象’’基本特点的是()。A.一致性B.分类性C.多态性D.标识唯一性

79.以下所列的C语言常量中,错误的是()。

A.0xFFB.1.2e0.5C.2LD.‘72’

80.

五、程序改错题(1题)81.下列给定的程序中,函数proc()的功能是:判断字符ch是否与sir所指字符串中的某个字符相同;若相同,则什么也不做,若不同,则将其插在串的最后。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.假定输入的字符串中只包含字母和*号。请编写函数proc,它的功能是:将字符串中的前导*号全部删除,中间和后面的*号不删除。 例如,

温馨提示

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

评论

0/150

提交评论