2021-2022年贵州省遵义市全国计算机等级考试C语言程序设计_第1页
2021-2022年贵州省遵义市全国计算机等级考试C语言程序设计_第2页
2021-2022年贵州省遵义市全国计算机等级考试C语言程序设计_第3页
2021-2022年贵州省遵义市全国计算机等级考试C语言程序设计_第4页
2021-2022年贵州省遵义市全国计算机等级考试C语言程序设计_第5页
已阅读5页,还剩104页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年贵州省遵义市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.有以下程序

#include<stdio.h>

main()

{charc1,c2,c3,c4,c5,c6;

scanf("%c%c%c%c",&c1,&c2,&c3,&c4);

c5=getchar();c6=getchar();

putchar(c1);putchar(c2);

printf("%c%c\n",c5,c6);

}

程序运行后,若从键盘输入(从第1列开始)

123<回车>

45678<回车>

则输出结果是A.A.1267B.1256C.1278D.1245

2.下列运算符中,运算对象必须是整型的是()。

A./B.%=C.=D.&

3.若有定义“intx=12,y=8,z;”,在其后执行语句“z=0.9+x/y;”,则z的值为()。

A.1B.1.9C.2D.2.4

4.可以作为Windows外壳程序的是()

A.程序管理器B.文件管理C.程序管理器和文件管理器D.主群组

5.假设某算法的计算时间可用递推关系式T(n)=2T(n/2)+n,T(1)=1表示,则该算法的时间复杂度为()

A.O(logn)B.O(n*logn)C.O(n)D.O(n^2)

6.假设整型数i的地址为0x12345678,指针ip地址为0x21850043,则执行以下后,k的值为()。A.0x12345678B.0x21850043C.100D.不确定

7.下列程序的输出结果是()。#include<stdio.h>main{structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un))}A.6,2B.6,4C.8,4D.8,6

8.若有定义:“inta[2][3];”,则对a数组的第i行第j列元素的正确引用为()。

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

9.第

11

若有定义:char*st="howareyou";下列程序段中正确的是

A.chara[11],*p;strcpy(p=a+1,&st[4]);

B.chara[11];strcpy(++a,st);

C.chara[11];strcpy(a,st);

D.chara[],*p;strcpy(p=&a[1],st+2);

10.在单链表中,增加头结点的目的是______。

A.方便运算的实现B.使单链表至少有一个结点C.标识表结点中首结点的位置D.说明单链表是线性表的链式存储实现

11.软件详细设计产生的图如图所示。该图是()。A.N—S图B.PAD图C.程序流程图D.E—R图

12.同一个关系模型的任意两个元组值()。

A.可以全相同B.不能全相同C.必须全相同D.以上都不对

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

A.通过指针变量存取某个变量值的方式称为“直接存取”方式

B.在程序的开头包含头文件stdio.h后,可以给指针变量赋NULL值

C.将一个指针变量中的值赋给另一个指针变量,则这两个指针变量指向同一地址

D.C语言中函数返回值的类型可以是简单的数据类型,也可以是指针类型

14.若有如下程序:intsub(){staticintn=1;intx=1;x*=n;n++;returnx;}main(){intn,t=1;for(n=1;n<6;n++)t*=sub();printf("%d\n",t);}则程序运行后的输出结果是()

A.15B.120C.34560D.-30976

15.设n个待排序的记录关键字,则在堆排序中需要()个辅助记录单元。

A.1B.12C.60D.15

16.在C语言中,char型数据在内存中的存储形式是()。

A.补码B.反码C.原码D.ASCII码

17.对含有16个元素的有序表进行二分查找,关键字比较次数最多是()

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

18.有以下程序:

执行后输出结果是()。

A.n,tuesdayB.d,mondayC.U,mondayD.0,wednesday

19.在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送()。A.调用语句B.命令C.口令D.消息

20.C语言结构体类型变量在程序执行期间,()。

A.所有成员一直驻留在内存中B.没有成员驻留在内存中C.部分成员驻留在内存中D.只有一个成员驻留在内存中

二、2.填空题(20题)21.以下程序运行后的输出结果是______。

main()

charc;intn=100;

floatf=10;doublex;

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

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

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

#include<stdio.h>

main()

