2021-2022年河南省平顶山市全国计算机等级考试C语言程序设计_第1页
2021-2022年河南省平顶山市全国计算机等级考试C语言程序设计_第2页
2021-2022年河南省平顶山市全国计算机等级考试C语言程序设计_第3页
2021-2022年河南省平顶山市全国计算机等级考试C语言程序设计_第4页
2021-2022年河南省平顶山市全国计算机等级考试C语言程序设计_第5页
已阅读5页,还剩113页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年河南省平顶山市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.若函数中有定义语句:inta;,则()。

A.系统将自动给a赋初值0B.这时a中的值是和随机数C.系统将自动给a赋初值-1D.这a中无任何值

2.以下与数学表达式“0<x<5且x≠2”不等价的C语言逻辑表达式是()。

A.(0<x<5)&&(x!=2)

B.0<x&&x<5&&x!=2

C.x>0&&x<5&&x!=2

D.(x>0&&x<2)||(x>2&&x<5)

3.将一棵有100个结点的完全二叉树从上到下,从左到右依次对结点进行编号,根结点的编号为1,则编号为49的结点的左孩子的编号为______。

A.98B.99C.50D.48

4.有以下程序:#include<stdio.h>voidfunl(char*p){char*q;q=p;while(*q!='\0')}(*q)++;q++;}mains(){chara[]={"Program"},*p;p=&a[3];fun1(p);printf("%s\n",a);}程序执行后的输出结果是()。

A.ProhsbnB.PrphsbnC.ProgsbnD.Program

5.有以下程序:

程序运行后的输出结果是()。A.4284B.2870C.2668D.3981

6.若需要利用形参直接访问实参,则应把形参变量说明为____参数。

A.指针B.引用C.值D.变量

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

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

8.有下列程序:程序执行后的输出结果是()。

A.654321

B.65432

C.65453452

D.654534521

9.广义表((a),a)的表头是()。

A.aB.()C.(a)D.((a))

