2022-2023年四川省宜宾市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2022-2023年四川省宜宾市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2022-2023年四川省宜宾市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2022-2023年四川省宜宾市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2022-2023年四川省宜宾市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

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

文档简介

2022-2023年四川省宜宾市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.设一棵满二叉树共有15个结点,则在该满二叉树中的叶子结点数为()

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

2.下列关于数据库设计的叙述中,正确的是()。

A.在需求分析阶段建立数据字典

B.在概念设计阶段建立数据字典

C.在逻辑设计阶段建立数据字典

D.在物理设计阶段建立数据字典

3.下列选项中非法的字符常量是()。

A.'\t'B.'\039'C.','D.'\n'

4.给出以下定义:charx[]="abcdefg";chary[]={'a','b','c','d','e','f','g'};则正确的叙述为()。

A.数组x和数组y等价B.数组x和数组y的长度相同C.数组x的长度大于数组y的长度D.数组x的长度小于数组y的长度

5.用链接方式存储的队列,在进行删除运算时()。

A.仅修改头指针B.仅修改尾指针C.头、尾指针都要修改D.头、尾指针可能都要修改

6.若有运算符:>、=、<<、%、sizeof,则它们按优先级(由高至低)的正确排列顺序为()

A.%、sizeof、>、<<、=

B.sizeof、%、>、=、<<

C.sizeof、<<、>、%、=

D.sizeof、%、<<、>、=

7.有以下程序:#include<stdio.h>int*f(int*s){s[1]+=6;*s=7;s+=2;returns;}main(){inta[5]={1,2,3,4,5},*p=a;P=f(P);printf(“%d,%d,%d\n”,a[0],a[1],*p);}程序运行后的输出结果是()。

A.9,8,9B.7,8,7C.7,8,3D.1,2,1

8.结构化程序设计主要强调的是()。

A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序的易读性

9.有以下程序

main()

{inti,s=0,t[]={l,2,3,4,5,6,7,8,9};

for(i=0;i<9;i+=2)s+=*(t+i);

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

}

程序执行后的输出结果是A.A.45B.20C.25D.36

10.

11.

12.下列关于栈叙述正确的是A.栈顶元素最先能被删除B.栈顶元素最后才能被删除C.栈底元素永远不能被删除D.上述三种说法都不对

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

14.

15.若二维数组a有m列,则在a[i][j]前的元素个数为()。

A.i*m+j-1B.i*m+jC.J*m+iD.i*m+j+1

16.有以下定义和语句

StructWorkers

{intnum;charname[20];charc;

struct

{intday;intmonth;intyear;}s;

};

StructWorkersW,*pe;

PW=&W;

能给W中yeaR成员赋1980的语句是A.*pW.yeaR=1980;

B.W.yeaR=1980;

C.pW->yeaR=1980;

D.W.s.yeaR=1980;

17.设"char**s;",以下正确的表达式是()。

A.s="computer";B.*s="computer";C.**s="computer";D.*s='c';

18.若有以下的定义:‘intt[3][2];”,能正确表示t数组元素地址的表达式是()。

A.&t[3][2]B.t[3]C.t[l]D.t[2][2]

19.设某无向图中有n个顶点e条边,则建立该图邻接表的时间复杂度为()。

A.O(n+e)B.O(n^2)C.O(ne)D.O(n^3)

20.以下能正确定义且赋初值的语句是______。A.intn1=n2=10;

B.charc=32;

C.floatf=f+1.1;

D.doublex=12.3E2.5;

二、2.填空题(20题)21.以下程序的功能是根据输入的"y"("Y")与"n"("N"),在屏幕上分别显示出"ThisisYES."与"ThisisNO."。空白处需要填入的内容是

#include<stdio.h>

voidYesNo(charch)

{switch(ch)

{case′y′:

case′Y′:printf("\nThisisYES.\n");

case′n′:

case′N′:printf("\nThisisNO.\n");}

main()

{charch;

printf("\nEnterachary,Yorn,N:");

ch=【】;

printf("ch;%c",ch);

YesNo(ch);}

22.以下程序的功能是将字符串s中所有小写字母'a'删去,请填空。

#include<stdio.h>

main()

{chars[]="absuWWUDJFKFLaaakdK";

inti,j;

for(i=j=0;s[i]!='\0';i++)

if()

s[j++]=s[i];

s[j]='\0';

printf("%s",s);

}

23.函数mycmp(char*s,char*t)的功能提比较字符串s和t的大小,当s等于t时返回0,当s>t返回正值,当s<t时返回负值。请填空。

mycmp(char*s,char*t)

{while(*s==*t)

{if(*s=='\0')return0;

++s;++t;

}

return(【】)

}

24.数据结构分为线性结构和非线性结构,带链的队列属于[]。

25.以下程序中函数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=0;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[p1];x[p1]=[11];[12]=t;

main()

{inta[10],u;

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

f(a,10);

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

printf("\n");

}

26.在面向对象方法中,【】描述的是具有相似属性与操作的一组对象。

27.在计算机软件系统的体系结构中,数据库管理系统位于用户和【】之间。

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

main()

{int=0;

while(n++<=1);

printf("%d,",n);

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

}

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

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

31.软件生命周期可分为多个阶段,一般分为定义阶段、开发阶段和维护阶段。编码和测试属于【】阶段。

32.表达式1/2*(int)3.7/(int)(2.4*(1.5+2.5))值的数据类型为______。

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

main()

{inti,j,a[][3]={1,2,3,4,5,6,7,8,9);

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

for(j=i+1;j<3;j++)a[j][i]=0;

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

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

printf("\n");

}

}

34.函数pi的功能是根据以下公式近似求得的:

pi*pi/6=1+1/(2*2)+1/(3.3)+...+1/(n*n)

请在下面的函数中天空,完成求pi的功能。

#include<math.h>

doublepi(longn)