{inta[4][4]={{1,2,3,4},{5'6'7'8},{11'12'13'14},{15'16'17'18}};

inti=0,j=0,s=0;

while(i++<4)

if(i==2[[i==4)continue;

j=0;

do{s+=a[i][j];j++;}while(j<4);

}

pdnff("%d'\n",s);

}

23.有一个已排好序的数组,今输入一个数,要求按原来的顺序规律将它插入到数组中。算法是:假设排序顺序是从小到大,对输入的数,检查它在数组中哪个数之后,然后将比这个数大的数顺序后移一个位置,在空出的位置上将该数插入。请在程序中的空白处填上一条语句或一个表达式。

#defineN100

main()

{floata[N+1],x;

inti,p;

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

scanf("%f"&a[i]);

scanf("%f",&x);

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

if(x<a[i])

{【】;

break;}

for(i=N-1;【】;i-)

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

a[p]=x;

for(i=0;【】;i++)

{printf("%8.2f",a[i]);

if(i%5=0)

printf("\n");

}

}

24.C语言中用______表示逻辑值为“真”,用数字“0”表示逻辑值为“假”。

25.以下程序中,主函数调用了LineMax函数,实现在N行M列的二维数组中,找出每一行上的最大值。

请填空。

#defineN3

#defineM4

voidLineMax(intx[N][M])

{inti,j,P;

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

{p=0;

for(j=1;j<M;j++)

if(x[i][p]<x[i][j])【】;

printf("Themaxvalueinline%dis%d\n",i,【】);

}

main()

{intx[N][M]={1,5,7,4,2,6,4,3,8,2,3,1};

【】;

}

26.按"先进后出"原则组织数据的数据结构是【】。

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

intx=0,y=0;

while(x<15)y++,x+=++y;

printf("%d,%d",y,x);

28.以卜函数sstrcat()的功能是实现宁符串的连接,即将t所指字符串复制到s所指字符串的尾部。例如:s所指字符串为abcd,t所指字符申为efgh,函数调用后s所指字符串为abcdefgh。请填空。

#include<string.h>

voidsstrcat(char*s,char*t)

{intn;

n=strlen(s);

while(*(s+n)=){s++;t++;}

}

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

main()

{charc=′z′;

printf("%c",c-25);}

30.诊断和改正程序中错误的工作通常称为【】。

31.数据库管理系统常见的数据模型有层次模型、网状模型和______三种。

32.软件工程研究的内容主要包括:【】技术和软件工程管理。

33.在面向对象程序设计中,从外面看只能看到对象有外部特征,而不知道也无须知道数据的具体结构以及实现操作的算法,这称为对象的______。

34.设x、y、z均为int型变量,请写出描述“x或y中至少有一个小于z”的表达式______。

35.以下程序的功能是将宁符串s中的数字字符放入d数组中,最后输出d中的字符串。例如,输入字符串:abcl23edf4568h,执行程序后输出: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);

}

36.最简单的交换排序方法是______。

37.以下程序运行后的输出结果是()。structNODE{intk;structNODE*link;};main(){structNODEm[5],*p=m,*q=m+4;inti=0:while(p!=q){p->k=++i;p++;q->k=1++;q--;}q->k=i:for(i=0;i<5;i++)printf("%d",m[i].k);printf("\n");}

38.以下sum函数的功能是计算下列级数之和。请给函数中的各变量正确赋初值。

doublesum(doublex,intn)

{inti;doublea,b,s;

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

{a=a*x;b=b*i;s=s+a/b;}

returns;

}

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

40.若x,y和z均是int型变量,则执行下面表达式后的x值为【】。

x=(y=4)+(z=2)

三、1.选择题(20题)41.下列选项可以正确表示字符型常量的是

A.′\r′B.aC.\897D.296

42.在16位C编译系统上,若定义longa;,则能给a赋值40000的正确语句是()

A.a=20000+20000;B.a=4000*10;C.a=30000+10000;D.a=4000L*10L;

43.以下程序的输出结果是______。#include<stdio.h>main(){inta,b,d=241;a=d/100%9;b=(-1)&&(-1);printf("%d,%d",a,b);}

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

44.下面关于数据库三级模式结构的叙述中,正确的是()

A.内模式可以有多个,外模式和模式只有一个

B.外模式可以有多个,内模式和模式只有一个

C.内模式只有一个,模式和外模式可以有多个

D.模式只有一个,外模式和内模式可以有多个

45.有以下程序:#include<stdio.h>intf1(intx,inty){returnx>y?x:y;}intf2(imx,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(e,d));g=a+b+e+d-e-f;printf("%d,%d,%d\n",e,f,g);}程序运行后的输出结果是()。

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

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

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

47.C语言中,可用于说明函数的是()

A.auto或staticB.extern或autoC.static或externD.auto或register

48.可以在C语言中用做用户标识符的是______。

A.voiddefineWORDB.as_b3_123IfC.for-abccasD.2cDoSIG

49.X、Y、Z被定义为int型变量,若从键盘给X、Y、Z输入数据,正确的输入语句是______。

A.INPUTX,Y,Z;

B.scanf("%d%d%d",&X,&Y,&Z);

C.scanf("%d%d%d",X,Y,Z);

D.read("%d%d%d",&X,&Y,&Z);

50.下面程序段的输出为#include"stdio.h"main(){printf("%d\n",12<<2);}

A.0B.47C.48D.24

51.单个用户使用的数据视图的描述称为______。

A.外模式B.概念模式C.内模式D.存储模式

52.栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是

A.ABCEDB.DCBEAC.DBCEAD.CDABE

53.二分查找一个具有n个元素的有序表,其时间复杂度为______。

A.O(n)

B.O(n2)

C.O(log2n)

D.(nlog2n)

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

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

55.在嵌套使用if语句时,C语言规定else总是A.和之前与其具有相同缩进位置的if配对

B.和之前与其最近的if配对

C.和之前与其最近的且不带else的if配对

D.和之前的第一个if配对

56.在C语言中,函数返回值的类型最终取决于()。

A.函数定义时在函数首部所说明的函数类型

B.return语句中表达式值的类型

C.调用函数时主调函数所传递的实参类型

D.函数定义时形参的类型

57.有以下程序:#include<stdio.h>#defineN5#defineMN+1#definef(x)(x*M)main(){inti1,i2;i1=f(2);i2=f(1+1);printf("%d%d",i1,i2);}程序的运行结果是()。

A.1212B.117C.1111D.127

58.调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是()。

A.地址传递B.单向值传递C.由实参传形参,再由形参传实参D.传递方式由用户指定

59.设有定义:inta,*p=&a,**pp=&p;,则与a=100;等价的语句为()

A.**p=100;B.**pp=100;C.&*p=100;D.*pp=10;

60.下列说法错误的是

A.函数调用时,函数名必须与所调用的函数名字完全相同

B.实参的个数必须与形式参数的个数一致

C.实参可以是表达式,在类型上必须与形参一一对应匹配

D.C语言规定,函数必须先定义,后调用(函数的返回值类型为int或char时除外)

四、选择题(20题)61.

62.

63.有以下程序:

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

A.3B.4C.lD.9

64.

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

#include<stdio.h>

main()

{inta=2,b=3,P;

p=f(a,b);

printf(”%d”,p);

}

intf(a,b)

{intc;

if(a>b)c=1;

elseif(a==b)c=0;

elsec=-l;

return(c);

}

A.-lB.0C.1D.2

65.有以下程序

#include"stdio.h"

main()

{structdate

{intnumber;

floatfenzhi;

charname;

}stu;

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

}程序的运行结果是

A.3B.5

C.7D.8

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

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

67.有以下程序

程序的运行结果是()。

A.1,2,3,4,5,6,7,8,9,0,

B.2,1,4,3,6,5,8,7,0,9,

C.0,9,8,7,6,5,4,3,2,l,

D.0,1,2,3,4,5,6,7,8,9,

68.以下程序的输出结果是______。main(){charst[20]="hello'、0\t\\";printf("%d%d\n",strlen(st),sizeof(st));}

A.99B.520C.1320D.2020

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

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

70.设有条件表达式:(EXP)?i++;j--,则以下表达式中(EXP)完全等价的是()。

A.(EXP==0)B.(EXP!=0)C.(EXP==1)D.(EXP!=1)

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

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

72.若变量已正确定义,有以下程序段:

其输出结果是()。

A.程序段有语法错误B.3,5,3C.3,5,5D.3,5,7

73.

74.以下程序运行后的输出结果是()。

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

75.

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

A.循环队列是队列的一种链式存储结构

B.循环队列是队列的一种顺序存储结构

C.循环队列是非线性结构

D.循环队列是一种逻辑结构

77.有以下程序

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

A.15B.12C.16D.20

78.有以下程序:

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

A.1B.2C.4D.死循环

79.有以下程序:

#include<stdiO.h>

main()

{inta=1,b=0;

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

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

}

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

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

80.有以下程序:

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

A.1127B.1212C.1111D.117

五、程序改错题(1题)81.已知一个数列,从0项开始的前3项为0、0、1,以后的各项都是其相邻的前3项之和。下列给定的程序中,函数proc()的功能是:计算并输出该数列前n项的平方根之和sum。n的值通过形参传入。例如,当n=11时,程序的输出结果应为32.197745。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.请编写一个函数proc(),它的功能是:比较2个字符串的长度(不得调用C语言中求字符串长度的函数),函数返回较长的字符串。若2个字符串长度相等,则返回第1个字符串。例如,若输入jiangxi<;Enter>;beijing<;Enter>;则函数返回jiangxi。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.D解析:putchar(c1)输出1,putchar(c2)输出2,printf(“%c%c\\n”,c5,c6)输出45。

2.B

3.A在表达式“z=0.9+x/y”中,先计算“3.6-2”,结果为1;再计算“0.9+1”,结果为1.9。因为变量z为整型,所以z的值为1。故本题答案为A选项。

4.C

5.B

6.C

7.B本题主要考查结构和联合内存使用的一些区别:结构中每个成员相互独立,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和;联合所占用内存空间是指最长的成员占用的空间。

8.A解析:本题考查如何通过地址来引用数组元素。通过地址来引用数组元素的方法有下列5种:

①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④*(a[i])[j];⑤*(&a[0][0]+3*i+j)。

9.A本题综合考查字符数组的赋值和strcpy函数的用法。C语言不允许用赋值表达式对字符数组赋值,如下面的语句就是非法的:str1='China',如果想把“China”这5个字符放到数组str1中,除了逐个输入外,还能使用strcpy函数,该函数的功能是将一个字符串复制到一字符数组中。例如,strcpy(str1,'China');或strcpy(str1,str2);注意,不能企图用以下语句来实行赋值(将str2的值传给str1):str1=str2;不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。

strcpy函数的结构是:strcpy(字符数组1,字符串2)

其中,需要注意的是,字符数组1的长度不应小于字符串2的长度,“字符数组1”必须写成数组名形式,如(str1),“字符串2”可以是字符数组名,也可以是字符串常量,不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。

10.A\nA。【解析】头结点不仅标识了表中首结点的位置,而且根据单链表(包含头结点)的结构,只要掌握了表头,就能够访问整个链表,因此增加头结点的目的是为了便于运算的实现。

\n

11.CN-S图(也被称为盒图或CHAPIN图)、PAD(问题分析图)及PFD(程序流程图)是详细设计阶段的常用工具。E—R图即实体一联系图,是数据库设计的常用工具。从题中图可以看出该图属于程序流程图。

12.B关系具有以下7个性质。①元组个数有限性:二维表中元组的个数是有限的。②元组的唯一性:二维表中任意两个元组不能完全相同。③元组的次序无关性:二维表中元组的次序,即行的次序可以任意交换。④元组分量的原子性:二维表中元组的分量是不可分割的基本数据项。⑤属性名唯一性:二维表中不同的属性要有不同的属性名。⑥属性的次序无关性.二维表中属性的次序可以任意交换。⑦分量值域的同一性:二维表属性的分量具有与该属性相同的值域,或者说列是同质的。满足以上7个性质的二维表称为关系,以二维表为基本结构所建立的模型称为关系模型。本题答案为B选项。

13.A通过指针变量存取某个变量值的方式称为“间接存取”方式,选项A错误;头文件stdio.h中定义了NULL,在程序的开头包含stdio.h后,可以给指针变量赋NULL值,表示一个空指针,选项B正确;将一个指针变量中的值赋给另一个指针变量,这两个指针变量指向同一地址,选项C正确;C语言中函数返回值的类型可以是简单的数据类型,也可以是指针类型,选项D正确。故本题答案为A选项。

14.B

15.A

16.D解析:在C语言中,将一个字符常量放到一个字符变量中,实际并不是把该字符本身放到内存单元中,而是将与该字符相对应的ASCII码放到存储单元中。

17.C

18.CP指向字符串”tuesday”,因此*(P+1)的值为n。s[0]=”monday”。

19.D解析:面向对象的世界是通过对象与对象间彼此的相互合作来推动的,对象间的这种相互合作需要一个机制协助进行,这样的机制称为消息。消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。

20.A解析:C语言结构体类型变量在程序执行期间所有成员一直驻留在内存中。

21.220.0或220或220.或220.000000220.0或220或220.或220.000000解析:所有的赋值运算符的优先级都相同,它们的结合性为从右至左,它们返回的表达式值为赋给变量的值.所以,语句x=f*=n/=(c=50):→x=f*=n/=50;→x=f*=2;(n的值变成2)→x=20;。故最终输出的结果应该是:220.000000

22.9292解析:本题考查循环的嵌套。

①当i=0时执行while语句,i++<4成立,这时i=1,不执行continue语句,继续执行j=0;然后执行do-while语句,共循环4次:

a)j=0时,s=0+a[1][0]=5,j=j+1=1。

b)j=1时,s=5+a[1][1]=5+6=11,j=j+1=2。