10.以下程序的输出结果是()。main(){inta[3][3]={{1,2},{3,4),{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf("%d\n",s);}A.18B.19C.20D.21

11.对于长度为n的线性表,在最坏情况下,下列各种排序法所对应的比较次数中正确的是(

A.冒泡排序为n/2B.冒泡排序为nC.快速排序为nD.快速排序为n(n-1)/2

12.以下说法正确的是()。

A.C程序总是从第一个函数开始执行

B.在C程序中,被调用的函数必须在main函数中定义

C.C程序总是从main函数开始执行

D.C程序中的main函数必须放在程序的开始部分

13.以下叙述中不正确的是

A.预处理命令行都必须以#号开始

B.在程序中凡是以#号开始的语句行都是预处理命令行

C.宏替换不占用运行时间,只占编译时间

D.在以下定义是正确的:#definePI3.1415926;

14.有以下程序:intfun(intn){if(n==l)returnl;elsereturn(n+fun(n一1)):}main{intx;scanf("%d",&x);x=fun(x);printf("%d\n",x):}执行程序时,给变量X输入10,程序的输出结果是()。A.55B.54C.65D.45

15.下述程序向文件输出的结果是______。#include<stdio.h>voidmain(){FILE*fp=fopen("TESY","wb");fprintf(fp,"%d%5.0f%c%d",58,76273.0,'-',2278);fclose(fp);}

A.5876273-2278

B.5876273.000000-2278

C.5876273-2278

D.因文件为二进制文件而不可读

16.对于哈希表,如果将装填因子α定义为表中装入的记录数与表的长度之比,那么向表中加入新纪录时,()

A.α的值随时冲突次数的增加而递减

B.α越大发生冲突的可能性越大

C.α等于1时不会再发生冲突

D.α低于0.5时不会发生冲突

17.对以下四个序列用直接插入排序方法由小到大进行排序时,元素比较次数最少的是()

A.89,27,35,78,41,15

B.27,35,41,16,89,70

C.15,27,46,40,64,85

D.90,80,45,38,30,25

18.已知一算术表达式的中缀表达式为a-(b+c/d)*e,其后缀形式为()

A.-a+b*c/dB.-a+b*cd/eC.-+*abc/deD.abcd/+e*-

19.

20.算法分析的目的是()。

A.找出数据结构的合理性B.找出算法中输入和输出之间的关系C.分析算法的易懂性和可靠性D.分析算法的效率以求改进

二、2.填空题(20题)21.某二叉树中度为2的结点有n个,则该二叉树中有【】个叶子结点。

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

main()

{inti,n[]={0,0,0,0,0};

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

{n[i]=n[i-1]*2+1;

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

}

}

23.语句“int(*ptr)();”的含义是______是指向函数的指针,该函数返回一个int型数据。

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

#include<stdio.h>

func(a,b)

{staticintm=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

}

main()

{intk=5,m=3,p;

p=func(k,m);

printf("%d",p);

p=func(k,m);

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

}

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

main()

{intx=0;

sub(&x,8,1);

printf(“%d\n”,x);

}

sub(int*a,intn,intk)

{if(k<=n)sub(a,n/2,2*k);

*a+=k;

}

26.在对文件操作的过程中,若要求文件的位置指针回到文件的开始处,应当调用的函数是【】。

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

main()

{

intx=0210;

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

}

28.以下程序中函数fun的功能是:统计person所指结构体数组中所有性别(sex)为M的记录的个数,存入变量n中,并作为函数值返回。请填空:

#include<stdio.h>

#defineN3

typedefstruct

{intmum,charname[10];charsex;}SS;

intfun(SSperson[])

{inti,n=0;

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

if(()=='M')n++;

returnn;

}

main()

{SSW[N]={{1,'AA','F'},{2,'BB','M'},{3,'CC','M'}};intn;

n=fun(W);printf("n=%d\n",n);

}

29.下述函数用于统计—行字符中的单词个数,单词之间用空格分隔。

word_num(str)

charstr[];

{int,num=O,word=O;

for(i=0;str[i]!=【】;i++)

if(【】=")wprd=0

elseif(word=O)

{

word=1:

【】;

}

return(num);

}

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

#include<stdio,h>

voidswap(y)

{intt;

t=x;x=y;y=t:printf("%d%d",x,y);

}

main()

{ihta=3,b=4:

swap(a,b);prinff("%d%d",a,b);

}

31.设有以下结构类型说明和变量定义,则变量a在内存所占字节数是【】。

structstud

{charnum[6];

mts[4];

doubleave;

}a,*p;

32.若有以下定义和语句,则使指针p指向值为36的数组元素的表达式是【】。

inta[10]={19,23,44,17,37,28,49,36},*p;

p=a;

33.长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【】。

34.若x和y都是buble型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为【】。

35.表示“整数x的绝对值大于5”时值为“假”的C语言表达式是______。

36.【】是从二维表列的方向进行的运算。

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

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\n",*p,*q);

}

38.结构化程序设计方法的主要原则可以概括为自顶向下、逐渐求精、【】和限制使用goto语句。

39.常见的拓扑结构有【】。

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

#include<stdio.h>

int(intx,inty,intcp,intdp)

{cp=x*x+y*y;

dp=x*x-y*y;

}

main()

{inta=1,b=8,c=7,d=9;

t(a,b,c,d);

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

}

三、1.选择题(20题)41.下列叙述中正确的足

A.软件交付使用后还需要进行维护

B.软件一旦交付使用就不需要再进行维护

C.软件交付使用后其生命周期就结束

D.软件维护是指修复程序中被破坏的指令

42.有以下程序main(){union{unsignedintn;unsignedcharC;}ul;u1.C='A';printf("%c\n",u1.n);}执行后输出结果是

A.产生语法错B.随机值C.AD.65

43.下列关于栈的描述中错误的是()。A.栈是先进后出的线性表B.栈只能顺序存储C.栈具有记忆作用D.对栈的插入与删除操作中,不需要改变栈底指针

44.有以下程序:main(){inti=1,j=2,k=3;if(i++==1&&(++j==3||k++==3))printf("%d%d%d\n",i,j,k);}程序运行后的输出结果是()。

A.123B.234C.223D.233

45.编码是指______。

A.总体设计到详细设计的过程B.用0、1代码改写详细设计的结果C.用编程语言改写详细设计的结果D.上述都不对

46.假定w、x、y、m均为int型变量,则执行下列的语句后,m的值是()。w=6,x=4,y=3;m=(w<x)?w:x;m=(m<y)?m:y;

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

47.算法的时间复杂度是指______。

A.执行算法程序所需要的时间B.算法程序的长度C.算法执行过程中所需要的基本运算次数D.算法程序中的指令条数

48.在数据流图(DFD)中,带有名字的箭头表示______。

A.控制程序的执行顺序B.模块之间的调用关系C.数据的流向D.程序的组成成分

49.下述程序的输出结果是

#include<stdio.h>

voidmain()

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

int*p=a,**q=&p;

printf("%d,",*(p++));

printf("%d",**q);}

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

50.以下程序的输出结果是()。main(){intx=11,y=11;printf("%d,%d\n",X--,--y);}

A.11,11B.10,10C.10,11D.11,10

51.有以下程序:fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printf("%d,"k);k=fun(j,m);printf("%d\n",k);}执行后的输出结果是()。

A.5,5B.5,11C.11,11D.11,5

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

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

53.以下四组用户自定义标识符中,全部合法的一组是()。

A._mainencludesin

B.If-maxturbo

C.txtREAL3COM

D.intk_2_001

54.下列程序的输出结果是______。#include<stdio.h>main(){inti,j,k,a=3,b=2;i=(--a==b++)?--a;++b;j=a++;k=b;printf("i=%d,j=%d,k=%d\n",i,j,k);}

A.i=2,j=1,k=3B.i=1,j=1,k=2C.i=4,j=2,k=4D.i=1,j=1,k=3

55.以下正确的函数定义是______。

A.doublef1(intx,inty)

B.doublef1(intx;inty)

C.doublef1(intx;floaty)

D.doublef1(intx,y)

56.以下叙述中错误的是

A.C语言中对二进制文件的防问速度比文本文件快

B.C语言中,随机文件以二进制代码形式存储数据

C.语句FILEfp;定义了一个名为fp的文件指针

D.C语言中的文本文件以ASCII码形式存储数据

57.设有以下语句,则c的二进制值是()chara=3,b=6,c;c=ab<<2;

A.11011B.10100C.11100D.11000

58.有以下程序:#include<stdio.h>main(){charc[6];inti=0;for(;i<6;c[i]=getchar(),i++);for(i=O;i<6;i++)putchar(c[i]);printf("\n");}如果从键盘上输入:ab<回车>c<回车>def<回车>则输出结果为_______。

A.aB.aC.abD.abcdefbbcccdddef

59.下列选项中,不属于模块间耦合的是()。A.数据耦合B.标记耦合C.异构耦合D.公共耦合

60.十六进制数FF.1转换成十进制数是()

A.255.0625B.255.125C.127.0625D.127.125

四、选择题(20题)61.冒泡排序在最坏情况下的比较次数是()。

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

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

A.3B.0C.7D.8

63.(43)下列关于队列的叙述中正确的是______。

A.在队列中只能插入数据

B.在队列中只能删除数据

C.队列是先进先出的线性表

D.队列是先进后出的线性表

64.有以下程序:

运行时,若输入123450<回车>,则输出结果是()。

A.6566456

B.66656

C.66666

D.6666656

65.

66.

有下列程序:

main

{intk=5:

while(--k)printf("%d",k=1);

printf("\n");

}

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

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

67.设x=015,则x=x^017的值是()。A.00001111B.11111101C.00000010D.11000000

68.有以下程序

main()

{intx,y;

scanf("%d",&x);

y=x>12?x+10:x-12;

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

}

若运行时给变量x输入12,则以下程序的运行结果是

A.0B.22

C.12D.10

69.

70.

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

main

{intx=f;printf("%c\n",A+(x-a+1));}

A.GB.HC.ID.J

71.有以下程序:

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

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

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

A.耦合性B.内聚性C.复杂性D.数据传输特性

73.有如下程序

#defineN2

#defineMN+1

#defineNUM2*M+1

main()

{

inti;

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

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

}

该程序中for循环执行的次数是

A.5B.6

C.7D.8

74.

75.有以下程序

#include<stdio.h>

structst

{intx,y,z;}data[2]={3,10,2,20,15,7};

main()

{structst*p=data;

printf("%d,",p->y);

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

}

程序的运行结果是

A.10,3B.20,3

C.10,20D.20,2

76.

77.下列数据结构中属于非线性结构的是()。

A.队列

B.线性表

C.二叉树

D.栈

78.

79.若i和k都是int类型变量,有以下for语句:for(i=0,k=-1;k=1;k++)printf("*****\n");下面关于语句执行情况的叙述中正确的是()。

A.循环体执行两次B.循环体执行一次C.循环体一次也不执行D.构成无限循环

80.有以下程序:

#include<stdio.h>

inta=1,b=2:

voidfunl(inta,intb)

{printf("%d%d",a,b);}

voidfun2()

{a=3;b=4;}

main()

{funl(5,6);fun2();

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

}

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

A.1256

B.5634

C.5612

D.3456

五、程序改错题(1题)81.下列给定程序中,函数proc的功能是找出100~m(m不大于1000)之间百位数字加十位数字等于个位数字的所有整数,把这些整数放在s所指的数组中,个数作为函数值

返回。

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

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

试题程序:

#include<stdio.h>

#defineM1000

intproc(int*S.intn)

{

inti,j,k,a,b,c;

j=0;

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

{

//****found****

k=n:

a=k%10;

k/=10;

b=k%10;

c=k/10;

if(a==b+c)

//****found****

s[j]=i:

}

returnj;

}

voidmain

{

inta[M],m,num=0,i;

do

{

printf("\nEnterm(<=1000):");

scanf("%d",&m);

}

while(m>1000);

num=proc(a,m);

printf("\n\nTheresult:\n");

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

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

printf("\n\n");

}

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,函数fun()的功能是将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s所指字符串中剩余的字符形成的新字符串存放在t所指的数组中。例如,若s所指字符串中的内容为“ABCDEFG12345”,其中字符C的ASCⅡ值为奇数,在数组中的下标为偶数,因此必须删除;而字符1的ASCⅡ值为奇数,在数组中的下标为奇数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是“BDH2345”。注意:部分源程序在文件prog1.c中。请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序::

参考答案

1.B本题考查变量赋值基本概念。在声明一个变量后,如果未显式的对其进行赋值,则它的值是一个随机值。

2.A在C语言里不能直接表达“0<x<5”,需要分步骤来实现,即使用“x>0&&x<5”来描述。在C语言里,“0<x<5”属于一个逻辑运算表达式,可以理解为“(0<x)<5”,因此选项A错误。故本题答案为A选项。

3.A

4.A解析:在main函数中,p=&a[3]说明指针p指向a数组的第4个字符(即字符\'g\');fun1中的q=p意味着指针q也指向了a数组的第4个字符。执行while语句,表达式(*q)++使\'g\'+1,使\'g\'变成了\'h\';表达式q++使q指向a[4]的起始地址。继续执行while语句,直到遇到\'\\0\'结束循环,返回形参。最终得到的结果是从字符串'Program\'的第4个字符开始,每个字符加1。

5.Bfor循环中,i取值为1~100。循环体中,3个if语句必须同时满足才会输出x,输出的x取值为i+3,所以x的取值只能是4到103。x必须满足以下条件:①x%7==0(x必须是7的倍数);②(x-1)%3==0(x必须是3的倍数+1);③(x-2)%2==0(x必须是2的倍数)。满足条件③的x取值为7,14,21,28,35,42,49,56,63,70,77,84,91,98;又满足条件②的x的取值为7,28,49,70,91;又满足条件①的x的取值为28,70。本题答案为B选项。

6.A

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

8.C程序首先定义整型变量a和b,a的初值为123456。接着通过while循环,判断a的值是否为0,若不为0,则执行循环体。每次循环将a当前值的个位数字(a%10)赋给b,a自身除以10。再通过switch语句判断b的值执行对应分支语句。所以对应a的每个个位数,b的取值为6,5,4,3,2,1。当b取值为6时,执行default,输出6,接着继续执行case1,通过break退出switch。执行下一次循环,当b取值为5时,执行case5输出5。执行下一次循环,当b取值为4时,执行case4输出4,继续执行case5输出5。接着执行下一次循环,当b取值为3时,执行case3输出3,执行case4输出4,执行case5输出5;当b取值为2时,执行case2输出2,通过break退出switch;当b取值为1时,执行break,此时a的取值为0,循环终止。综上,程序输出结果为:65453452。本题答案为C选项。

9.C

10.A循环的作用是求行下标从l到2列下标从0到i的元素之和,即s=a[1][0]+a[1][1]+a[2][o]+a[2][1]+a[2][2]=3+4+5+6+0一18。

11.D在最坏情况下,冒泡排序和快速排序的比较次数都是n(n一1)/2。【知识拓展】所谓冒泡排序,就是将相邻的两个数据比较,如前面的数据大于后面的,则位置互换。这样不停地比较、互换,其实就是把大的数往后排,小的数往前排(就像冒泡一样冒出来了)。

12.C解析:C程序是由main函数开始运行,通过main函数调用其他函数,所以,选项A)错误;在C程序中,函数不能嵌套定义,即不能在一个函数中定义另一个函数,选项B)错;C程序总是从main函数开始执行,但main函数不必放在最前面,故选项D)错。

