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

下载本文档

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

文档简介

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

一、单选题(20题)1.设x、y、z、t均为int型变量,则执行以下语句后,t的值是()x=y=z=l;t=++x||++y&&++z;

A.不定值B.2C.1D.0

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

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

3.执行下列程序后,输出的结果是()。

#include<stdio.h>

#defineS(X)X*X

voidmain()

{ihta=9,k=3,m=2;

a/=S(k+m)/S(k+m);

printf("%d",A);

}

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

4.已知a、b、c为整型变量,若从键盘输入5<空格>6<空格>7<回车>,使a的值为5,b的值为6,c的值为7,则下列选项中正确的输入语句是()。

A.scanf("%3d%3d%3d",a,b,C);

B.scanf("%d%d%d",a,b,C);

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

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

5.下列说法不正确的是()。

A.图的遍历是从给定的源点出发每一个顶点仅被访问一次

B.图的深度遍历不适用于有向图

C.遍历的基本算法有两种:深度遍历和广度遍历

D.图的深度遍历是一个递归过程

6.以下叙述中错误的是()。

A.C语言编写的函数源程序,其文件名后缀可以是C

B.C语言编写的函数都可以作为一个独立的源程序文件

C.C语言编写的每个函数都可以进行独立的编译并执行

D.一个C语言程序只能有一个主函数

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

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

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

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

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

8.有以下程序:Voidf(inta[],ihti,intj){intt;if(i<j){t=a[i];a[i]=a[j];a[j]=t;f(a,i+1,i-1);}}main(){inti,aa[5]={1,2,3,4,5};f(aa,0,4);for(i=0;i<5;i++)printf("%d",aa[i]);printf("\n");}执行后输出结果是

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

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

10.关系R和关系S的并运算是______。

A.由关系R和关系S的所有元组合并组成的集合,再删去重复的元组

B.由属于R而不属于S的所有元组组成的集合

C.由既属于R又属于S的元组组成的集合

D.由R和S的元组连接组成的集合

11.数据库是()的集合,它具有统一的结构格式并存放于统一的存储介质,可被各个应用程序所共享

A.视图B.消息C.数据D.关系

12.有以下程序:#include<stdio.h>structstu{intnum;charname[l0];intage;};voidfun(structstu*p){printf("%s\n",p->name);}main(){structstux[3]={{01,"Zhang",20),{02,"Wang",l9},{03,"Zha0",l8}};fun(x+2);}程序运行后的输出结果是()。A.ZhangB.ZhaoC.WangD.19

13.执行下述程序后,输出的结果是()。#include<stdio.h>#defineS(X)X*Xvoidmain{inta=9,k=3,m=2;a/=S(k+m)/s(k+m);printf("%d",a);}A.1B.4C.9D.0

14.设有以下说明语句structnum{inta;floatb;}numl;则下面的叙述不正确的是______。

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

B.structnum是用户定义的结构体类型

C.numl是用户定义的结构体类型名

D.a和b都是结构体成员名

15.对n个数进行排序,哪种算法,其时间复杂度在最坏和最好都是O(nlogn)()

A.快速排序B.希尔排序C.堆排序D.选择排序

16.

17.

18.以下不正确的叙述是A.A.在C程序中,逗号运算符的优先级最低

B.在C程序中,APH和aph是两个不同的变量

C.若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变

D.当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值

19.设栈S的初始状态为空,6个元素入栈的顺序为e1,e2,e3,e4,e5和e6。若出栈的顺序是e2,e4,e3,e6,e5,el,则栈s的容量至少应该是()。

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

20.设有定义“intm=1,n=2;”,则以下if语句中,编译时会产生错误信息的是()。

A.if(m>n)m--elsen--;

B.if(m=n){m++;n++;}

C.if(m<0&&n<0){}

D.if(m>0);elsem++;

二、2.填空题(20题)21.下列程序的输出结果是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);

}

22.数据库系统在三级模式之间提供了两层映像,这两层映像是外模式/模式映像和【】。

23.在关系运算中,查找满足一定条件的元组的运算称之为【】。

24.下面程序的输出走【】。

main()

{enumem{em1=3,em2=1,em3};

char*aa[]={"AA","BB","CC","DD"};

printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);

}

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

doublefun(doublex,inty)

{inti;

doublez;

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

}

26.在程序设计阶段应该采取【】和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,进而用某种程序设计语言写成程序。

27.在循环中,continue语句与break语句的区别是:______语句只是结束本次循环,然后进行循环的条件判定。

28.在软件测试中,动态测试和静态测试手段只能发现程序中的错误,而不能证明程序中不存在错误,只有【】证明才有可能证明程序的正确性。

29.若a=l,b=2,则表达式!(x=a)||y=b)&&0的值是______。

30.下面程序有两个printf语句,如果第一个printf语句输出的是194,则第二个printf语句的输出结果是【】。

main()

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

p=a;

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

printf("%\n",p+9);

}

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

32.当线性表采用顺序存储结构实现存储时,其主要特点是______。

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

34.设a、b、c为int型变量,且a=10、b=5、c=1,则执行完以下语句,a的值变为【】。

a/=10-(++b)-(c--);

35.软件测试分为白箱(盒)测试和黑箱(盒)测试。等价类划分法属于【】测试。

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

main()

{inti,a[10];

a[0]=a[1]=1;

for(i=2;i<5;i++)

a[i]=a[i-2]+a[i-1];

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

{if(i%2==0)printf("\n");

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

}

}