c)j=2时,s=11+a[1][2]=11+7=18,j=j+1=3。

d)j=3时,s=18+a[1][3]=18+8=26,j=j+1=4。终止循环。

②当i=1时执行while语句,i++<4成立,这时i=2,执行continue语句,结束本次循环。

③当i=2时执行while语句,i++<4成立,这时i=3,不执行continue语句,继续执行j=0;然后执行do-while语句,共循环4次:

a)s=26+a[3][0]=26+15=41,j+1=1。

b)s=41+a[3][1]=41+16=57,j+1=2。

c)s=57+a[3][2]=57+17=74,j+1=3。

d)s=74+a[3][3]=74+18=92,j+1=4。终止循环。

④i=3时,执行while语句,i++<4成立,这时i=4,执行continue语句,结束本次循环。

⑤当i=4时,执行while语句,i++<4不成立,结束while循环。输出s的结果92。

23.p=i;i>=pi<=Np=i;\r\ni>=p\r\ni<=N解析:本题主要考查了插入排序。由于程序中的数组在开始己经按从小到大顺序排序排好。在插入时,首先要查到第一个大于恃插入数的数组下标,即当待插入元素小于数组中当前元素时,记下数组的当前下标p,并结束循环,故第一空目的是为了记下数组下标,应填p=i;插入排序的第二部是将大于待插入元素的所有元素都向后移动—位,故在循环时,要从最后一个元素到第p个元素都要后移一位,因此第二空应填>i=p。最后一个循环是将N+1个元素都输出,故最后一空应为i<=N。(注:本题有多种答案,以上仅提供一种)