{doubles=0.0,longi;

for(i=1;i<<=n;i++)s=s+【】;

return(sqrt(6*s));

}

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

#include<stdio.h>

main()

{inta,b,c,n;

a=2;b=0;c=1;n=1;

while(n<=3)

{c=c*a;b=b+c;++n;}

printf("b=%d",B);

}

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

#include<stdio.h>

main()

{inta=1,b=3,c=5;

if(c=a+b)printf("yes\n");

elseprintf("no\n");

}

37.以下程序的功能是:处理由学号和成绩组成的学生记录,N名学生的数据已在主函数中放入结构体数组s中,它的功能是:把分数最高的学生数据放在h所指的数组中,注意:分数高的学生可能不只一个,函数返回分数最高学生的人数。请填空。

#include<stdio.h>

#defineN16

typedefstruct

{charnum[10];

ints;

}STREC;

intfun(STREC*a,STREC*b)

{inti,j=0,max=a[0].s;

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

if(max<a[i].s)max=a[i].s;

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

if(【】)b[j++]=a[i];

returnj;

}

main()

{STRECs[N]={{"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},

{"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87},

{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},

{"GA011",66},{"GA017",64},{"GA018",64},{"GA016",72}

};

STRECh[N];

inti,n;FILE*out;

n=fun(s,h);

printf("The%dhighestscore;\n",n);

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

printf("%s%4d\n",h[i].num,h[i].s);

printf("\n");

out=fopen("out15.dat","w");

fprintf(out,"%d\n",n);

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

fprintf(out,"%4d\n",h[i].s);

fclose(out);

}

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

#include<stdio.h>

main()

{inta=2,b=-1,C=2;

if(a<B)

if(b<O)c=0;

elsec++;

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

}

39.执行下面程序段后,k值是【】。

k=1;n=263;

do

{k*=n%10;n/=10;

}while(n);

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

#include<stdio.h>

fun()

{staticinta=O;

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

}

main()

{intcc;

for(cc=1;cc<5;cc++)fun();

printf("\n");

}

三、1.选择题(20题)41.设有下列说明语句:StrcutStr{intx;floaty;charz;}st;则下列的叙述中不正确的是()。

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

B.st是结构体类型名

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

D.structstr是结构体类型名

42.以下程序的输出结果是main(){charx=040;printf(“%o\n”,x<<1);}

A.100B.80C.64D.32

43.若要“为读/写建立―个新的文本文件”,在fopen函数中应使用的文件方式是()

A.wB.wbC.w+D.wb+

44.对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为______。A.N+1B.NC.(N+1)/2D.N/2

45.以下能正确表示x在-5到-1或5到1范围(含5和1)内,值为“真”的表达式是()

A.(x>=-5)||(x<=-1)&&(x<=5)&&(x>=1)

B.!(x>=-5||x<=-1&&x<=5||x>=1)

C.x<-5&&x>-1||x<1&&x>5

D.(x<-5)||(x>-1&&x<1)||(x>5)

46.有如下程序段:inta[10]={1,2,3,4,5,6,7,8,9,10};int*p=&a[3],b;b=P[5];则b的值是()。

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

47.以下叙述不正确的是

A.一个C源程序可由一个或多个函数组成

B.一个C源程序必须包含一个main函数

C.C程序的基本组成单位是函数

D.在C程序中,注释说明只能位于一条语句的后面

48.有下列二叉树,对此二叉树中序遍历的结果为()。

A.BDYEACFXZB.DYBEAFCZXC.ABCDEFXYZD.ABDYECFXZ

49.若有如下程序:main(){inta[3][4]={1,2,3,4,5,6,7,8,9};printf("%d%d%d\n",a[0][1],a[1][2],a[2][3]);}则程序运行后的输出结果是()

A.270B.480C.160D.不定值

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

main

{intx=8,y=8;

printf("%do%od\n",x--,--y);

}

A.88B.77C.78D.87

51.假定所有变量均已正确说明,下列程序段运行后x的值是()。a=b=c=0;x=12;if(!a)x--;elsex=5:if(c)x=3:elsex=4:A.11B.4C.12D.3

52.执行以下程序后,test.txt文件的内容是(若文件能正常打开)()。#include<stdio.h>main(){FILE*fp;char*s1="Fortran",*s2="Basic";if((fp=fopen("test.txt","wb"))==NULL){printf("Can'topentest.txtfile\n");exit(1);}fwrite(s1,7,1,fp);/*把从地址s1开始的7个字符写到fp所指文件中*/fseek(fp,0L,SEEK_SET);/*文件位置指针移到文件开头*/fwrite(s2,5,1,fp);fclose(fp);}

A.BasicanB.BasicFortranC.BasicD.FortranBasic

53.下列程序的输出结果是______。main(){union}inta[2];longk;charc[4];}un,*sp=&un;sp->a[0]=0x39;sp->a[1]=0x38;printf("%1x\n",sp->k);}

A.3938B.3839C.390038D.380039

54.若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是

A.abs(x-y)<10

B.x-y>-10&&x-y<10

C.!(x-y)<=10||!(y-x)>10

D.(x-y)*(x-y)<100

55.已知i、j、k为血型变量,若要从键盘输入2、3、4<CR>,使i、j、k的值分别为2、3、4,下列正确的输入语句是()。

A.scanf("%3d,%3d,%3d",&i,&j,&k);

B.scan("%d,%d,%d",&i,&j,&k);

C.scan("%do/od%d",&i,及j,&k);

D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);

56.根据下列的定义,能打印出字母P的语句是()。structstu{charname[10];intage;};structsms[10]={"John",11,"Pau1",12,"Mary",11,"adam",12};

A.printf("%c",s[3].name);

B.printf("%c",s[3].name[1]);

C.printf("%c",s[2].name[1]);

D.printf("%c",s[1].name[0]);

57.设变量已正确定义,则下列能正确计算f=n!的程序段是()。