37.有以下程序:

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

main()

{intx,y;

scanf("%d",&x);

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

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

}

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

38.C语言用于结构化程序设计的3种基本结构是______、选择结构和循环结构。

39.以下程序通过函数SunFun()调用F(x),x的值从0到10,这里F(x)=x2+1,由F函数实现,请填空。

#include<stdio.h>

intSunFun(int);

intF(int);

main()

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

SunFun(intn)

{intx,s=0;

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

returns;

F(intx)

{return(【】);}

40.以下程序运行后的输出结果是______。

main()

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

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

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

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

}

三、1.选择题(20题)41.C语言中,凡未指定存储类别的局部变量的隐含存储类别是()。

A.自动(auto)B.静态(statiC)C.外部(extern)D.寄存器(register)

42.两个或两个以上的模块之间关联的紧密程度称为()

A.耦合度B.内聚度C.复杂度D.连接度

43.下列程序的输出结果是______。main(){inti,x[3][3]=(1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)printf("%d,",x[i][2-i]);}

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

44.有以下程序#include<stdio.h>main(){ints[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;for(i=0;i<12;i++)c[s[i]]++;for(i=1;i<5;i++)printf("%d",c[i]);printf("\n");}程序的运行结果是

A.1234B.2344C.4332D.1123

45.有以下程序:main(){inta[][3]={{1,2,3},{4,5,0}},(*pa)[3],i;pa=a;for(i=0;i<3;i++)if(i<2)pa[1][i]=pa[1][i]-1;elsepa[1][i]=1;printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}执行后输出结果是()。

A.7B.6C.8D.无确定值

46.已知各变量的类型说明如下:intk,a,b;unsignedlongw=5;doublex=1.42;则以下不符合C语言语法的表达式是

A.x%(-3)B.Wd+=-2C.k=(a=2,b=3,a+D.a+=9-=(b=4)*(a=3)

47.以下程序的运行结果为______。main(){intx,*p,**q;x=10;p=&x;q=&p;printf("%d\n",**q);}

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

48.若已包括头文件<stdio.h>且已有定义staticcharstr[9];,现要使str从键盘获取字符串"Thelady",应使用

A.scanf("%s",str)

B.for(i=0;i<9;i++)gethchar(str[i]);

C.gets(str);

D.for(i=0;i<9;i++)scanf("%s",&str[i]);

49.以下程序的输出结果是______。main(){charch[3][4]={"123","456","78"},*p[3];inti;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;i<3;i++)printf("%s",p[i]);}

A.1.23457e+008B.1.23457e+008C.1.23457e+007D.147

50.下面软件中,属中应用软件的是()

A.UnixB.人事管理系统C.数据库管理理系统D.DOS

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

52.若有定义:inta[2][3];则才a数组的第i行第j列(假调i,j已正确说明并赋值)元素值的正确引用为

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

53.有如下程序:main{intx=1,a=0,b=0;switch(x){case0:b++;case1: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

54.已知p为指针变量,a为数组名,i为整型变量,下列赋值语句中不正确的是()

A.p=&i;B.p=a;C.p=&a[i];D.p=10;

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

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

56.下列函数定义中,会出现编译错误的是()。

A.max(intx,inty,int*z){*z=x>y?x:y;}

B.intmax(intx,y){intz;z=x>y?x:y;returnz;}

C.max(intx,inty){intz;z=x>y?x:y;return(z);}

D.intmax(intx,inty){return(x>y?x:y);}

57.有以下程序structSTU{charname[10];intnum;intScore;{main(){structStus[5]={{"YangSan",20041,703},{"LiSiGuo",20042,580},{"WangYin",20043,680},{"SunDan",20044,550},{"Penghua",20045;537}},*p[5],*t;inti,j;for(i=0;i<5;i++)p[i]=&s[i];for(i=0;i<4;i++)for(j=i+1;j<5;j++)if(p[i]->Score>p[j]->Score){t=p[i];p[i]=p[j];p[i]=t;}printf("%d%d\n",s[1].Score,p[1]->Score);}执行后输出结果是

A.550550B.680680C.580550D.580680

58.若有下列定义,则对a数组元素地址的正确引用是()。

inta[5],*p=a;

A.p+5B.*a+1C.&a+1D.&a[0]

59.若有说明:int*p,m=5,n;以下正确的程序段是

A.p=&n;scanf("%d",&p);

B.p=&n;scanf("%d",*p)

C.scanf("%d",&n);*p=n;

D.p=&n;*p=m;

60.有以下程序#include<stdio.h>intf(intx){inty;if(x==0||x==1)return(3);y=x*x-f(x-2);returny;}main(){intz;z=f(3);printf("%d\n",z);}程序的运行结果是

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

四、选择题(20题)61.以下叙述中错误的是()。

A.一个C程序中可以包含多个不同名的函数

B.一个C程序只能有一个主函数

C.C程序在书写时,有严格的缩进要求,否则不能编译通过

D.C程序的主函数必须用main作为函数名

62.(33)有以下程序段

inti,n;

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

{n=rand()%5;

switch(n)

{case1:

case3:printf("%d\n",n);break;

case2:

case4:printf("%d\n",n);continue;

case0:exit(0);

}

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

}

以下关于程序段执行情况的叙述,正确的是

A)for循环语句固定执行8次

B)当产生的随机数n为4时结束循环操作

C)当产生的随机数n为1和2时不做任何操作

D)当产生的随机数n为0时结束程序运行

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