24.非0非0解析:逻辑运算中,非0表示逻辑“真”,用。表示逻辑“假”。

25.p=jx[i][p]LineMax(x)

26.栈栈解析:考查考生对栈和队列概念的掌握。按'先进后出'原则组织数据的数据结构是栈;按'先进先出'原则组织数据的数据结构是队列。

27.8208,20解析:本题考查while循环和++运算符的运用。x=0符合条件x<15,则执行y++,x+=++y后,y=1,x=0+2=2后y=2,符合条件继续循环,y=3,x=x+4=6后y=4,再循环y=5,x=x+6=6+6=12后,y=6,继续循环y=7,x=x+8=12+8-20,此时y=8。

28.*t*t解析:函数中首先让n=stxlen(s)所以while循环的循环条件表达式中*(s+n)指向字符串s的结束标志'0',处,而该处应该等于字符串t的第1个字符,另外循环体中让s和t指向下一个字符,即s+n和t同时被移动到下一个位置,所以该处应该填*t,即t所指内容.当t指向字符串结束标志'\\0'的时候,整个循环条件表达式的值也为0(“假”)了,循环结束.正好满足将t所指字符串复制到s所指的字符串的尾部。

29.aa解析:'z'的ASCII码值为122,经过c-25运算后,得97,以字符形式输出是a。

30.程序调试程序调试解析:程序调试的任务是诊断和改正程序中的错误。程序调试与软件测试不同,软件测试是尽可能多地发现软件中的错误。先要发现软件的错误,然后借助于调试工具找出软件错误的具体位置。软件测试贯穿整个软件生命期,而调试主要在开发阶段。

31.关系模型关系模型

32.软件开发

33.封装性封装性解析:对象具有下列5个基本特点:①标识惟一性;②分类性:③多态性;④封装性;⑤模块独立性好。其中,封装性是指从外面看只能看到对象的外部特征,对象的内部特征即处理能力的实行和内部状态,对外是不可见的,对象的内部状态只能由其自身改变。

34.x<z‖y<zx<z‖y<z解析:本题考查逻辑运算符和逻辑表达式。x或y中至少有一个小于z,即x<z或y<z,是“或”的关系。

35.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]解析:本题中,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或57>=s[i]&&48<=s[i]或48<=s[i]&&57>=s[i]。

36.冒泡排序冒泡排序解析:交换排序是指借助数据元素之间的互相交换进行排序的一种方法。冒泡排序是一种最简单的交换排序方法,它是通过相邻元素之间的相互交换逐步将线性表变成有序。

37.13431