A.f=0;for(i=1;i<=n;i++)f*=i;

B.f=1;for(i=1;i<n;i++)f*=i;

C.f=1;for(i=n;i>1;i++)f*=i;

D.f=1;for(i=n;i>=2;i--)f*=i;

58.假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为

A.log2nB.n2C.O(n1.5)D.n(n-1)/2

59.在ASCII代码表中每一个大写字母比它相应的小写字母的ASCII码()。

A.小32B.小64C.大32D.大1

60.若以下选项中的变量已正确定义,则正确的赋值语句足

A.x1=26.8%3;B.1+2=x2C.x3=0x12;D.x4=1+2=3;

四、选择题(20题)61.

62.

63.

64.数据库系统的核心是()。

A.数据库B.数据库管理系统C.数据库管理员D.数据库应用系统

65.

66.

设有定义的语句:“charc1=92,c2=92;”,则以下表达式中的值为零的是()。

A.c1^c2B.c1&c2C.~c2D.c1E.c2

67.阅读以下程序:

#include<stdio.h>

main()

{intcase;floatprintF;

printf("请输人2个数:");

scanf("%d%fl"&case,&printF);

printf("%dofof\n",case,printF);

}

该程序在编译时产生错误,其出错原因是()。

A.定义语句出错,case是关键字,不能用做用户自定义标识符

B.定义语句出错,printF不能用做用户自定义标识符

C.定义语句无错,scanf不能作为输入函数使用

D.定义语句无错,printf不能输出case的值

68.

69.在函数中默认存储类型说明符的变量应该是________存储类型。

A.内部静态B.外部C.自动D.寄存器

70.

71.

72.若变量均已正确定义并赋值,以下合法的C语言赋值语句是()。

A.x=y==5;B.X=n%2.5:C.x+n=i;D.x=5=4+1:

73.

74.C语言中用于结构化程序设计的三种基本结构是A.顺序结构、选择结构、循环结构

B.if、switch、break

C.for、while、do-while

D.if、for、continue

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

A.数据库系统是一个独立的系统,不需要操作系统的支持

B.数据库技术的根本目标是要解决数据的共享问题

C.数据库管理系统就是数据库系统

D.以上三种说法都不对

76.

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

A.c语言是一种结构化程序设计语言

B.使用三种基本结构构成的程序只能解决简单问题

C.结构化程序设计提倡模块化的设计方法

D.结构化程序由顺序、分支、循环三种基本结构组成

78.以下选项中正确的定义语句是()。

A.doublea;b;B.doublea=b=7;C.doublea=7,b=7;D.double,a,b;

79.

80.

有下列程序段:

intn,t=1,S=0;

scanf("%d",&n);