13.D解析:带参数的宏定义如下:#define宏名(参数)字符串。本题中,宏定义的作用是指定用标识符PI来代替“3.1415926”这个字符串,但宏定义不是C语句,不必在行末加分号。

14.A函数intfun(intn)的功能是求1+2+…+n的值并返回。所以执行程序时,给变量x输入10后,执行语句“x=fun(x);”,X的值将变为1到10中10个整数的累加和,即55。

15.C解析:fprintf函数工作时,多个数据间不会自珈口分隔符,选项A错误;浮点数的输出格式是“%5.0f”表明其小数部分输出0位,即没有输出,所以选项B也是错误的。

16.B

17.C

18.D

19.A

20.D解析:算法分析是指对一个算法的运行时间和占用空间做定量的分析,一般计算出相应的数量级,常用时间复杂度和空间复杂度表示。分析算法的目的就是要降低算法的时间复杂度和空间复杂度;提高算法的执行效。率。

21.n+1n+1解析:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为0的结点多一个。

22.1371513715解析:本题中,定义了一个整型数组n并初始化,在for循环语句中,再对数组中各元素重新赋值。循环执行第一次时,n[1]=n[0]*2+1=0+1=1,printf函数输出1,然后i的值加1,比较i<=4成立,继续执行循环体语句,使后一个数为前一个数的2倍加1。所以最后输出为1、3、7、15。

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