38.a=1;b=1;s=1;或a=b=s=1;或a=1.b=1s=1或给abs赋1或1.0或1.a=1;b=1;s=1;或a=b=s=1;或a=1.b=1,s=1或给a,b,s赋1或1.0或1.解析:sum函数的功能是求表达式s的级数之和,该函数的大致思路是:在该函数中,定义了—个整型变量i用作循环计数器,定义一个变量a用来表示各个子项的分子,初始为第一个子项的分子,故为1,定义了一个变量b用来表示各个子项大分母,初始为第一个子项的分母,故为1,定义一个变量s存放累加和,初始为第一个子项的值即为1,然后给各个定义的变量初始化,然后通过一个for循环将题目中的数学表达式的各个子项求出来并累加到s中,所以说,在该题的空格处应该填写将a、b和s赋初值的语句,即为a=1;b=1;s=1:(说明:语句的顺序可任意)或a=b=s=1;(说明:变量的顺序可任意)或a=1,b=1,s=1(说明:赋值表达式的顺序可任意)给a,b,s赋1或1.0或1都可以。

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

40.6

41.A解析:C语言中,一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号括起来作为字符常量,字符常量的的范围是0~127。由于字符常量用单引号括起来,所以选项B),C)错误,选项D)超过了字符常量的表示范围。

42.D

43.B解析:在表达式的值作为逻辑值时,非0值一律为1,0值才为0。

44.BB)【解析】数据库的三级模式结构是指数据库系统

\n的外模式、模式和内模式。一个数据库可以有多个外模式,但只有一个模式和一个内模式。

45.A解析:函数f1的功能是返回两个数中的较大数,熳的功能是返回两个数中较小的数。具体执行过程如下:

①执行f1(a,b),即f1(4,3),返回值引执行f1(c,d),即f1(5,2),返回值5;执行e=f2(f1(a,b),f1(c,d)),即f2(4,5),返回值4。

②执行f2(a,b),即f2(4,3),返回值3;执行f2(c,d),即f2(5,2),返回值2;执行f=f1(f2(a,b),f2(c,d)),即f1(3,2),返回值3。

③执行g=a+b+c+d+e+f,即g=7。所以,程序输出结果为4,3,7。

46.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。

47.C

48.B解析:C语言规定,标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。另外还需要注意的是关键字不能作标识符。选项A中void,C中for都为关键字,D中2c以字母开头。

49.B解析:scanf()函数要求将输入的数据存入变量所在的地址。选项A不是C语言中的输入语句,故选项A不正确;选项C中输入的是变量字符串而不是地址字符串,不满足scanf()函数要求将输入的数据存入变量所在的地址,故选项C不正确;选项D不是C语言中的输入语句,故选项D不正确:所以,4个选项中选项B符合题意。

50.C解析:<<为左移运算符,运算符的左边是移位对象;右边是整型表达式,代表左移的位数,左移时,右端(低位)补0;左端(高位)移出的部分舍弃。

51.A解析:选项A)正确,外模式是用户的数据视图,也就是用户所见到的数据模式;选项B)不正确,全局数据视图的描述称为概念模式,即数据库中全部数据的整体逻辑结构的描述;选项C)不正确,物理存储数据视图的描述称为内模式,即数据库在物理存储方面的描述;选项D)不正确,存储模式即为内模式。

52.B解析:栈操作原则上“后进先出”,栈底至栈顶依次存放元素A、B、C、D,则表明这4个元素中D是最后进栈,B、C处于中间,A最早进栈。所以出栈时一定是先出D,再出C,最后出A。

53.C解析:二分法中查找时间t与查找次数m呈比例关系,2m=n(n为极限查找个数),m=log2n,所以查找时间复杂度与log2n相关。

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

55.C解析:C语言的语法规定:else子句总是与前面最近的不带else的if相结合,与书写格式无关。所以选项C)为正确答案。

56.A解析:在C语言中,应当在定义函数时指定函数值的类型。凡不加类型说明的函数,默认按整型处理。在定义函数时对函数值说明的类型一般应该和return语句中的表达式类型一致。如果函数值的类型和return语句中的表达式类型不一致,则以函数值的类型为准,由系统自动进行转换,即函数类型决定返回值的类型。

57.B解析:根据define的定义,可得f(2)=2*5+1=11,f(1+1)=1+1*5+17。

58.B解析:如果实参是简单变量,它与对应形参之间的数据传递方式是由实参传给形参,而形参值的改变不能改变实参的值。

59.B

60.C解析:实参可以是表达式,在类型上应按位置与形参一一对应匹配。如果类型不匹配,C编译程序按赋值兼容的规则进行转换。

61.C

62.A

63.B每次内循环只循环一次就结束,第一次外循环时t=t+b[0][b[0][0]]=1+b][0]=1+0=第二次外循环时t=t+b[1][b[1][1]]=1+b[1][1]=1+1=2;第三次外循环时t=t+b[2][b[2][2]]=2+b[2][2]=2+2=4。

64.A

\n本题考查if-else语句。if为真则执行C=1,if为假则执行else中的条件,不符合继续执行else。

\n

65.C本题主要考查结构体所占存储单元的计算。在C语言中,函数sizeof的作用是用以计算变量所处存储单元的大小,即占的字节数。

在本题中,程序首先定义了一个结构体,该结构体包含三个成员变量,分别为整型、浮点型和字符型。在C语言中,这三种类型的变量所占的字节数分别为2、4、1,然后定义一个该结构体的结构体变量,并输出该结构体变量所占的字节数。那么结果应为2+4+1=7,因此本题正确的答案为C。

66.A

67.A函数调用中发生的数据传递是单向的,即只能把实参的值传递给形参。而不能把形参的值反向地传递给实参。因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化,所以数组C中的元素的值并没有变化,故选择A)。