do{s=s+t;t=t-2;while(t!=n);

为使此程序段不陷入循环,从键盘输入的数据应该是()。

A.任意正奇数B.任意负偶数C.任意正偶数D.任意负奇数

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:在字符串str中找出ASCⅡ码值最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。例如,调用proc()函数之前给字符串输入DcybkdGT,调用后字符串中的内容为yDcbkdOT。

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

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

试题程序:

六、程序设计题(1题)82.请编写函数proc(),函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。

则函数值为59。

注意:部分源程序给出如下。

请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。

试题程序:

参考答案

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

2.A数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实和完善的。故答案为A选项。

3.B水平制表符中,'\t'表示的是横向跳若干格;选项B中,'\039'错误,'\039'是八进制形式表的字符,最大数为7,但其中出现'9',','是字符逗号;选项D中,'\n'表示的是换行。

4.C解析:在C语言中,字符串以'\\0'作为结束符,因此数组x的长度为7+1=8,而数组y的长度等于7。

5.D

6.D解析:主要考查运算符的优先级。sizeof的优先级最高,后面的顺序是:%、<<、>,优先级最低的是“=”。

7.C在main函数中调用了f函数使形参s指向数组a。执行“S[1]+=6”;语句,则“a[1]=8;”执行“*s=7;”语句,则“a[0]=7”;执行“s+=2;”语句,则s指向数组的第3个元素并返回s。调用后,函数返回值赋给指针P,则*P=3,因此输出的结果为7,8,3。故本题答案为C选项。

8.D解析:程序不仅是编写完就结束了,为了测试和维护程序,往往还有其他人阅读和跟踪程序,因此程序设计的风格应该强调简单和清晰,即程序的易读性,“清晰第一,效率第二”。

9.C解析:统计1~9九个数中的奇数和,此题考察指向数组的指针,C语言规定数组名代表数组的首地址,也就是第一个元素的地址。因此*(t+i)代表数组的第i+1个元素。程序运行的结果是1+2+3+4+5+6+7+8+9=25。

10.C

11.B

12.A解析:在栈中,允许插人与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。故本题选A。

13.A对象具有如下特性:标识唯一性、分类性、多态性、封装性、模块独立性。

14.C

15.B解析:二维数组的元素可以看成是按矩阵形式存放的,总是先存放第一行的元素,再存放第二行的元素。数组第一维的下标是i,说明它前面还有i行,有i*m个元素,数组第二维的下标是j,说明它前面还有j列,有j个元素,所以共有i*m+j个元素。

16.D解析:结构体structureworkers中的成员s是结构体类型,给w中成员year赋值的语句是w.s.year=1980,故选D。

17.B

18.C数组的下标是从0开始的,A中越界,行下标和列下标都不能越界;B中,虽然是个地址,但是也同样越界了;选项C中表示的是第一个的首地址;选项D表示的为其元素的值,并不是地址。

19.A

20.B解析:本题考查的知识点是变量赋初值.选项A中的语句只能起定义n1的作用,而n2=10是n1的初始值表达式,但因前面没有定义过n2,所以编译会报错“n2未定义”,故不正确。选项B使用一个整数初始化一个字符变量是正确的,因为字符变量中保存的本来就是整数(某字符的ASCII码值)。选项C定义的初始值表达式中出现了它自身,某些编译器能通过编译,但f在初始化之前是一个未知的值,用未知值来初始化也还是未知值,这是不可取的。选项D的初始值是一个非法常量,因为实型常量指数形式的指数部分必须为整数,这里的2.5非法。

21.getchargetchar解析:考查了字符可以作为整型变量来对待,参与操作。题中要求根据输入的字符调用函数YesNo来判断输入的字符是y(Y)还是n(N),字符的输入可用字符输入函数getchar。函数YesNo用来判断一个字符是y(Y)还是n(N),主要用了一个switch多分支结构来比较输入字符与字符\ue008'y',\ue009'Y'、,'n','N'是否相等来实现的。

22.s[i]!='a's[i]!='a'解析:本题是要将字符串s中所有小写字母'a'删去,所以if语句的判断条件应该是字符串s中的字符和字符'a'不相同的时候,就把它仍然存在原来的数组中,若是和字符'a'相同,就不再保存它。

23.*s-*t或-*t+*s*s-*t或-*t+*s解析:函数的两个形参是两个字符指针变量,字符串的首地址是指针变量的值,*s和*t表示字符串数组s和t的第一个字符,在while循环中,是通过s和t值的不断变化来改变指针所指向的字符,要改变s和t所指不同字符的ASCII码的差值,必须使用“*s-*t”得出。

24.线性结构线性结构解析:与栈类似,队列也是线性表,也町以采用链式存储结构。

25.x[0]x[0]x[0]x[0]解析:函数f()通过for循环逐个比较数组x中的元素,循环结束后,p0和p1分别表示最大值和最小值在数组中的下标位置,然后按照题意将最大值x[p0]和数组的最后一个元素x[n-1)交换位置,再将最小值x[p1]和第一个元素(x[0])进行交换,所以空白处应该填入x[0]。

26.类类解析:在面向对象方法中,类描述的是具有相似属性与操作的一组对象。

27.操作系统或OS操作系统或OS解析:数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务。位于用户和操作系统之间。

28.333,3解析:本题在while(n++<=1)语句后,直接加了分号,说明如果while()的条件为真时,该循环什么都不做;n++是先取n的当前值和I做比较,然后再将n加1。第一次循环,n=0时,循环条件n++=0<=1成立,执行循环,然后得到n=1。第二次循环,n=1时,循环条件n++=1<=1成立,执行循环,然后得到n=2。第三次循环,n=2时,循环条件n++=2<=1不成立,不执行循环,但在判断循环条件时仍将n加1,得到n=3。退出循环后执行printf语句,第二个printf语句输出n++,是先输出n的当前值3,然后再将n加1,即程序结束后得到n=4,但输出的是3。

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

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

31.开发开发解析:软件生命周期(SDLC,软件生存周期)是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,其中的编码和测试属于开发阶段。

32.整型整型解析:上面的表达式中,通过强制类型转换把最后参与运算的数据都转换成了int型,所以最后得到的结果也是int类型。

33.123056009123\r\n056\r\n009解析:本题中,定义了一个元素类型为整型的二维数组a[][3]={1,2,3,4,5,6,7,8,9},它是一个3*3的矩阵,“for(i=0;i<3;i++)for(j=i=1;j<3;j++)a[j][i]=0;”将列下标i小于行下标j的元素a[1][0]、a[2][0]、a[2][1]赋值为0,最后“for(j=0;j<3;j++)printf('%n',a[i][j]);printf('\\n');”进行换行输出,所以输出结果为:

123

056

009

34.1.0/i/i或1.0/(i*i)1.0/i/i或1.0/(i*i)解析:由题面中提供的计算pi的公式可知:在第i项其值为1/(i*i),考虑到运算结果为浮点数,故必须要将1转化为浮点数或采用1.0/(i*i)的形式。故本题应填1.0/(i*i)或其等效形式。

35.b=14b=14解析:分析程序可知,n的初始值为1,因此,while(n<=3)循环3次。第1次:c=c*a=2:b=b+c=2;n=2。第2次:c=c*a=4;b=-b+c=6;n=3。第3次;c=c*a=8:b=b+c=14。当n=4时,判断条件不满足,退出循环。

36.yesyes解析:程序if语句中是赋值表达式,而不是相等“==”运算。因为c=a+b中a+b的值为4,赋给c,c=4,表达式为真,输出yes。

37.max==a[i].smax==a[i].s解析:该程序使用循环嵌套,第1个for语句的作用是找出最大值。第2个循环的作用是找出与max相等的成绩,也即最高成绩的学生,并存入b中。

38.22解析:分析程序,a=2,b=-1,c=2时,if语句的表达式a<b不成立,不再往下判断,直接退出if语句,执行后面的输出语句,程序结束。在这个程序中a、b、c的值没做任何改变。

39.3636解析:本题循环体共执行了3次。第一次:k=3,n=26:第二次:k=18,n=2;第三次:k=36,n=0。

40.3691236912解析:本题考查最基本的for循环:for(cc=1;cc<5;cc++)规定循环次数为4次,每次a+=3即每次a的值增3,但因为fun函数中变量a为static类型,所以每次调用完子函数之后,变量a所做的改变都要保存。

41.B解析:本题主要考查结构类型的定义:struct是结构体类型的关键字;structstr是结构体类型名;x、y、z都是结构体成员名;st是结构变量名。

42.A解析:首先将八进制040转换成二进制数000100000,在将此二进制数左移一位为001000000,输出时转换成八进制数100。

43.D

44.B解析:在进行顺序查找过程中,如果被查的元素是线性表中的最后一个,或者被查元素根本不性表中,则为了查找这个元素需要与线性表中所有元素进行比较,这是顺序查找最坏的情况。

45.A

46.C解析:p=&a[3]将指针指向数组a的第4个元素,p[5]则是数组a的第9个元素,而a[8]=9,所以b=9。

47.D解析:本题考查C语言的基本基础知识。在C程序中,注释用符号“/*”开始,而以符号“*/”结束。程序的注释可以放在程序的任何位置。通常将注释放在程序的开始,以说明本程序的功能;或者放在程序的某个语句后面,以对此语句的功能进行描述。无论将注释放有何处,在程序进行编译时,编译程序不会处理注释的内容;且注释内容也不会出现在目标程序中。

48.B对二叉树的中序遍历是指:首先遍历左子树,然后访问根结点,最后遍历右子树。在遍历左、右子树时,注意依旧按照“左子树一根结点一右子树”的顺序。本题的遍历顺序是这样的:①首先访问左予树:BDEY;②在左子树BDEY中,也按中序遍历,先访问左子树DY;在左子树DY中,也按中序遍历,先访问左子树,左子树没有,则访问根结点D,然后访问右子树Y;③接着访问根B,再访问右子树E;④访问左子树BDEY后,接着访问根结点A,接着访问右子树CFXZ;⑤右子树CFXZ的访问顺序同理可得:FCZX。

49.A

50.D解析:本题考查自减(--)运算符的使用。“x--”是先引用x的值然后将x的值减1,所以输出的x值为8;“--y”是先将y的值减1然后再引用y的值,所以输出的y值为7。

51.B解析:本题考查ifelse语句。第一个if语句,先判断条件,发现a=0,则!a成立,执行下列的语句,x--,得x=11:第二个if语句,判断条件,发现c=o,则条件不成立,执行下列的else语句,得x=4。

52.A

53.D解析:结构体变量un的存储情况如图18-3所示,第一列表示地址,第二列为每个字节的值,可用两位的十六进制数表示,当把这4个字节的内容作为long型数据时,高地址字节的值表示高位,低地址字节的值表示低位。

54.C解析:本题考核的知识点是关系运算和逻辑运算的混合应用。选项A用了一个绝对值函数abs(),故选项A正确:选项B中用了一个“&&”逻辑与,故选项B正确:选项C中,“||”左边的式子如为真,将不再判断其后的表达式的值,故选项C不正确;选项D为本题中数学关系式的一个等价命题,故选项D正确.所以,4个选项中选项C符合题意。

55.B解析:函数scan()的调用形式是:scanf(格式字符串,输入项地址表)。其中,“格式字符串”是要输入的变量的格式符:“输入项地址表”是要输入的变量的地址。若在格式符中插入了其他字符,则在输入时要求按一一对应的位置原样输入这些字符,其中的逗号也必须输入。

56.D解析:本题主要考查按结构数组元素方式引用结构成员。字母P为“Paul”的第一个字母,是结构体s[1]的name成员的第一个元素的值,即s[1].name[0]的值。

57.D解析:要正确计算函数f=n!,由n!的数学定义可知n!=n*(n-1)*(n-2)*……*1。在选项A)中,由于f的初值为0,在for循环语句中,f依次乘以1,2,3,……,n。最后计算f=n!=O,所以选项A)不正确。在选项B)中,f的初值为1,在for循环语句中,f依次乘以1,2,3,……,(n-1)。最后计算得到f=(n-1)!,所以选项B)不正确。在选项C)中,f的初值为1,在for循环语句中,f依次乘以n,n+1,n+2,……,所以选项C)不正确。在选项D)中,f的初值为1,在for循环语句中,f依次乘以n,n-1,n-2,……,2。最后计算f=n!,所以选项D)正确。