64.请选出以下语句的输出结果Printf("%d\n",strlen("\t\"\065\xff\n"));

A.5B.14C.8D.输出项不合法,无正常输出

65.

66.软件设计中衡量模块独立性的度量标准是()。

A.抽象和信息隐蔽B.局部化和封装化C.内聚性和耦合性D.激活机制和控制方法

67.对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是

A.插入排序B.冒泡排序C.直接插入排序D.堆排序

68.下列函数的功能是

set(s,t)

{char*s,*t;

while((*s)&&(*t)&&(*t++==*s++));

return(*s-*t);

}A.A.求字符串的长度

B.比较两字符串的大小

C.将字符串s复制到字符串t中

D.将字符串s连接到字符串t后

69.有以下程序:

#include<stdio.h>

main()

{char*s="[2]34";intk=0,a=0;

whil(s[k+1]!=\0)

{k++;

if(k%2=o){a=a+(s[k]-0+1);continue;}

a=a+(s[k]-0);

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

}

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

A.k=6a=11B.k=3a=14C.k=4a=12D.k=5a=15

70.

71.对线性表进行二分法检索,其前提条件是()。A.A.线性表以顺序方式存储,并按关键码值排好序B.线性表以顺序方式存储,并按关键码的检索频率排好序

C.线性表以链式方式存储,并按关键码值排好序

D.线性表以链式方式存储,并按关键码的检索频率排好序

72.已知一棵二叉树前序遍历和中序遍历分别为ABDEFGCHI和DBFEGACIH,则该二叉树的后序遍历为

A.DFGEBHICAB.DGEBHFCAIC.DFGEBIHCAD.DGEBFIHCA

73.

74.关系数据库管理系统能实现的专门关系运算包括()。

A.排序、索引、统计B.选择、投影、连接C.关联、更新、排序D.显示、打印、制表

75.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指()

A.模块间的关系B.系统结构部件转换成软件的过程描述C.软件层次结构D.软件开发过程

76.

77.

78.设有定义

79.对下列二叉树

进行中序遍历的结果是()。

A.ACBDFEGB.ACBDFGEC.ABDCGEFD.FCADBEG

80.

设有以下定义和语句:

charstr[2O]="Program",*P:

p=str:

则以下叙述中正确的是()。

A.*p与stf[0]的值相等

B.str与P的类型完全相同

C.str数组长度和P所指向的字符串长度相等

D.数组str中存放的内容和指针变量P中存放的内容相同

五、程序改错题(1题)81.下列给定的程序中,函数proc()的功能是:为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。

请修改函数proc()中的错误,使它能得出正确的结果。

注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。

试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数其功能是移动一维数组中的内容,若数组中有n个整数,要求把下标为0~p(含p,p小于等于n-1)的数组元素平移到数组的最后。例如,一维数组中的原始内容为1、2、3、4、5、6、7、8、9、10;P的值为3。移动后,一维数组中的内容应为5、6、7、8、9、10、1、2、3、4。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdio.h>#defineN80voidfun(int*w,intp,intn){}main(){ inta[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; inti,p,n=15; printf(“Theoriginaldata:\n”); for(i=0;i<=""p=""> printf(“%3d”,a[i]); printf(“\n\nEnterp:”); scanf(“%d”,&p); fun(a,p,n); printf(“\nThedataaftermoving:\n”); for(i=0;i<=""p=""> printf(“%3d”,a[i]); printf(“\n\n”);}

参考答案

1.C

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

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

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

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

3.D解析:本题主要是考查带参数的宏定义及其相关运算。本题中宏运算过程如下:a=a/(S(k+m)/S(k+m))=a/(k+m*k+m/k+m*k+m)=9/(3+2*3+2/3+2*3+2)=0。

4.C解析:通过scanf()函数从键盘读入数据时,接收参数的使用变量的地址值,所以选项A和B是错误的。选项D要求输入时以逗号间隔,故按题目要求的输入方式不能正确读取到3个数,也是错误的。所以正确答案是C。

5.C

6.C函数是指预先定义功能块,其目的是提高程序的重用性。在C语言中函数的源程序,后缀名可以为C。C语言所编写的函数都可以是一个独立的源文件。一个C语言程序只能有一个主函数。C语言中编写的函数不是每个都可以独立地编译和执行的,因为C语言中程序的开始为主函数,如果程序中没有主函数则无法进行编译和执行。

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

8.A解析:在C语言中所谓函数的递归是在指在调用一个函数的过程中,又出现了直接或间接地调用该函数本身,直接调用该函数本身的称为函数递归,而间接调用该函数称为函数的间接递归调用.由程序可以看出函数f(a,i,j)为一递归函数,其功能是i

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

10.A

11.C解析:数据库是数据的集合,其中的数据是按数据所提供的数据模式存放的,它能构造复杂的数据结构,以建立数据之间的内在联系与复杂的关系。

12.Bfun(x+2)表示的是结构体数组中的第3个元素即{03,"Zhao",l8),而输出的是name元素,所以答案为B。

13.D本题j=要是考查带参数的宏的定义,过程如下:inta=a/S(k+m)/S(k+m)=a/(k+m*k+m/k+m)=9/(3十2*3十2/3十2*3十2)=0。

14.C

15.C

16.C

17.D

18.D解析:在C语言所有的运算符中,逗号运算符的优先级最低。C语言中区分大小写,所以APH和aph是两个不同的变量。赋值表达式a=b表示将b的值付给a,而b本身的值保持不变;通过键盘可以向计算机输入允许的任何类型的数据。选项D)中当从键盘输入数据时,对于整型变量可以输入整型数值和字符,对于实型变量可以输入实型数值和整型数值等。