24.11231123解析:在主函数中第一次调用func子函数时,m=0,i=2,i=i+m+1=3,m=i+a+b=3+5+3=11。因为在子函数中将m和i定义成了static类型,所以在子函数中对m和i进行的改变在下一次调用子函数时能进行保存,所以第二次调用子函数时,m=11,i=3,则i=i+m+1=15,m=i+a+b=15+5+3=23。

25.77解析:在主函数中定义了一个变量x并赋初值0,然后执行函数调用语句,该语句的执行过程为sub(&x,8,1)调用sub(&a,4,2),sub(&a,4,2)调用sub(&a,2,4),sub(&a,2,4)中由于2<4,所以if后面括号里的判断为假,递归结束,执行其后的*a+=k;语句此时x=x+k=0+4=4,回退到上一层调用函数sub(&x,4,2)中,执行后面的语句,x=x+k=4+2=6,再回推到最上一层调用函数sub(&x,8,1)执行后面的语句,x=x+k=6+1=7,所以最后输出7。

26.rewind()或fseek()rewind()或fseek()

27.8888解析:C语言规定,以0开头的整型常量为八进制。另外,在primf()函数中,%X表示以十六进制无符号形式输出一个整数,且十六进制中的ABCDEF为大写字母。本题的输出应该是八进制210的十六进制形式。将八进制转换为十六进制,可以先将其转换为二进制。因为1位八进制表示3位二进制,4位二进制表示1位十六进制。(210)8=(10001000)2=(88)16,故本题输出为880

28.person[i].scx

29.\0'或0或NULLstr[i]num++或num=num+1或mum+=l\\0'或0或NULL\r\nstr[i]\r\nnum++或num=num+1或mum+=l解析:观察题目要求,可以知道以下几点:

①for循环的结束条件应当是:str[i]已是字符串的最后一个字符;

②str[i]代表字符串str中的第i+1个字符;

③整型变量num的值是要记录的单词的个数。

C语言中规定字和会串的最后一个字和会是一个隐含的字符串结束符“\\0”,所以在题中第一个空中应填写“\\0”;题中第二个空应填写“str[i]”,以判断当前位置的字符是否为空格;题中第三个空中应当填写“num++”,通地变量num的加1累加到字符串中的单词个数。

30.43344334解析:程序将变量a,b的值传给函数swap的形参x,y,并在函数中对x,y的值进行交换,所以在函数swap中输出x,y的值4,3,由于c程序的函数是僧传递,实参a,b的值不会随形参x,y的改变而改变,所以在主函数中输出的a,b的值为3,4。

31.2222解析:C语言里char类型占1个字节,int类型占2个字节,float类型占4个字节,double类型占8个字节,因此变量a在内存中所占字节数=1*6+4*2+1*8=6+8+8=22。

32.p=p+7或p+=7p=p+7或p+=7解析:本题考查通过指针引用数组元素。值为36的数组元素在a数组中是第8个元素,即a[7]。在程序中,p=a;语句将数组a的首地址赋给了指针变量p,则可以用*(p+i)来表示数组元素,*(p+i)与a[i]等价,a[7]可表示为*(p+7)。要使指针p指向a[7],可以用p=p+7移动指针,故填写p=p+7或p+=7。

33.n/2性表的任何位置插入一个元素的概率相等,即概率为p=1/(n+1),则插入一个元素时所需移动元素的平均次数为E=1/(n+1)(n-i+1)=n/2。

34.88解析:fabs函数功能是求x的绝对值,计算结果为double型。pow功能是计算x的y次方的值,计算结果同样为double型。所以本题表达式相当于2.0的3.0次方,结果为8.000000。

35.(x>-5)&&(x<5)(x>-5)&&(x<5)解析:本题考查基本逻辑表达,“整数x的绝对值大于5”时值为“假”,即整数x的绝对值小于等于5,也就是整数x要大于等于-5且要小于等于5。这里“且”用“与(&&)”表示,所以C语言表达式为:(x>-5)&&(x<5)。

36.投影投影解析:在关系模型的数据语言中,一般除了运用常规的集合运算,(并、交,差、笛卡尔积等)外,还定义了一些专门的关系运算,如投影、选择、连接等。投影是从二维表的列方向上进行的运算。

37.3535解析:考查swap()函数。函数swap(int*a,int*b)的功能是实现*a和*b中两个数据的交换,在主函数中调用swap(p,q)后,参形指针变量a和b分别指向i和j,在swap(int*a,int*b)执行完后,指针变量a和b分别指向j和i,而指针变量p,q所指向变量的值没有发生变化,所以输出结果为35。

38.模块化模块化解析:结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、模块化和限制使用goto语句。自顶向下程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。

逐步求精:对复杂问题,应设计一些子目标作过度,逐步细化。