58.D解析:假设线性表的长度为n,则在最坏情况下,冒泡排序要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。

59.A解析:本题考查大小写字母的ASCII码值的关系。大写字母比它相应的小写字母的ASCII码小32。

60.C解析:本题考核的知识点是C语言中对变量赋值的应用。赋值操作由赋值运算符“=”来完成,一般形式为变量:表达式,赋值的方向为由右向左,即将“;”右侧表达式的值赋给“=”左侧的变量,执行步骤是先计算再赋值。选项A中运算符“%”的运算对象必须为整数,而选项A中26.8不为整数,故选项A不正确;选项B将一个变量赋值给一个表达式,这在C语言中是不允许的,故选项B不正确;选项D中也是将一个常量3赋值给一个表达式,故选项D不正确;所以,4个选项中选项C符合题意。

61.B

62.A

63.D

64.B\n数据库管理系统是一种软件系统,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,是数据库系统的核心。

\n

65.C

66.A

\n当值相同时按位异或,则为0,按位或与按位与时仍不变,负数也为非0。

\n

67.A\n本题中定义了整形变量case,但case是关键字,关键字不能用做标识符。单精度printF不是关键字,因为标识符区分大小写。所以A不正确。

\n

68.D

69.A

70.D

71.D

72.AB选项中运算符“%”的运算对象为整数。C选项中不能将变量赋给表达式“x+n”。D选项中不能将表达式“4+1”赋给常量5。故本题答案为A选项。

73.B

74.A解析:结构化程序由3种基本结构组成,即顺序结构、循环结构(包括for语句、while语句及do…\u3000while语句)和选择结构(包括if语句和switch语句)。

75.B解析:本题考查数据库系统的基本概念和知识。

数据库系统除了数据库管理软件之外,还心须有其他相关软件的支持。这些软件包括操作系统、编译系统、应用软件开发工具等。对于大型的多用户数据库系统和网络数据库系统,还需要多用户系统软件和网络系统软件的支持。因此,选项A的说法是错误的。

数据库可以看成是长期存储在计算机内的、大量的、有结构的和可共享的数据集合。因此,数据库具有为各种用户所共享的特点。不同的用户可以使用同一个数据库,可以取出它们所需要的子集,而且容许子集任意重叠。数据库的根本目标是要解决数据的共享问题。因此,选项B的说法是正确的。