19.C

20.A选项A中,if语句的语句块“m--”后面少了分号,不合法,编译会出错。其他选项都是正确的。故本题答案为A选项。

解析:本题,已知结果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。

22.模式/内模式映像模式/内模式映像解析:映像即一种对应规则,指出映像双方如何进行转换。数据库系统在三级模式之间提供了两层映像,这两层映像是外模式/模式映像与模式/内模式映像。

23.选择选择解析:在关系数据库中,选择运算也是一个元运算,关系R通过选择运算(并由该运算给出所选择的逻辑条件)后仍为一个关系。这个关系是由R中的那些满足逻辑条件的元组所组成。

24.DDBBCCDDBBCC解析:C语言对枚举的定义规定:在枚举中声明的各个枚举元素,如果没有明确指出某个枚举元素的值,它的上一个元素存在并有明确值的情况下,这个枚举元素的值为其上一个元素的值+1。在本题中,没有明确说明枚举元素em3的值,则em3=em2+1=1+1=2,进而可知,在printf()打印函数中,要打印的数组元素是aa[3]、aa[1]、aa[2],因此最后的打印结果应当为“DDBBCC”。

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

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

{

类型说明语句;

执行语句;

}

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

26.自顶而下自顶而下

27.continuecontinue解析:continue语句只是结束本次循环,然后进行循环的条件判定。break语句是终止整个循环的执行,不再进行条件判定。

28.程序正确性程序正确性

29.00解析:根据运算符的运算顺序可知,该表达式最后运算的是与(&&)运算,而任何表达式与“0”进行“与”运算,结果都为0。

30.1a61a6解析:对于指针变量的运算,就是对地址的运算。本题中由于指针指向的是整型变量,所以,使指针变量移动9个位置也就是移动18个字节。注意,本题是以十六进制输出的。

31.35

32.逻辑结构中相邻的结点在存储结构中仍相邻。逻辑结构中相邻的结点在存储结构中仍相邻。解析:顺序存储结构的主要特点是数据元素按线性表的逻辑次序,依次存放在一组地址连续的存储单元中。在存储单元中,各元素的物理位置和逻辑结构中各结点间的相邻关系是一致的。

33.调试调试

34.3

35.黑箱或黑盒黑箱或黑盒解析:黑箱测试是根据程序规格说明所规定的功能来设计测试用例,它不考虑程序的内部结构和处理过程。常用的黑箱测试技术分为等价类划分、边界分析、错误猜测以及因果图等。

36.11<CR>23<CR>5(<CR代表换行)11<CR>23<CR>5(<CR,代表换行)解析:本题通过语句“for(i=2;i<5;i++)a[i]=a[i-2]+a[i-];”将数组中前面两项的和赋值给数组当前元素,得到a的值应为(1,1,2,3,5)。语句if(i%2==0)pfintf('\\n')是要将数组中的元素以每行2个的形式输出。

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

38.顺序结构顺序结构解析:结构化程序有3种摹本结构,即顺序结构、选择结构(包括if语句和switch语句)和循环结构(包括for语句、while语句、do…while语句)。

39.xx*x+1x\r\nx*x+1解析:本题考查函数的调用。P(x)的含义为x的平方加1,所以第一处应填x;第二处应填x*x+1。

40.4599

41.A

42.AA)【解析】耦合度是模块间互相连接的紧密程度的度量;内聚度是一个模块内部各个元素间彼此结合的紧密程度的度量。

43.C

44.C解析:程序中定义了两个数组s和c,数组c中有5个元素,每个元素的初始值为0;数组s中有12个元素,包含4个“1”,3个“2”,3各“3”,2个“4”。第一个for语句中,用s[i]作为c数组的下标,用于统计s[i]中相同数字的个数,同时将统计的结果放在以该数字为下标的c数组中。第二个for语句用于将c数组中a[1]~a[4]4个元素输出。

45.A解析:本题定义了一个指向由3个元素组成的一维数组的指针变量pa,通过赋值让它指向具有2行3列的数组a,此时用指针变量pa,表示数组元素a[i][j]的形式是pa[im][j])。for循环执行了3次;第一次i值为0,执行pa[1][0]=pa[1][0]-1,执行后a[1][0]的值变为3;第二次i值为1,执行pa=[1][1]=pa[1][1]-1,执行后a[1][1]的值为4;第三次i值为2,执行pa[1][2]=1,执行后a[1][2]的值变为1。故prinff语句输入的值为2+4+1=7。所以,A选项为所选。

46.A解析:“%”是求余运算符或模运算符,“%”两侧均应为整型数据,选项A)中的x是double型数据。

47.A解析:程序中的p指向变量x,q被定义为二级指针,即指向指针的指针,其值为指针p的地址,因此,**q即是x,打印结果为10。

48.C解析:gets(str)是专门用来输入字符串的函数,可以包含空格,因此只有选项C)正确,其他选项都不正确。注意:通过scanf函数从键盘输入数据。

49.C

50.B

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