模块化:一个复杂问题,肯定是由若干精简单的问题构成。模块化是把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标称为一个模块。

限制使用goto语句。

39.星型、总线型和环型星型、总线型和环型

40.7979解析:因为在调用子函数时进行的是数值传递,调用于函数并不能改变实参的值,所以经过调用子函数,c、d的值并没有发生变化还是原来的值。

41.A解析:本题考核软件维护的概念.维护是软件生命周期的最后一个阶段,也是持续时间最长、付出代价最大的阶段,在软件交付使用后,还需要进行维护。软件维护通常有以下四类:为纠正使用中出现的错误而进行的改正性维护;为适应环境变化而进行的适应性维护;为改进原有软件而进行的完善性维护;为将来的可维护和可靠而进行的预防性维护。软件维护不仅包括程序代码的维护,还包括文档的维护。综上所述,本题的正确答案是A,其余选项的说法错误。

42.C解析:在定义共用体的同时,定义了一个共用体型变量u1,共占两个字节,有两个成员n和c,两个成员的首地址是相同的.因此给u1.c赋一个“A”,其实就是给无符号整型成员u1.n的低字节赋一个“A”,输出u1.n的时候是以字符型的形式输出,只输出它的低地址的一个字节,因此为“A”。所以,C选项为所选。

43.B栈是限定只能在表的一端进行插入和删除操作的线性表,入栈和出栈都是在栈顶进行,它们的操作特点是先进后出,因此具有记忆作用。栈可以采用顺序存储,也可以采用链式存储。

44.D

45.C解析:所谓“编码”,是指把软件设计的结果用计算机系统可以理解的形式表示出来。用于编码的程序设计语言可以是计算机系统能够直接理解的机器语言,也可以是必须通过汇编、编译(或解释)才能为计算机系统所理解的汇编语言或高级语言。

46.A解析:条件表达式“a?b:c”的含义是:当a为真时,其值等于表达式b的值,当a为假时,其值等于表达式c的值。第一个表达式:w=6<x=4为假,所以返回x的值,即m=x=4;第二个表达式:m=4<y=3为假,所以返回y的值,即m=y=3。

47.C解析:算法的时间复杂度实际上就是执行算法程序所需要的计算工作量。为了客观地反映算法性能,在度量算法的时间复杂度时,应该与编写算法程序所使用的程序设计语言、执行算法程序时所使用的计算的工具以及程序员的水平无关。选项A错误,因为同一算法程序在运行速度不同的计算机上运行时,其计算时间是不同的。选项B错误,因为算法所编写的程序长度往往与程序设计语言以及程序员的水平有关,同一个算法,用不同的程序设计语言或者不同的程序员所编写出的程序其长度可能会大不相同。选项D错误,因为根据一个算法所编制出的程序之中,其指令条数往往与程序设计语言以及程序员的水平有关,不能用算法程序中的指令条数来度量算法的时间复杂度。所以,本题正确答案为C。

48.C解析:数据流相当于一条管道,并有一级数据(信息)流经它。在数据流图中,用标有名字的箭头表示数据流。数据流可以从加工流向加工,也可以从加工流向文件或从文件流向加工,并且可以从外部实体流向系统或从系统流向外部实体。

49.D解析:考查一维数组的指针和指向指针的指针两个知识点。通过赋值,指针p和q都指向了数组a的首地址,*(p++)先引用数组元素,然后p++,所以输出结果为2,**q指向的数组元素为4。

50.D解析:X--是先使用x的值再对x减1,即输出11;--y是先对y减1再使用y的值,输出10。格式控制中的普通字符“,”原样输出。所以选项D符合题意。

51.B解析:本题的fun()函数中定义的变量m和i是静态局部变量,第1次调用fun()函数时m=0、i=2,执行i+=m+1后,i的值变为3,再执行m=i+x+y后,m的值变为5,所以第1次输出的整数是5。第2次调用fun()函数时m=5、i=3,执行i+=m+1,i变为9,再执行m=i+x+y,m变为11,所以第2次输出的整数是11。故本题应该选择B。

52.B解析:“后进先出”表示最后被插入的元素最先能被删除。选项A中,队列是指允许在—端进行插入、而在另一端进行删除的线性表,在队列这种数据结构中,最先插入的元素将最先能够被删除,反之,最后插入的元素将最后才能被删除,队列又称为“先进先出”的线性表,它体现了“先来先服务”的原则:选项B中,栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素,栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。队列和栈都届于线性表,它们具有顺序存储的特点,所以才有“先进先出”和“后进先出”的数据组织方式。双向链表使用链式存储方式,二叉树也通常采用链式存储方式,它们的存储数据的空间可以是不连续的,各个数据结点的存储顺序与数据元素之间的逻辑关系可以不一致。所以选项C和选项D错误。本题的正确答案为选项B。

53.A解析:C语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。D)中的-max不合法,'-'既不是字母、数字,也不是下划线;C)中的3COM第一个字符为数字,不合法;D)中的int和C语言的关键字重名,不合法。

54.D

55.A

56.C解析:本题考查了C语言中文件的一些基本概念。定义文件类型指针变量的一般形式为:

FILE*指针变量名;

因此选项C是错误的,应该选择C。

57.A

58.C解析:1.getchar():此函数的作用是从终端(或系统隐含指定的输入设备)输入一个字符。

2.putchar():此函数的作用是向终端输出一个字符,也可以输出控制字符。

本题在输入字符时,ab和c后面的回车符分别赋给了c[2]和c[4],所以,正确答案为C。

59.C解析:模块之间的耦合程度反映了模块的独立性,也反映了系统分解后的复杂程度。按照耦合程度从弱到强,可以将其分成5级,分别是:数据耦合、同构耦合、控制耦合、公用耦合和内容耦合。选项C),没有这种耦合方式。注意:评价模块独立性的主要标准,以及对它们的定义和分类。

60.A

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

62.A本题中遇到‘\\’字符循环结束,因此只统计‘\\’之前的数字字符,结果为3。