通常将引入数据库技术的计算机系统称为数据库系统。一个数据库系统通常由五个部分组成,包括相关计算机的硬件、数据库集合、数据库管理系统、相关软件和人员。

因此,选项C的说法是错误的。

因此,本题的正确答案是选项B。

76.C

77.BC语言是一种结构化程序设计语言。结构化程序设计是以模块化设计为中心的,有三种基本结构:顺序、选择和循环结构。各模块相互独立,因而可将原来较为复杂的问题化简为一系列简单模块并充分利用现有模块搭建新系统,提高程序的重用性和可维护性。

78.C解析:C语言规定,每个语句和数据定义以分号结束,则说明选项A是两条语句,前—条是对变量a作双精度型定义的语句,而后一个“b;”是一个缺少类型的不正确的定义形式,如果是定义多个变量,则应用逗号隔开;当定义多个变量赋同—个值时,不能用等式连写的方式,如选项B的“double\u3000a=b=7;”应写成“double\u3000a=7,b=7;”所以选项B错误,选项C正确;在定义语句时,类型与变量名之间应用空格分隔,而不是逗号,所以选项D错误。

79.D

80.D

\n本题主要考查do—while循环,因为变量t的初始值等于1,经过第一次do-while循环后,执行t=t-1这条语句一次,所以变量t的值为-1,判断关系表达式t!=n是否成立,如果关系表达式成立,则执行第二次循环,如果关系表达式不成立,退出循环。由此可见,只要输入变量n的值为负奇数,则一定会使t==n成立,故退出do-while循环。

\n

81.(1)错误:voidproc(chart)

正确:voidproc(char*t)

(2)错误:t=q+i;

正确:q=t+i;

【解析】由主函数中函数调用的实参可知,形参应该为字符型指针变量.即“voidproc(chart)”应改为“voidproc(char*t);”。由函数proc()可知,变量q是指向最大字符的指针,最大字符位于字符串str的第i个位置。因此,“t=q+i;”应改为“q=t+i;”。

82.

【解析】要求二维数组周边元素之和,首先应该判断数组中的每一个元素是否是周边元素。找出所有的周边元素后求和,返回给主函数。周边元素的下标特点为行或列的下标为。或N—1。根据此特点,找出所有的周边元素然后求和。

2022-2023年四川省宜宾市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.设一棵满二叉树共有15个结点,则在该满二叉树中的叶子结点数为()

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

2.下列关于数据库设计的叙述中,正确的是()。

A.在需求分析阶段建立数据字典

B.在概念设计阶段建立数据字典

C.在逻辑设计阶段建立数据字典

D.在物理设计阶段建立数据字典

3.下列选项中非法的字符常量是()。

A.'\t'B.'\039'C.','D.'\n'

4.给出以下定义:charx[]="abcdefg";chary[]={'a','b','c','d','e','f','g'};则正确的叙述为()。

A.数组x和数组y等价B.数组x和数组y的长度相同C.数组x的长度大于数组y的长度D.数组x的长度小于数组y的长度

5.用链接方式存储的队列,在进行删除运算时()。

A.仅修改头指针B.仅修改尾指针C.头、尾指针都要修改D.头、尾指针可能都要修改

6.若有运算符:>、=、<<、%、sizeof,则它们按优先级(由高至低)的正确排列顺序为()

A.%、sizeof、>、<<、=

B.sizeof、%、>、=、<<

C.sizeof、<<、>、%、=

D.sizeof、%、<<、>、=

7.有以下程序:#include<stdio.h>int*f(int*s){s[1]+=6;*s=7;s+=2;returns;}main(){inta[5]={1,2,3,4,5},*p=a;P=f(P);printf(“%d,%d,%d\n”,a[0],a[1],*p);}程序运行后的输出结果是()。

A.9,8,9B.7,8,7C.7,8,3D.1,2,1

8.结构化程序设计主要强调的是()。

A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序的易读性

9.有以下程序

main()

{inti,s=0,t[]={l,2,3,4,5,6,7,8,9};

for(i=0;i<9;i+=2)s+=*(t+i);

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

}

程序执行后的输出结果是A.A.45B.20C.25D.36

10.

11.

12.下列关于栈叙述正确的是A.栈顶元素最先能被删除B.栈顶元素最后才能被删除C.栈底元素永远不能被删除D.上述三种说法都不对

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

14.

15.若二维数组a有m列,则在a[i][j]前的元素个数为()。

A.i*m+j-1B.i*m+jC.J*m+iD.i*m+j+1

16.有以下定义和语句

StructWorkers

{intnum;charname[20];charc;

struct

{intday;intmonth;intyear;}s;

};

StructWorkersW,*pe;

PW=&W;

能给W中yeaR成员赋1980的语句是A.*pW.yeaR=1980;

B.W.yeaR=1980;

C.pW->yeaR=1980;

D.W.s.yeaR=1980;

17.设"char**s;",以下正确的表达式是()。

A.s="computer";B.*s="computer";C.**s="computer";D.*s='c';

18.若有以下的定义:‘intt[3][2];”,能正确表示t数组元素地址的表达式是()。

A.&t[3][2]B.t[3]C.t[l]D.t[2][2]

19.设某无向图中有n个顶点e条边,则建立该图邻接表的时间复杂度为()。

A.O(n+e)B.O(n^2)C.O(ne)D.O(n^3)

20.以下能正确定义且赋初值的语句是______。A.intn1=n2=10;

B.charc=32;

C.floatf=f+1.1;

D.doublex=12.3E2.5;

二、2.填空题(20题)21.以下程序的功能是根据输入的"y"("Y")与"n"("N"),在屏幕上分别显示出"ThisisYES."与"ThisisNO."。空白处需要填入的内容是

#include<stdio.h>

voidYesNo(charch)