52.A解析:本题考查了二维数组元素的引用方法。选项A中a引指向了数组a的第i+1行,*(a+i)则是第i+1行第0列的地址值,*(a+i)+j指向了数组a第i+1行,j+1列,*(*(a+i)+j)取到的是数组a的a[i][j]的元素。

53.AC语言规定case后面跟的必须是整型常量表达式。进入case后,如果没有遇到break语句就会一直往下执行,后面其他case或default分支的语句也会被执行到,直到遇到break,或者执行到整个switch语句块的末尾。题目中给出了三个case语句:case0、case1、case2。当x为1时,从case1语句开始执行,因为没有break语句,将一直执行到函数末尾结束,即执行case1、case2两条语句。执行完case1时,a=1,b=0;执行完case2时,a=2,b=1。

54.D

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

56.B解析:本题考核的知识点是函数的定义方法。选项B中在说明形参时,省略了第二个参数的类型,故选项B编译不能通过。

57.C解析:本题中首先定义了结构体类型STU,该结构体由一个长度为10的字符数组、两个整型变量num和Score组成。在主函数中,定义了一个长度为5的结构体数组s并赋初值,一个指针数组p和一个指针变量t,接着将数组s中各元素的地址依次赋给指针数组p中的各成员。然后通过两个for循环将数组p按Score的值从小到大的顺序排列。因此最后输出的p[1]->Score的值为550,而数组s[1].Score的值为580。

58.D解析:本题考查如何引用数组元素的地址。

选项A)中,p+5引用的是a[5]的地址,而数组a只有5个元素,即a[0]、a[1]、a[2];a[3]、a[4],所以引用错误;选项B)中,*a+1指的是将数组a的第一个元素加1;选项C)中,这种引用方式错误;选项D)中,&a[0]引用的是数组的首地址。

59.D解析:“&”是求址运算符,“*”是指变量说明符。选项A)、B)应改为scanf('%d',p);选项C)中指针变量p未指向一确定的内存单元,不能为其赋值,并且这样做很危险,建议不使用。

60.C解析:函数intf(intx)是一个递归函数调用,当x的值等于0或1时,函数值等于3,其他情况下y=x2-f(x-2),所以在主函数中执行语句z=f(3)时,y=3*3-f(3-2)=9-f(1)=9-3=6。

61.C【答案】C

【知识点】C程序的函数

【解析】C程序必须有且只有一个主函数main()。一个C程序可以包含多个不重名的子函数。C程序在书写时没有严格的缩进要求,语句前的缩进随意。

62.D

63.A选项A中d0后面的语句只执行了-次匣结束了循环;B选项中条件while(1)永远成立,所以是死循F;C选项中n的值为10,而循环体为空语句,所以while(n)永远为真,进入死循环;D选项中for语句第二个表达式为空,所1以没有判别条件,进入死循环。

64.A解析:本题考查用strlen函数计算字符串长度的方法。该字符串中包含的字符是:\'\\t\'(跳格符)、\'\\'\'(双引号)、\'\\065\'(ASCII值为八进制065,也即+进制为51的字符)、\'\\xff\'(ASCII值为+六进制ff,也即+进制为255的字符)、\'\\n\'(换行符)。

65.D

66.C耦合性与内聚性是模块独立与否的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内蒙、低耦合,即减弱模块之间的耦合性而提高模块内的内聚性,这样有利于提高模块的独立性。

67.D在最坏情况下,快速排序、冒泡排序和直接插入排序需要的比较次数都为n(n-1)/2,堆排序需要的比较次数为nlog2n。因此本题正确的答案选D。

68.B在本题中,从题目给出的四个选项我们就可以知道,程序是对两个字符串进行操作。下面将具体分析程序。

程序首先定义两个字符型的指针变量s和t,从后面的程序中不难看出这两个指针变量应该用来对两个字符串进行操作处理。用循环来对字符串进行处理时,循环继续的条件是指针变量s和指针变量t所指向的结果值不为0,且两结果值相等。很显然,指针变量s和指针变量t所指向的结果值不为0,说明两字符串没有结束,只有结束时才为0,而结果值相等说明两字符相等,如果不等,循环则结束,此时程序将要求返回不等元素之间的差值,从差值的正负关系我们可以判断出哪个元素更大。综上所述,程序段的作用是用来比较两字符串的大小。因此,本题正确的答案选B。

69.C\n输出结果:k=1a=2

\nk=2a=4

\nk=3a=7

\nk=4a=12

\n

70.A

71.A对线性表进行二分法检索,要求线性表是按顺序方式存储的,并按关键码值的大小排好序。

72.C本题主要考查二叉树的遍历。题目中给出了二叉树的前序遍历和中序遍历结果,要求其后序遍历的结果。

由于二叉树的前序遍历为ABDEFGCHI,可以知道这个二叉树的根结点是A,根据二叉树的中序遍历为DBFEGACIH,可以知道D、B、F、E、G结点为二叉树的左子树,而C、I、H结点为二叉树的右子树。

然后由前序遍历序列BDEFG可知,B结点为左子树的根结点,由前序遍历序列CHI可知,C结点为右子树的根结点;由中序遍历序列DBFEG可知,D结点为B子树的左子树,而F、E、G结点为B子树的右子树,由中序遍历序列CIH可知,I、H序列为C子树的右子树。

同理可以推导出,E为B右子树的根结点,而F为E的左子树,G为E的右子树,H为C的右子树,I为H的左子树。然后将构成的树

进行后序遍历得到结果为DFGEBIHCA。因此,本题的答案选C。\r\n\r\n\r\n