63.C

64.Aswitch语句执行完一个case后面的语句后,流程控制转移到下一个case语句继续执行,遇到break会跳出本次循环。本题中输入l时会输出65,输入2时会输出6,输入3时会输出64,输入4时会输出5,输入5时会输出6,在输入0时不满足循环条件,程序执行结束。

65.D

66.A

\n在程序语句中,k的初始值为5,进行第l次while循环后,k自减1为4,非0,执行循环体里的printf语句,输出k,此时k的值变为1。程序执行第2次循环时,k自减1变为0,为假,退出while循环语句。所以程序的最后结果为1。

\n

67.C

\n本题考查按位异或运算,异或就是相同为0,不同为1(化为二进制00001101),017的二进制为000001111,两者异或结果为00000010。

\n

68.A在本题中,程序首先定义了两个整型变量x和y,然后通过键盘输入的方式给这变量x赋初值。执行语句y=x>12?x+10:x-12;,该题语句是将x>12?x+10:x-12的运算结果保存到变量y中,由于从键盘输入的值是12,那么变量x的值为12,此时x>12的运算结果为假,则执行x-12部分,那么计算后的结果为0,并将这个结果赋值给变量y,最后输出变量y的值,因此答案选A。

69.A

70.D

\n因为x=f,所以写成A+(x-a+1)=A+(f-a+1)=A+6=J,故选择D选项。

\n

71.D首先对二维数组进行赋值操作,a[0][0]、a[0][1]、…、a[3][2]、a[3][3]的值为l、4、…、6、1。通过for语句和if语句,对二维数组各列元素进行由小到大的排序操作,程序最后通过for语句输出二维数组对角线上的元素。因此D选项正确。

72.A解析:耦合性是模块间互相连接的紧密程度的度量,取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。

[知识拓展]模块的独立程序是评价设计好坏的一个重要标准,衡量软件的模块独立性有两个定性的度量标准。其中内聚性是指一个模块内部各个元素间彼此结合的紧密程度的度最,内聚性是从功能角度来度量模块内的联系;耦合性是模块间互相连接的紧密程度的度量,耦合性从整体的角度来度量模块间的联系。

73.B分别将N、M的宏定义代入NUM的表达式中,可以得到NUM=2*2+1+1=6,所以当常数NUM作为for循环的终止条件时,应当循环6次。

74.B

75.C本题考查结构体数组的相关操作。结构体数组的定义方法与结构体变量的定义方法一样,只不过将变量变为数组。数组内的各元素在内存中是连续存放的。题目中给出了一个结构体st,该结构体有三个整型成员x,y,z。结构体数组data元素的个数为2,并对数组进行初始化,data[0]={3,10,2},data[1]={20,15,7}。主函数main中定义了一个指针p指向数组data,第一个printf函数是输出p->y,即data[0].y,该值等于10。第二个printf函数是输出(++p)->x,++p使得指针p指向data[1],输出的目标为data[1].x,该值等于20。故输出结果为10,20。

76.D

77.C线性结构满足两个条件:有且只有一个根结点;每个节点最多只有一个前件,也最多只有一个后件。栈、队列、线性表都属于线性结构,二叉树是一种非线性结构,因为它除叶子节点外,每个节点都有两个后件,不满足线性结构的条件。

78.B

79.D此题考查的是基本的循环,答案为D。

80.B\nFunl是输出局部变量的值,fun2是把全局变量的值改成3和4,所以输出的结果是5634。

\n

81.\n\t(1)错误:k=n;

\n正确:k=i;

\n(2)错误:s[j]=i;

\n正确:s[j++]=i;

\n【解析】要找出所有符合条件的整数,就需要对1~n的每一个数进行检验,因此for循环中的“k=n;”应改为“k=i;”。对于每一个符合要求的整数放在数组s中,因此“s[j]=i;”应改为“s[j++]=i;”。\n

82.1voidfun(char*s,chart[])2{3inti,j=0;4for(i=0;i<strlen(s);i++)5if(!((i%2)==0&&(s[i]%2)))6t[j++]=s[i];7t[j]=0;8}按题目要求,将字符串S中符合要求的字符存放到字符数组t中。我们使用for循环语句来解决这个问题。在赋值之前,先对字符串s的元素下标和ASCⅡ值进行判断,将满足要求的元素赋给数组t,将数组t的最后一个字符赋值为'\\0',即ASCⅡ值为0。2021-2022年河南省平顶山市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.若函数中有定义语句:inta;,则()。

A.系统将自动给a赋初值0B.这时a中的值是和随机数C.系统将自动给a赋初值-1D.这a中无任何值

2.以下与数学表达式“0<x<5且x≠2”不等价的C语言逻辑表达式是()。

A.(0<x<5)&&(x!=2)

B.0<x&&x<5&&x!=2

C.x>0&&x<5&&x!=2

D.(x>0&&x<2)||(x>2&&x<5)

3.将一棵有100个结点的完全二叉树从上到下,从左到右依次对结点进行编号,根结点的编号为1,则编号为49的结点的左孩子的编号为______。

A.98B.99C.50D.48

4.有以下程序:#include<stdio.h>voidfunl(char*p){char*q;q=p;while(*q!='\0')}(*q)++;q++;}mains(){chara[]={"Program"},*p;p=&a[3];fun1(p);printf("%s\n",a);}程序执行后的输出结果是()。

A.ProhsbnB.PrphsbnC.ProgsbnD.Program

5.有以下程序:

程序运行后的输出结果是()。A.4284B.2870C.2668D.3981

6.若需要利用形参直接访问实参,则应把形参变量说明为____参数。

A.指针B.引用C.值D.变量

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

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

8.有下列程序:程序执行后的输出结果是()。

A.654321

B.65432

C.65453452

D.654534521

9.广义表((a),a)的表头是()。

A.aB.()C.(a)D.((a))