{switch(ch)

{case′y′:

case′Y′:printf("\nThisisYES.\n");

case′n′:

case′N′:printf("\nThisisNO.\n");}

main()

{charch;

printf("\nEnterachary,Yorn,N:");

ch=【】;

printf("ch;%c",ch);

YesNo(ch);}

22.以下程序的功能是将字符串s中所有小写字母'a'删去,请填空。

#include<stdio.h>

main()

{chars[]="absuWWUDJFKFLaaakdK";

inti,j;

for(i=j=0;s[i]!='\0';i++)

if()

s[j++]=s[i];

s[j]='\0';

printf("%s",s);

}

23.函数mycmp(char*s,char*t)的功能提比较字符串s和t的大小,当s等于t时返回0,当s>t返回正值,当s<t时返回负值。请填空。

mycmp(char*s,char*t)

{while(*s==*t)

{if(*s=='\0')return0;

++s;++t;

}

return(【】)

}

24.数据结构分为线性结构和非线性结构,带链的队列属于[]。

25.以下程序中函数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=0;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[p1];x[p1]=[11];[12]=t;

main()

{inta[10],u;

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

f(a,10);

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

printf("\n");

}

26.在面向对象方法中,【】描述的是具有相似属性与操作的一组对象。

27.在计算机软件系统的体系结构中,数据库管理系统位于用户和【】之间。

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

main()

{int=0;

while(n++<=1);

printf("%d,",n);

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

}

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

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

31.软件生命周期可分为多个阶段,一般分为定义阶段、开发阶段和维护阶段。编码和测试属于【】阶段。

32.表达式1/2*(int)3.7/(int)(2.4*(1.5+2.5))值的数据类型为______。

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

main()

{inti,j,a[][3]={1,2,3,4,5,6,7,8,9);

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

for(j=i+1;j<3;j++)a[j][i]=0;

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

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

printf("\n");

}

}

34.函数pi的功能是根据以下公式近似求得的:

pi*pi/6=1+1/(2*2)+1/(3.3)+...+1/(n*n)

请在下面的函数中天空,完成求pi的功能。

#include<math.h>

doublepi(longn)

{doubles=0.0,longi;

for(i=1;i<<=n;i++)s=s+【】;

return(sqrt(6*s));

}

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

#include<stdio.h>

main()

{inta,b,c,n;

a=2;b=0;c=1;n=1;

while(n<=3)

{c=c*a;b=b+c;++n;}

printf("b=%d",B);

}

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

#include<stdio.h>

main()

{inta=1,b=3,c=5;

if(c=a+b)printf("yes\n");

elseprintf("no\n");

}

37.以下程序的功能是:处理由学号和成绩组成的学生记录,N名学生的数据已在主函数中放入结构体数组s中,它的功能是:把分数最高的学生数据放在h所指的数组中,注意:分数高的学生可能不只一个,函数返回分数最高学生的人数。请填空。

#include<stdio.h>

#defineN16

typedefstruct

{charnum[10];

ints;

}STREC;

intfun(STREC*a,STREC*b)

{inti,j=0,max=a[0].s;

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

if(max<a[i].s)max=a[i].s;

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

if(【】)b[j++]=a[i];

returnj;

}

main()

{STRECs[N]={{"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},

{"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87},

{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},

{"GA011",66},{"GA017",64},{"GA018",64},{"GA016",72}

};

STRECh[N];

inti,n;FILE*out;

n=fun(s,h);

printf("The%dhighestscore;\n",n);

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

printf("%s%4d\n",h[i].num,h[i].s);

printf("\n");

out=fopen("out15.dat","w");

fprintf(out,"%d\n",n);

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

fprintf(out,"%4d\n",h[i].s);

fclose(out);

}

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

#include<stdio.h>

main()

{inta=2,b=-1,C=2;

if(a<B)

if(b<O)c=0;

elsec++;

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

}

39.执行下面程序段后,k值是【】。

k=1;n=263;

do

{k*=n%10;n/=10;

}while(n);

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

#include<stdio.h>

fun()

{staticinta=O;

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

}

main()

{intcc;

for(cc=1;cc<5;cc++)fun();

printf("\n");

}

三、1.选择题(20题)41.设有下列说明语句:StrcutStr{intx;floaty;charz;}st;则下列的叙述中不正确的是()。

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

B.st是结构体类型名

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

D.structstr是结构体类型名

42.以下程序的输出结果是main(){charx=040;printf(“%o\n”,x<<1);}

A.100B.80C.64D.32

43.若要“为读/写建立―个新的文本文件”,在fopen函数中应使用的文件方式是()

A.wB.wbC.w+D.wb+

44.对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为______。A.N+1B.NC.(N+1)/2D.N/2

45.以下能正确表示x在-5到-1或5到1范围(含5和1)内,值为“真”的表达式是()

A.(x>=-5)||(x<=-1)&&(x<=5)&&(x>=1)

B.!(x>=-5||x<=-1&&x<=5||x>=1)

C.x<-5&&x>-1||x<1&&x>5

D.(x<-5)||(x>-1&&x<1)||(x>5)

46.有如下程序段:inta[10]={1,2,3,4,5,6,7,8,9,10};int*p=&a[3],b;b=P[5];则b的值是()。

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

47.以下叙述不正确的是

A.一个C源程序可由一个或多个函数组成

B.一个C源程序必须包含一个main函数

C.C程序的基本组成单位是函数

D.在C程序中,注释说明只能位于一条语句的后面

48.有下列二叉树,对此二叉树中序遍历的结果为()。

A.BDYEACFXZB.DYBEAFCZXC.ABCDEFXYZD.ABDYECFXZ

49.若有如下程序:main(){inta[3][4]={1,2,3,4,5,6,7,8,9};printf("%d%d%d\n",a[0][1],a[1][2],a[2][3]);}则程序运行后的输出结果是()

A.270B.480C.160D.不定值

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

main

{intx=8,y=8;

printf("%do%od\n",x--,--y);

}

A.88B.77C.78D.87

51.假定所有变量均已正确说明,下列程序段运行后x的值是()。a=b=c=0;x=12;if(!a)x--;elsex=5:if(c)x=3:elsex=4:A.11B.4C.12D.3

52.执行以下程序后,test.txt文件的内容是(若文件能正常打开)()。#include<stdio.h>main(){FILE*fp;char*s1="Fortran",*s2="Basic";if((fp=fopen("test.txt","wb"))==NULL){printf("Can'topentest.txtfile\n");exit(1);}fwrite(s1,7,1,fp);/*把从地址s1开始的7个字符写到fp所指文件中*/fseek(fp,0L,SEEK_SET);/*文件位置指针移到文件开头*/fwrite(s2,5,1,fp);fclose(fp);}

A.BasicanB.BasicFortranC.BasicD.FortranBasic

53.下列程序的输出结果是______。main(){union}inta[2];longk;charc[4];}un,*sp=&un;sp->a[0]=0x39;sp->a[1]=0x38;printf("%1x\n",sp->k);}