73.B

74.B解析:此题为数据库的基本概念,可以对照办工软件的电子表格进行如下理解:选择:我们根据某条件选择出一行或多行元组(一个元组即为二维表中的一行)。投影:按字段(也称属性,比如学生关系(学号,姓名,出生年月,性别),学号、姓名…都是属性)选取一列或多列(一个二维表中所有元组在某一列或几列上截取出来)。连接:2个或2个以上的表连接组成一张新的表,通常有条件连接。比如学生关系(学号,姓名,系号),又有一张系表(系号,系名,主任),2张表可以合并为一张这样的表(学号,姓名,系号,系名,主任)。

75.B软件设计包括软件的结构设计、数据接口设计和过程设计。其中软件结构设计主要包括系统由哪些子系统构成,以及这些子系统之间的关系是怎样的,并将这些内容编写成文档;数据接口设计的任务是为每个子系统设计其与其他子系统间的接口,并编写成文档,这个接口要是一个无二义的接口,不需要子系统的操作知识就可以使用;过程设计是指系统结构部件转换成软件的过程描述。

76.D

77.D

78.A选项A)定义字符数组str,然后将str赋值给C,c便指向字符串str,符合题意。所以选择A)。

79.A解析:二叉树的中序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。

80.A

\n本题中的str为一个字符型数组,P为字符型指针变量,其指向str的首地址,*P的值为strE03中的字符,其类型、长度不同,但字符第一个相同,故答案选择A。

\n

81.(1)错误:y=0;

正确:y=1;

(2)错误:d=i=num;

正确:d=num-i;

【解析】由函数proc()可知,变量y是判断小于num/2的整数中是否存在素数的标志,y=1为找到所要的素数,其初始值应该为1,因此,“y=0;”应改为“y=1;”变量ntim为两个素数之和,变量i和d为要求的两个素数,因此,“d=i-num;”应改为“d=num-i;”。

82.voidfun(int*w,intp,intn){ intX,j,ch; for(x=0;x<=p;x++) { ch=w[0]; for(j=1;j /*通过for循环语句,将p+1~n-1(含n-1)之间的数组元素依次向前移动p+1个存储单元*/ { w[j-1]=w[j]; } w[n-1]=ch; /*将下标为0~p的数组元素逐一赋给数组w[n-1]*/ }}本题要求把下标为0~p(含p,p小于等于n-1)的数组元素平移到数组的最后。可以根据输入的p值,通过for循环语句,将p+1~n-1(含n-1)之间的数组元素依次向前移动p+1个存储单元,即w[j-1]=w[j];。同时将下标为0~p的数组元素逐一赋给数组w[n-1],也就是通过语句w[n-1]=ch;来实现此操作。2021年河南省驻马店市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.设x、y、z、t均为int型变量,则执行以下语句后,t的值是()x=y=z=l;t=++x||++y&&++z;

A.不定值B.2C.1D.0

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

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

3.执行下列程序后,输出的结果是()。

#include<stdio.h>

#defineS(X)X*X

voidmain()

{ihta=9,k=3,m=2;

a/=S(k+m)/S(k+m);

printf("%d",A);

}

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

4.已知a、b、c为整型变量,若从键盘输入5<空格>6<空格>7<回车>,使a的值为5,b的值为6,c的值为7,则下列选项中正确的输入语句是()。

A.scanf("%3d%3d%3d",a,b,C);

B.scanf("%d%d%d",a,b,C);

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

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

5.下列说法不正确的是()。

A.图的遍历是从给定的源点出发每一个顶点仅被访问一次

B.图的深度遍历不适用于有向图

C.遍历的基本算法有两种:深度遍历和广度遍历

D.图的深度遍历是一个递归过程

6.以下叙述中错误的是()。

A.C语言编写的函数源程序,其文件名后缀可以是C

B.C语言编写的函数都可以作为一个独立的源程序文件

C.C语言编写的每个函数都可以进行独立的编译并执行

D.一个C语言程序只能有一个主函数

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

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

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

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

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

8.有以下程序:Voidf(inta[],ihti,intj){intt;if(i<j){t=a[i];a[i]=a[j];a[j]=t;f(a,i+1,i-1);}}main(){inti,aa[5]={1,2,3,4,5};f(aa,0,4);for(i=0;i<5;i++)printf("%d",aa[i]);printf("\n");}执行后输出结果是

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

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

10.关系R和关系S的并运算是______。

A.由关系R和关系S的所有元组合并组成的集合,再删去重复的元组

B.由属于R而不属于S的所有元组组成的集合

C.由既属于R又属于S的元组组成的集合

D.由R和S的元组连接组成的集合

11.数据库是()的集合,它具有统一的结构格式并存放于统一的存储介质,可被各个应用程序所共享

A.视图B.消息C.数据D.关系

12.有以下程序:#include<stdio.h>structstu{intnum;charname[l0];intage;};voidfun(structstu*p){printf("%s\n",p->name);}main(){structstux[3]={{01,"Zhang",20),{02,"Wang",l9},{03,"Zha0",l8}};fun(x+2);}程序运行后的输出结果是()。A.ZhangB.ZhaoC.WangD.19

13.执行下述程序后,输出的结果是()。#include<stdio.h>#defineS(X)X*Xvoidmain{inta=9,k=3,m=2;a/=S(k+m)/s(k+m);printf("%d",a);}A.1B.4C.9D.0

14.设有以下说明语句structnum{inta;floatb;}numl;则下面的叙述不正确的是______。

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

B.structnum是用户定义的结构体类型

C.numl是用户定义的结构体类型名

D.a和b都是结构体成员名

15.对n个数进行排序,哪种算法,其时间复杂度在最坏和最好都是O(nlogn)()

A.快速排序B.希尔排序C.堆排序D.选择排序

16.

17.

18.以下不正确的叙述是A.A.在C程序中,逗号运算符的优先级最低

B.在C程序中,APH和aph是两个不同的变量

C.若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变

D.当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值

19.设栈S的初始状态为空,6个元素入栈的顺序为e1,e2,e3,e4,e5和e6。若出栈的顺序是e2,e4,e3,e6,e5,el,则栈s的容量至少应该是()。

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

20.设有定义“intm=1,n=2;”,则以下if语句中,编译时会产生错误信息的是()。

A.if(m>n)m--elsen--;

B.if(m=n){m++;n++;}

C.if(m<0&&n<0){}

D.if(m>0);elsem++;

二、2.填空题(20题)21.下列程序的输出结果是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);

}