68.B解析:C语言中字符串是以'0'字符结束的,且strlen()函数计算的是'0'字符前的所有字符的个数。本题中strlen(st)应为5。数组定义以后系统就为其分配相应大小的内存空间,而不论其中有投有内容。sizeof()函数是计算变量或数组的所分配到的内存空间的大小。所以本题的sizeof(st)为20。

69.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。

70.B解析:条件表达式的形式为:“表达式1?表达式2:表达式3”。其含义为:当“表达式1”的值为非零时,求出“表达式2”的值,此时“表达式2”的值就是整个条件表达式的值;当“表达式1”的值为零时,求出“表达式3”的值,此时“表达式3”的值就是整个条件表达式的值。对于本题来说,当表达式EXP为非0值时条件成立,即执行语句i++;当EXP等于0时,执行语句j--;这等同于条件表达式“(EXP!=0)?i++:i++;”。

71.B若有以下定义:inta[3][4],i,j;且当0<=i<3,0<=j<4,则可以有以下几种方式来引用数组中的第i行,第j列的元素:

a[i][j],*(a[i]+j),*(*(a+i)+j),(*(a+i))[j],*(&a[O][0]+4*i+j)。

赋值语句完成后数组中数据如下:

024

024

024

因为func函数打印的是第1行第2列的数据,所以为4。

72.B两个if语句的判断条件都不满足,程序只执行了c=a这条语句,所以变量c的值等于3,变量b的值没有变化,程序输出的结果为3,5,3。

73.B

74.C函数f的功能是利用冒泡排序方法,将二维字符数组的前n行进行递增排序。

注意,本题目排序时整个字符串都交换。数组P排序后的结果为

75.C

76.B本题主要考查循环队列的概念,循环队列作为队列的一种也应该是线性结构。队列是一种逻辑结构,而循环队列是一种顺序存储结构的队列。

77.B#define命令是C语言的宏定义命令,标识符一般使用大写,为了区分其他标识符,将标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。宏定义不进行其他操作,仅仅只是替换标识符。后置自增运算:k++表示先运算,后自加。意思是遇到k++了,先把当前的k的值拿来参加运算,后面再去管它的自加。SUB(a++,b++)一(a++)t(b++)—d}4。故答案为B选项。

78.A一一k先自减再使用,所以第一次判断条件即为while(4),条件为真,执行打印k的值k=4—3,结果为1;第二次判断条件即为while(0),条件为假,结束循环,打印回车换行符。所以选择A选项。

79.D本题输出两个值,第一个printf语句输出b的值b=a+b=1。第二个printf语句输出了a的值,a=2b,此时b的值为1,所以a的值为2。

80.D本题考查宏定义的用法,宏定义只是做个简单的替换,所以本题中执行f(2)=(2*N+1)=11,执行f(1+1)=(1+1}N+1)=7。选项D正确。

81.(1)错误:proc(intn)

正确:doubleproc(intn)

(2)错误:returnsum

正确:returnsuln;

【解析】从主函数中的函数调用可知,函数proc()有double型的返回值,因此“proc(intn)”应改为“doubleproc(intn)”;在C语言中,每一个语句都要以分号结束,因此应在语句“returnsum”后加上分号。

82.

【解析】题目中要求不能用C语言中提供的求字符串长度的函数,可以通过移动字符串指针来计算字符串的长度。定义2个变量分别存放2个字符串的长度,最后比较2个字符串的长度,返回相对较长的那一个字符串。

2021-2022年贵州省遵义市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.有以下程序

#include<stdio.h>

main()

{charc1,c2,c3,c4,c5,c6;

scanf("%c%c%c%c",&c1,&c2,&c3,&c4);

c5=getchar();c6=getchar();

putchar(c1);putchar(c2);

printf("%c%c\n",c5,c6);

}

程序运行后,若从键盘输入(从第1列开始)

123<回车>

45678<回车>

则输出结果是A.A.1267B.1256C.1278D.1245

2.下列运算符中,运算对象必须是整型的是()。

A./B.%=C.=D.&

3.若有定义“intx=12,y=8,z;”,在其后执行语句“z=0.9+x/y;”,则z的值为()。

A.1B.1.9C.2D.2.4

4.可以作为Windows外壳程序的是()

A.程序管理器B.文件管理C.程序管理器和文件管理器D.主群组

5.假设某算法的计算时间可用递推关系式T(n)=2T(n/2)+n,T(1)=1表示,则该算法的时间复杂度为()

A.O(logn)B.O(n*logn)C.O(n)D.O(n^2)

6.假设整型数i的地址为0x12345678,指针ip地址为0x21850043,则执行以下后,k的值为()。A.0x12345678B.0x21850043C.100D.不确定

7.下列程序的输出结果是()。#include<stdio.h>main{structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un))}A.6,2B.6,4C.8,4D.8,6

8.若有定义:“inta[2][3];”,则对a数组的第i行第j列元素的正确引用为()。

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

9.第

11

若有定义:char*st="howareyou";下列程序段中正确的是

A.chara[11],*p;strcpy(p=a+1,&st[4]);

B.chara[11];strcpy(++a,st);

C.chara[11];strcpy(a,st);

D.chara[],*p;strcpy(p=&a[1],st+2);

10.在单链表中,增加头结点的目的是______。

A.方便运算的实现B.使单链表至少有一个结点C.标识表结点中首结点的位置D.说明单链表是线性表的链式存储实现

11.软件详细设计产生的图如图所示。该图是()。A.N—S图B.PAD图C.程序流程图D.E—R图

12.同一个关系模型的任意两个元组值()。

A.可以全相同B.不能全相同C.必须全相同D.以上都不对

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