10.以下程序的输出结果是()。main(){inta[3][3]={{1,2},{3,4),{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf("%d\n",s);}A.18B.19C.20D.21

11.对于长度为n的线性表,在最坏情况下,下列各种排序法所对应的比较次数中正确的是(

A.冒泡排序为n/2B.冒泡排序为nC.快速排序为nD.快速排序为n(n-1)/2

12.以下说法正确的是()。

A.C程序总是从第一个函数开始执行

B.在C程序中,被调用的函数必须在main函数中定义

C.C程序总是从main函数开始执行

D.C程序中的main函数必须放在程序的开始部分

13.以下叙述中不正确的是

A.预处理命令行都必须以#号开始

B.在程序中凡是以#号开始的语句行都是预处理命令行

C.宏替换不占用运行时间,只占编译时间

D.在以下定义是正确的:#definePI3.1415926;

14.有以下程序:intfun(intn){if(n==l)returnl;elsereturn(n+fun(n一1)):}main{intx;scanf("%d",&x);x=fun(x);printf("%d\n",x):}执行程序时,给变量X输入10,程序的输出结果是()。A.55B.54C.65D.45

15.下述程序向文件输出的结果是______。#include<stdio.h>voidmain(){FILE*fp=fopen("TESY","wb");fprintf(fp,"%d%5.0f%c%d",58,76273.0,'-',2278);fclose(fp);}

A.5876273-2278

B.5876273.000000-2278

C.5876273-2278

D.因文件为二进制文件而不可读

16.对于哈希表,如果将装填因子α定义为表中装入的记录数与表的长度之比,那么向表中加入新纪录时,()

A.α的值随时冲突次数的增加而递减

B.α越大发生冲突的可能性越大

C.α等于1时不会再发生冲突

D.α低于0.5时不会发生冲突

17.对以下四个序列用直接插入排序方法由小到大进行排序时,元素比较次数最少的是()

A.89,27,35,78,41,15

B.27,35,41,16,89,70

C.15,27,46,40,64,85

D.90,80,45,38,30,25

18.已知一算术表达式的中缀表达式为a-(b+c/d)*e,其后缀形式为()

A.-a+b*c/dB.-a+b*cd/eC.-+*abc/deD.abcd/+e*-

19.

20.算法分析的目的是()。

A.找出数据结构的合理性B.找出算法中输入和输出之间的关系C.分析算法的易懂性和可靠性D.分析算法的效率以求改进

二、2.填空题(20题)21.某二叉树中度为2的结点有n个,则该二叉树中有【】个叶子结点。

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

main()

{inti,n[]={0,0,0,0,0};

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

{n[i]=n[i-1]*2+1;

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

}

}

23.语句“int(*ptr)();”的含义是______是指向函数的指针,该函数返回一个int型数据。

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

#include<stdio.h>

func(a,b)

{staticintm=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

}

main()

{intk=5,m=3,p;

p=func(k,m);

printf("%d",p);

p=func(k,m);

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

}

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

main()

{intx=0;

sub(&x,8,1);

printf(“%d\n”,x);

}

sub(int*a,intn,intk)

{if(k<=n)sub(a,n/2,2*k);

*a+=k;

}

26.在对文件操作的过程中,若要求文件的位置指针回到文件的开始处,应当调用的函数是【】。

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

main()

{

intx=0210;

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

}

28.以下程序中函数fun的功能是:统计person所指结构体数组中所有性别(sex)为M的记录的个数,存入变量n中,并作为函数值返回。请填空:

#include<stdio.h>

#defineN3

typedefstruct

{intmum,charname[10];charsex;}SS;

intfun(SSperson[])

{inti,n=0;

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

if(()=='M')n++;

returnn;

}

main()

{SSW[N]={{1,'AA','F'},{2,'BB','M'},{3,'CC','M'}};intn;

n=fun(W);printf("n=%d\n",n);

}

29.下述函数用于统计—行字符中的单词个数,单词之间用空格分隔。

word_num(str)

charstr[];

{int,num=O,word=O;

for(i=0;str[i]!=【】;i++)

if(【】=")wprd=0

elseif(word=O)

{

word=1:

【】;

}

return(num);

}

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

#include<stdio,h>

voidswap(y)

{intt;

t=x;x=y;y=t:printf("%d%d",x,y);

}

main()

{ihta=3,b=4:

swap(a,b);prinff("%d%d",a,b);

}

31.设有以下结构类型说明和变量定义,则变量a在内存所占字节数是【】。

structstud

{charnum[6];

mts[4];

doubleave;

}a,*p;

32.若有以下定义和语句,则使指针p指向值为36的数组元素的表达式是【】。

inta[10]={19,23,44,17,37,28,49,36},*p;

p=a;

33.长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【】。

34.若x和y都是buble型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为【】。

35.表示“整数x的绝对值大于5”时值为“假”的C语言表达式是______。

36.【】是从二维表列的方向进行的运算。

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

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\n",*p,*q);

}

38.结构化程序设计方法的主要原则可以概括为自顶向下、逐渐求精、【】和限制使用goto语句。

39.常见的拓扑结构有【】。

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

#include<stdio.h>

int(intx,inty,intcp,intdp)

{cp=x*x+y*y;

dp=x*x-y*y;

}

main()

{inta=1,b=8,c=7,d=9;

t(a,b,c,d);

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

}

三、1.选择题(20题)41.下列叙述中正确的足

A.软件交付使用后还需要进行维护

B.软件一旦交付使用就不需要再进行维护

C.软件交付使用后其生命周期就结束

D.软件维护是指修复程序中被破坏的指令

42.有以下程序main(){union{unsignedintn;unsignedcharC;}ul;u1.C='A';printf("%c\n",u1.n);}执行后输出结果是

A.产生语法错B.随机值C.AD.65

43.下列关于栈的描述中错误的是()。A.栈是先进后出的线性表B.栈只能顺序存储C.栈具有记忆作用D.对栈的插入与删除操作中,不需要改变栈底指针

44.有以下程序:main(){inti=1,j=2,k=3;if(i++==1&&(++j==3||k++==3))printf("%d%d%d\n",i,j,k);}程序运行后的输出结果是()。

A.123B.234C.223D.233

45.编码是指______。

A.总体设计到详细设计的过程B.用0、1代码改写详细设计的结果C.用编程语言改写详细设计的结果D.上述都不对

46.假定w、x、y、m均为int型变量,则执行下列的语句后,m的值是()。w=6,x=4,y=3;m=(w<x)?w:x;m=(m<y)?m:y;

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

47.算法的时间复杂度是指______。

A.执行算法程序所需要的时间B.算法程序的长度C.算法执行过程中所需要的基本运算次数D.算法程序中的指令条数

48.在数据流图(DFD)中,带有名字的箭头表示______。

A.控制程序的执行顺序B.模块之间的调用关系C.数据的流向D.程序的组成成分

49.下述程序的输出结果是

#include<stdio.h>

voidmain()

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

int*p=a,**q=&p;

printf("%d,",*(p++));

printf("%d",**q);}

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

50.以下程序的输出结果是()。main(){intx=11,y=11;printf("%d,%d\n",X--,--y);}

A.11,11B.10,10C.10,11D.11,10

51.有以下程序:fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printf("%d,"k);k=fun(j,m);printf("%d\n",k);}执行后的输出结果是()。

A.5,5B.5,11C.11,11D.11,5

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

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

53.以下四组用户自定义标识符中,全部合法的一组是()。

A._mainencludesin

B.If-maxturbo

C.txtREAL3COM

D.intk_2_001

54.下列程序的输出结果是______。#include<stdio.h>main(){inti,j,k,a=3,b=2;i=(--a==b++)?--a;++b;j=a++;k=b;printf("i=%d,j=%d,k=%d\n",i,j,k);}

A.i=2,j=1,k=3B.i=1,j=1,k=2C.i=4,j=2,k=4D.i=1,j=1,k=3

55.以下正确的函数定义是______。

A.doublef1(intx,inty)

B.doublef1(intx;inty)

C.doublef1(intx;floaty)

D.doublef1(intx,y)

56.以下叙述中错误的是

A.C语言中对二进制文件的防问速度比文本文件快

B.C语言中,随机文件以二进制代码形式存储数据

C.语句FILEfp;定义了一个名为fp的文件指针

D.C语言中的文本文件以ASCII码形式存储数据

57.设有以下语句,则c的二进制值是()chara=3,b=6,c;c=ab<<2;

A.11011B.10100C.11100D.11000

58.有以下程序:#include<stdio.h>main(){charc[6];inti=0;for(;i<6;c[i]=getchar(),i++);for(i=O;i<6;i++)putchar(c[i]);printf("\n");}如果从键盘上输入:ab<回车>c<回车>def<回车>则输出结果为_______。

A.aB.aC.abD.abcdefbbcccdddef

59.下列选项中,不属于模块间耦合的是()。A.数据耦合B.标记耦合C.异构耦合D.公共耦合

60.十六进制数FF.1转换成十进制数是()

A.255.0625B.255.125C.127.0625D.127.125

四、选择题(20题)61.冒泡排序在最坏情况下的比较次数是()。

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

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

A.3B.0C.7D.8

63.(43)下列关于队列的叙述中正确的是______。

A.在队列中只能插入数据

B.在队列中只能删除数据

C.队列是先进先出的线性表

D.队列是先进后出的线性表

64.有以下程序:

运行时,若输入123450<回车>,则输出结果是()。

A.6566456

B.66656

C.66666

D.6666656

65.

66.

有下列程序:

main

{intk=5:

while(--k)printf("%d",k=1);

printf("\n");

}

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

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

67.设x=015,则x=x^017的值是()。A.00001111B.11111101C.00000010D.11000000

68.有以下程序

main()

{intx,y;

scanf("%d",&x);

y=x>12?x+10:x-12;

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

}

若运行时给变量x输入12,则以下程序的运行结果是

A.0B.22

C.12D.10

69.

70.

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

main

{intx=f;printf("%c\n",A+(x-a+1));}

A.GB.HC.ID.J

71.有以下程序:

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

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

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

A.耦合性B.内聚性C.复杂性D.数据传输特性

73.有如下程序

#defineN2

#defineMN+1

#defineNUM2*M+1

main()

{

inti;

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

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

}

该程序中for循环执行的次数是

A.5B.6

C.7D.8

74.

75.有以下程序

#include<stdio.h>

structst

{intx,y,z;}data[2]={3,10,2,20,15,7};

main()

{structst*p=data;

printf("%d,",p->y);

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

}

程序的运行结果是

A.10,3B.20,3

C.10,20D.20,2

76.

77.下列数据结构中属于非线性结构的是()。

A.队列

B.线性表

C.二叉树

D.栈

78.

79.若i和k都是int类型变量,有以下for语句:for(i=0,k=-1;k=1;k++)printf("*****\n");下面关于语句执行情况的叙述中正确的是()。

A.循环体执行两次B.循环体执行一次C.循环体一次也不执行D.构成无限循环

80.有以下程序:

#include<stdio.h>

inta=1,b=2:

voidfunl(inta,intb)

{printf("%d%d",a,b);}

voidfun2()

{a=3;b=4;}

main()

{funl(5,6);fun2();

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

}

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

A.1256

B.5634

C.5612

D.3456

五、程序改错题(1题)81.下列给定程序中,函数proc的功能是找出100~m(m不大于1000)之间百位数字加十位数字等于个位数字的所有整数,把这些整数放在s所指的数组中,个数作为函数值

返回。

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

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

试题程序:

#include<stdio.h>

#defineM1000

intproc(int*S.intn)

{

inti,j,k,a,b,c;

j=0;

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

{

//****found****

k=n:

a=k%10;

k/=10;

b=k%10;

c=k/10;

if(a==b+c)

//****found****

s[j]=i:

}

returnj;

}

voidmain

{

inta[M],m,num=0,i;

do

{

printf(

温馨提示

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

评论

0/150

提交评论