22.数据库系统在三级模式之间提供了两层映像,这两层映像是外模式/模式映像和【】。

23.在关系运算中,查找满足一定条件的元组的运算称之为【】。

24.下面程序的输出走【】。

main()

{enumem{em1=3,em2=1,em3};

char*aa[]={"AA","BB","CC","DD"};

printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);

}

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

doublefun(doublex,inty)

{inti;

doublez;

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

}

26.在程序设计阶段应该采取【】和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,进而用某种程序设计语言写成程序。

27.在循环中,continue语句与break语句的区别是:______语句只是结束本次循环,然后进行循环的条件判定。

28.在软件测试中,动态测试和静态测试手段只能发现程序中的错误,而不能证明程序中不存在错误,只有【】证明才有可能证明程序的正确性。

29.若a=l,b=2,则表达式!(x=a)||y=b)&&0的值是______。

30.下面程序有两个printf语句,如果第一个printf语句输出的是194,则第二个printf语句的输出结果是【】。

main()

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

p=a;

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

printf("%\n",p+9);

}

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

32.当线性表采用顺序存储结构实现存储时,其主要特点是______。

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

34.设a、b、c为int型变量,且a=10、b=5、c=1,则执行完以下语句,a的值变为【】。

a/=10-(++b)-(c--);

35.软件测试分为白箱(盒)测试和黑箱(盒)测试。等价类划分法属于【】测试。

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

main()

{inti,a[10];

a[0]=a[1]=1;

for(i=2;i<5;i++)

a[i]=a[i-2]+a[i-1];

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

{if(i%2==0)printf("\n");

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

}

}

37.有以下程序:

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

main()

{intx,y;

scanf("%d",&x);

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

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

}

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

38.C语言用于结构化程序设计的3种基本结构是______、选择结构和循环结构。

39.以下程序通过函数SunFun()调用F(x),x的值从0到10,这里F(x)=x2+1,由F函数实现,请填空。

#include<stdio.h>

intSunFun(int);

intF(int);

main()

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

SunFun(intn)

{intx,s=0;

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

returns;

F(intx)

{return(【】);}

40.以下程序运行后的输出结果是______。

main()

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

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

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

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

}

三、1.选择题(20题)41.C语言中,凡未指定存储类别的局部变量的隐含存储类别是()。

A.自动(auto)B.静态(statiC)C.外部(extern)D.寄存器(register)

42.两个或两个以上的模块之间关联的紧密程度称为()

A.耦合度B.内聚度C.复杂度D.连接度

43.下列程序的输出结果是______。main(){inti,x[3][3]=(1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)printf("%d,",x[i][2-i]);}

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

44.有以下程序#include<stdio.h>main(){ints[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;for(i=0;i<12;i++)c[s[i]]++;for(i=1;i<5;i++)printf("%d",c[i]);printf("\n");}程序的运行结果是

A.1234B.2344C.4332D.1123

45.有以下程序:main(){inta[][3]={{1,2,3},{4,5,0}},(*pa)[3],i;pa=a;for(i=0;i<3;i++)if(i<2)pa[1][i]=pa[1][i]-1;elsepa[1][i]=1;printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}执行后输出结果是()。

A.7B.6C.8D.无确定值

46.已知各变量的类型说明如下:intk,a,b;unsignedlongw=5;doublex=1.42;则以下不符合C语言语法的表达式是

A.x%(-3)B.Wd+=-2C.k=(a=2,b=3,a+D.a+=9-=(b=4)*(a=3)

47.以下程序的运行结果为______。main(){intx,*p,**q;x=10;p=&x;q=&p;printf("%d\n",**q);}

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

48.若已包括头文件<stdio.h>且已有定义staticcharstr[9];,现要使str从键盘获取字符串"Thelady",应使用

A.scanf("%s",str)

B.for(i=0;i<9;i++)gethchar(str[i]);

C.gets(str);

D.for(i=0;i<9;i++)scanf("%s",&str[i]);

49.以下程序的输出结果是______。main(){charch[3][4]={"123","456","78"},*p[3];inti;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;i<3;i++)printf("%s",p[i]);}

A.1.23457e+008B.1.23457e+008C.1.23457e+007D.147

50.下面软件中,属中应用软件的是()

A.UnixB.人事管理系统C.数据库管理理系统D.DOS

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