A.通过指针变量存取某个变量值的方式称为“直接存取”方式

B.在程序的开头包含头文件stdio.h后,可以给指针变量赋NULL值

C.将一个指针变量中的值赋给另一个指针变量,则这两个指针变量指向同一地址

D.C语言中函数返回值的类型可以是简单的数据类型,也可以是指针类型

14.若有如下程序:intsub(){staticintn=1;intx=1;x*=n;n++;returnx;}main(){intn,t=1;for(n=1;n<6;n++)t*=sub();printf("%d\n",t);}则程序运行后的输出结果是()

A.15B.120C.34560D.-30976

15.设n个待排序的记录关键字,则在堆排序中需要()个辅助记录单元。

A.1B.12C.60D.15

16.在C语言中,char型数据在内存中的存储形式是()。

A.补码B.反码C.原码D.ASCII码

17.对含有16个元素的有序表进行二分查找,关键字比较次数最多是()

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

18.有以下程序:

执行后输出结果是()。

A.n,tuesdayB.d,mondayC.U,mondayD.0,wednesday

19.在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送()。A.调用语句B.命令C.口令D.消息

20.C语言结构体类型变量在程序执行期间,()。

A.所有成员一直驻留在内存中B.没有成员驻留在内存中C.部分成员驻留在内存中D.只有一个成员驻留在内存中

二、2.填空题(20题)21.以下程序运行后的输出结果是______。

main()

charc;intn=100;

floatf=10;doublex;

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

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

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

#include<stdio.h>

main()