A.3938B.3839C.390038D.380039

54.若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是

A.abs(x-y)<10

B.x-y>-10&&x-y<10

C.!(x-y)<=10||!(y-x)>10

D.(x-y)*(x-y)<100

55.已知i、j、k为血型变量,若要从键盘输入2、3、4<CR>,使i、j、k的值分别为2、3、4,下列正确的输入语句是()。

A.scanf("%3d,%3d,%3d",&i,&j,&k);

B.scan("%d,%d,%d",&i,&j,&k);

C.scan("%do/od%d",&i,及j,&k);

D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);

56.根据下列的定义,能打印出字母P的语句是()。structstu{charname[10];intage;};structsms[10]={"John",11,"Pau1",12,"Mary",11,"adam",12};

A.printf("%c",s[3].name);

B.printf("%c",s[3].name[1]);

C.printf("%c",s[2].name[1]);

D.printf("%c",s[1].name[0]);

57.设变量已正确定义,则下列能正确计算f=n!的程序段是()。

A.f=0;for(i=1;i<=n;i++)f*=i;

B.f=1;for(i=1;i<n;i++)f*=i;

C.f=1;for(i=n;i>1;i++)f*=i;

D.f=1;for(i=n;i>=2;i--)f*=i;

58.假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为

A.log2nB.n2C.O(n1.5)D.n(n-1)/2

59.在ASCII代码表中每一个大写字母比它相应的小写字母的ASCII码()。

A.小32B.小64C.大32D.大1

60.若以下选项中的变量已正确定义,则正确的赋值语句足

A.x1=26.8%3;B.1+2=x2C.x3=0x12;D.x4=1+2=3;

四、选择题(20题)61.

62.

63.

64.数据库系统的核心是()。

A.数据库B.数据库管理系统C.数据库管理员D.数据库应用系统

65.

66.

设有定义的语句:“charc1=92,c2=92;”,则以下表达式中的值为零的是()。

A.c1^c2B.c1&c2C.~c2D.c1E.c2

67.阅读以下程序:

#include<stdio.h>

main()

{intcase;floatprintF;

printf("请输人2个数:");

scanf("%d%fl"&case,&printF);

printf("%dofof\n",case,printF);

}

该程序在编译时产生错误,其出错原因是()。

A.定义语句出错,case是关键字,不能用做用户自定义标识符

B.定义语句出错,printF不能用做用户自定义标识符

C.定义语句无错,scanf不能作为输入函数使用

D.定义语句无错,printf不能输出case的值

68.

69.在函数中默认存储类型说明符的变量应该是________存储类型。

A.内部静态B.外部C.自动D.寄存器

70.

71.

72.若变量均已正确定义并赋值,以下合法的C语言赋值语句是()。

A.x=y==5;B.X=n%2.5:C.x+n=i;D.x=5=4+1:

73.

74.C语言中用于结构化程序设计的三种基本结构是A.顺序结构、选择结构、循环结构

B.if、switch、break

C.for、while、do-while

D.if、for、continue

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

A.数据库系统是一个独立的系统,不需要操作系统的支持

B.数据库技术的根本目标是要解决数据的共享问题

C.数据库管理系统就是数据库系统

D.以上三种说法都不对

76.

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

A.c语言是一种结构化程序设计语言

B.使用三种基本结构构成的程序只能解决简单问题

C.结构化程序设计提倡模块化的设计方法

D.结构化程序由顺序、分支、循环三种基本结构组成

78.以下选项中正确的定义语句是()。

A.doublea;b;B.doublea=b=7;C.doublea=7,b=7;D.double,a,b;

79.

80.

有下列程序段:

intn,t=1,S=0;

scanf("%d",&n);

do{s=s+t;t=t-2;while(t!=n);

为使此程序段不陷入循环,从键盘输入的数据应该是()。

A.任意正奇数B.任意负偶数C.任意正偶数D.任意负奇数

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:在字符串str中找出ASCⅡ码值最大的字符,将其放在第一个位置上,并将该字符前的原字符向后顺序移动。例如,调用proc()函数之前给字符串输入DcybkdGT,调用后字符串中的内容为yDcbkdOT。

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

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

试题程序:

六、程序设计题(1题)82.请编写函数proc(),函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。

则函数值为59。

注意:部分源程序给出如下。

请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。

试题程序:

参考答案

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

2.A数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实和完善的。故答案为A选项。

3.B水平制表符中,'\t'表示的是横向跳若干格;选项B中,'\039'错误,'\039'是八进制形式表的字符,最大数为7,但其中出现'9',','是字符逗号;选项D中,'\n'表示的是换行。

4.C解析:在C语言中,字符串以'\\0'作为结束符,因此数组x的长度为7+1=8,而数组y的长度等于7

温馨提示

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

评论

0/150

提交评论