52.若有定义:inta[2][3];则才a数组的第i行第j列(假调i,j已正确说明并赋值)元素值的正确引用为

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

53.有如下程序:main{intx=1,a=0,b=0;switch(x){case0:b++;case1: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

54.已知p为指针变量,a为数组名,i为整型变量,下列赋值语句中不正确的是()

A.p=&i;B.p=a;C.p=&a[i];D.p=10;

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

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

56.下列函数定义中,会出现编译错误的是()。

A.max(intx,inty,int*z){*z=x>y?x:y;}

B.intmax(intx,y){intz;z=x>y?x:y;returnz;}

C.max(intx,inty){intz;z=x>y?x:y;return(z);}

D.intmax(intx,inty){return(x>y?x:y);}

57.有以下程序structSTU{charname[10];intnum;intScore;{main(){structStus[5]={{"YangSan",20041,703},{"LiSiGuo",20042,580},{"WangYin",20043,680},{"SunDan",20044,550},{"Penghua",20045;537}},*p[5],*t;inti,j;for(i=0;i<5;i++)p[i]=&s[i];for(i=0;i<4;i++)for(j=i+1;j<5;j++)if(p[i]->Score>p[j]->Score){t=p[i];p[i]=p[j];p[i]=t;}printf("%d%d\n",s[1].Score,p[1]->Score);}执行后输出结果是

A.550550B.680680C.580550D.580680

58.若有下列定义,则对a数组元素地址的正确引用是()。

inta[5],*p=a;

A.p+5B.*a+1C.&a+1D.&a[0]

59.若有说明:int*p,m=5,n;以下正确的程序段是

A.p=&n;scanf("%d",&p);

B.p=&n;scanf("%d",*p)

C.scanf("%d",&n);*p=n;

D.p=&n;*p=m;

60.有以下程序#include<stdio.h>intf(intx){inty;if(x==0||x==1)return(3);y=x*x-f(x-2);returny;}main(){intz;z=f(3);printf("%d\n",z);}程序的运行结果是

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

四、选择题(20题)61.以下叙述中错误的是()。

A.一个C程序中可以包含多个不同名的函数

B.一个C程序只能有一个主函数

C.C程序在书写时,有严格的缩进要求,否则不能编译通过

D.C程序的主函数必须用main作为函数名

62.(33)有以下程序段

inti,n;

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

{n=rand()%5;

switch(n)

{case1:

case3:printf("%d\n",n);break;

case2:

case4:printf("%d\n",n);continue;

case0:exit(0);

}

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

}

以下关于程序段执行情况的叙述,正确的是

A)for循环语句固定执行8次

B)当产生的随机数n为4时结束循环操作

C)当产生的随机数n为1和2时不做任何操作

D)当产生的随机数n为0时结束程序运行

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

64.请选出以下语句的输出结果Printf("%d\n",strlen("\t\"\065\xff\n"));

A.5B.14C.8D.输出项不合法,无正常输出

65.

66.软件设计中衡量模块独立性的度量标准是()。

A.抽象和信息隐蔽B.局部化和封装化C.内聚性和耦合性D.激活机制和控制方法

67.对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是

A.插入排序B.冒泡排序C.直接插入排序D.堆排序

68.下列函数的功能是

set(s,t)

{char*s,*t;

while((*s)&&(*t)&&(*t++==*s++));

return(*s-*t);

}A.A.求字符串的长度

B.比较两字符串的大小

C.将字符串s复制到字符串t中

D.将字符串s连接到字符串t后

69.有以下程序:

#include<stdio.h>

main()

{char*s="[2]34";intk=0,a=0;

whil(s[k+1]!=\0)

{k++;

if(k%2=o){a=a+(s[k]-0+1);continue;}

a=a+(s[k]-0);

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

}

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

A.k=6a=11B.k=3a=14C.k=4a=12D.k=5a=15

70.

71.对线性表进行二分法检索,其前提条件是()。A.A.线性表以顺序方式存储,并按关键码值排好序B.线性表以顺序方式存储,并按关键码的检索频率排好序

C.线性表以链式方式存储,并按关键码值排好序

D.线性表以链式方式存储,并按关键码的检索频率排好序

72.已知一棵二叉树前序遍历和中序遍历分别为ABDEFGCHI和DBFEGACIH,则该二叉树的后序遍历为

A.DFGEBHICAB.DGEBHFCAIC.DFGEBIHCAD.DGEBFIHCA

73.

74.关系数据库管理系统能实现的专门关系运算包括()。

A.排序、索引、统计B.选择、投影、连接C.关联、更新、排序D.显示、打印、制表

75.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指()

A.模块间的关系B.系统结构部件转换成软件的过程描述C.软件层次结构D.软件开发过程

76.

77.

78.设有定义

79.对下列二叉树

进行中序遍历的结果是()。

A.ACBDFEGB.ACBDFGEC.ABDCGEFD.FCADBEG

80.

设有以下定义和语句:

charstr[2O]="Program",*P:

p=str:

则以下叙述中正确的是()。

A.*p与stf[0]的值相等

B.str与P的类型完全相同

C.str数组长度和P所指向的字符串长度相等

D.数组str中存放的内容和指针变量P中存放的内容相同

五、程序改错题(1题)81.下列给定的程序中,函数proc()的功能是:为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。

请修改函数proc()中的错误,使它能得出正确的结果。

注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。

试题程序:

六、程序

温馨提示

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

评论

0/150

提交评论