{inta[4][4]={{1,2,3,4},{5'6'7'8},{11'12'13'14},{15'16'17'18}};

inti=0,j=0,s=0;

while(i++<4)

if(i==2[[i==4)continue;

j=0;

do{s+=a[i][j];j++;}while(j<4);

}

pdnff("%d'\n",s);

}

23.有一个已排好序的数组,今输入一个数,要求按原来的顺序规律将它插入到数组中。算法是:假设排序顺序是从小到大,对输入的数,检查它在数组中哪个数之后,然后将比这个数大的数顺序后移一个位置,在空出的位置上将该数插入。请在程序中的空白处填上一条语句或一个表达式。

#defineN100

main()

{floata[N+1],x;

inti,p;

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

scanf("%f"&a[i]);

scanf("%f",&x);

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

if(x<a[i])

{【】;

break;}

for(i=N-1;【】;i-)

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

a[p]=x;

for(i=0;【】;i++)

{printf("%8.2f",a[i]);

if(i%5=0)

printf("\n");

}

}

24.C语言中用______表示逻辑值为“真”,用数字“0”表示逻辑值为“假”。

25.以下程序中,主函数调用了LineMax函数,实现在N行M列的二维数组中,找出每一行上的最大值。

请填空。

#defineN3

#defineM4

voidLineMax(intx[N][M])

{inti,j,P;

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

{p=0;

for(j=1;j<M;j++)

if(x[i][p]<x[i][j])【】;

printf("Themaxvalueinline%dis%d\n",i,【】);

}

main()

{intx[N][M]={1,5,7,4,2,6,4,3,8,2,3,1};

【】;

}

26.按"先进后出"原则组织数据的数据结构是【】。

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

intx=0,y=0;

while(x<15)y++,x+=++y;

printf("%d,%d",y,x);

28.以卜函数sstrcat()的功能是实现宁符串的连接,即将t所指字符串复制到s所指字符串的尾部。例如:s所指字符串为abcd,t所指字符申为efgh,函数调用后s所指字符串为abcdefgh。请填空。

#include<string.h>

voidsstrcat(char*s,char*t)

{intn;

n=strlen(s);

while(*(s+n)=){s++;t++;}

}

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

main()

{charc=′z′;

printf("%c",c-25);}

30.诊断和改正程序中错误的工作通常称为【】。

31.数据库管理系统常见的数据模型有层次模型、网状模型和______三种。

32.软件工程研究的内容主要包括:【】技术和软件工程管理。

33.在面向对象程序设计中,从外面看只能看到对象有外部特征,而不知道也无须知道数据的具体结构以及实现操作的算法,这称为对象的______。

34.设x、y、z均为int型变量,请写出描述“x或y中至少有一个小于z”的表达式______。

35.以下程序的功能是将宁符串s中的数字字符放入d数组中,最后输出d中的字符串。例如,输入字符串:abcl23edf4568h,执行程序后输出: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);

}

36.最简单的交换排序方法是______。

37.以下程序运行后的输出结果是()。structNODE{intk;structNODE*link;};main(){structNODEm[5],*p=m,*q=m+4;inti=0:while(p!=q){p->k=++i;p++;q->k=1++;q--;}q->k=i:for(i=0;i<5;i++)printf("%d",m[i].k);printf("\n");}

38.以下sum函数的功能是计算下列级数之和。请给函数中的各变量正确赋初值。

doublesum(doublex,intn)

{inti;doublea,b,s;

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

{a=a*x;b=b*i;s=s+a/b;}

returns;

}

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

40.若x,y和z均是int型变量,则执行下面表达式后的x值为【】。

x=(y=4)+(z=2)

三、1.选择题(20题)41.下列选项可以正确表示字符型常量的是

A.′\r′B.aC.\897D.296

42.在16位C编译系统上,若定义longa;,则能给a赋值40000的正确语句是()

A.a=20000+20000;B.a=4000*10;C.a=30000+10000;D.a=4000L*10L;

43.以下程序的输出结果是______。#include<stdio.h>main(){inta,b,d=241;a=d/100%9;b=(-1)&&(-1);printf("%d,%d",a,b);}

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

44.下面关于数据库三级模式结构的叙述中,正确的是()

A.内模式可以有多个,外模式和模式只有一个

B.外模式可以有多个,内模式和模式只有一个

C.内模式只有一个,模式和外模式可以有多个

D.模式只有一个,外模式和内模式可以有多个

45.有以下程序:#include<stdio.h>intf1(intx,inty){returnx>y?x:y;}intf2(imx,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(e,d));g=a+b+e+d-e-f;printf("%d,%d,%d\n",e,f,g);}程序运行后的输出结果是()。

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

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

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

47.C语言中,可用于说明函数的是()

A.auto或staticB.extern或autoC.static或externD.auto或register

48.可以在C语言中用做用户标识符的是______。

A.voiddefineWORDB.as_b3_123IfC.for-abccasD.2cDoSIG

49.X、Y、Z被定义为int型变量,若从键盘给X、Y、Z输入数据,正确的输入语句是______。

A.INPUTX,Y,Z;

B.scanf("%d%d%d",&X,&Y,&Z);

C.scanf("%d%d%d",X,Y,Z);

D.read("%d%d%d",&X,&Y,&Z);

50.下面程序段的输出为#include"stdio.h"main(){printf("%d\n",12<<2);}

A.0B.47C.48D.24

51.单个用户使用的数据视图的描述称为______。

A.外模式B.概念模式C.内模式D.存储模式

52.栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是

A.ABCEDB.DCBEAC.DBCEAD.CDABE

53.二分查找一个具有n个元素的有序表,其时间复杂度为______。

A.O(n)

B.O(n2)

C.O(log2n)

D.(nlog2n)

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

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

55.在嵌套使用if语句时,C语言规定else总是A.和之前与其具有相同缩进位置的if配对

B.和之前与其最近的if配对

C.和之前与其最近的且不带else的if配对

D.和之前的第一个if配对

56.在C语言中,函数返回值的类型最终取决于()。

A.函数定义时在函数首部所说明的函数类型

B.return语句中表达式值的类型

C.调用函数时主调函数所传递的实参类型

D.函数定义时形参的类型

57.有以下程序:#include<stdio.h>#defineN5#defineMN+1#definef(x)(x*M)main(){inti1,i2;i1=f(2);i2=f(1+1);printf("%d%d",i1,i2);}程序的运行结果是()。

A.1212B.117C.1111D.127

58.调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是()。

A.地址传递B.单向值传递C.由实参传形参,再由形参传实参D.传递方式由用户指定

59.设有定义:inta,*p=&a,**pp=&p;,则与a=100;等价的语句为()

A.**p=100;B.**pp=100;C.&*p=100;D.*pp=10;

60.下列说法错误的是

A.函数调用时,函数名必须与所调用的函数名字完全相同

B.实参的个数必须与形式参数的个数一致

C.实参可以是表达式,在类型上必须与形参一一对应匹配

D.C语言规定,函数必须先定义,后调用(函数的返回值类型为int或char时除外)

四、选择题(20题)61.

62.

63.有以下程序:

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

A.3B.4C.lD.9

64.

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

#include<stdio.h>

main()

{inta=2,b=3,P;

p=f(a,b);

printf(”%d”,p);

}

intf(a,b)

{intc;

if(a>b)c=1;

elseif(a==b)c=0;

elsec=-l;

return(c);

}

A.-lB.0C.1D.2

65.有以下程序

#include"stdio.h"

main()

{structdate

{intnumber;

floatfenzhi;

charname;

}stu;

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

}程序的运行结果是

A.3B.5

C.7D.8

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

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

67.有以下程序

程序的运行结果是()。

A.1,2,3,4,5,6,7,8,9,0,

B.2,1,4,3,6,5,8,7,0,9,

C.0,9,8,7,6,5,4,3,2,l,

D.0,1,2,3,4,5,6,7,8,9,

68.以下程序的输出结果是______。main(){charst[20]="hello'、0\t\\";printf("%d%d\n",strlen(st),sizeof(st));}

A.99B.520C.1320D.2020

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

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

70.设有条件表达式:(EXP)?i++;j--,则以下表达式中(EXP)完全等价的是()。

A.(EXP==0)B.(EXP!=0)C.(EXP==1)D.(EXP!=1)

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

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

72.若变量已正确定义,有以下程序段:

其输出结果是()。

A.程序段有语法错误B.3,5,3C.3,5,5D.3,5,7

73.

74.以下程序运行后的输出结果是()。

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

75.

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

A.循环队列是队列的一种链式存储结构

B.循环队列是队列的一种顺序存储结构

C.循环队列是非线性结构

D.循环队列是一种逻辑结构

77.有以下程序

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

A.15B.12C.16D.20

78.有以下程序:

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

A.1B.2C.4D.死循环

79.有以下程序:

#include<stdiO.h>

main()

{inta=1,b=0;

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

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

}

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

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

80.有以下程序:

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

A.1127B.1212C.1111D.117

五、程序改错题(1题)81.已知一个数列,从0项开始的前3项为0、0、1,以后的各项都是其相邻的前3项之和。下列给定的程序中,函数proc()的功能是:计算并输出该数列前n项的平方根之和sum。n的值通过形参传入。例如,当n=11时,程序的输出结果应为32.197745。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.请编写一个函数proc(),它的功能是:比较2个字符串的长度(不得调用C语言中求字符串长度的函数),函数返回较长的字符串。若2个字符串长度相等,则返回第1个字符串。例如,若输入jiangxi<;Enter>;beijing<;Enter>;则函数返回jiangxi。注意:部分

温馨提示

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

评论

0/150

提交评论