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

下载本文档

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

文档简介

2021-2022年安徽省淮北市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.假设把整数关键码K散列到有N个槽的散列表,以下哪些散列函数是好的散列函数()

A.h(K)=KmodN

B.h(K)=1

C.h(K)=K/N

D.h(K)=(K+rand(N))modN,rand(N)返回一个0到N-1的整数

2.

3.有以下程序:#include<stdio.h>main(){charch=‘D’;while(ch>‘A’){ch--;putchar(ch);if(ch==‘A’)break;putchar(ch+1);}}程序运行后的输出结果是()。

A.CBB.BCAC.CCBBD.CDBCA

4.有下列程序:intfun(intx[],intn){staticintsum=0,i;for(i=0;i<n;i++)sum+=x[i]:returnsum;}main(){inta[3]={1,2,3,4,5),b[3]={6,7,8,9),s=0;s=fun(a,5)+fun(b,4);printf("%d\n",s);}程序执行后的输出结果是()。、A.45B.50C.60D.55

5.有如下程序:

longfib(intn)

{if(n>2)return(fib(n-1)+fib(n-2));

elsereturn(2);

}

main()

{printf("%d\n",fib(3));}

该程序的输出结果是A.A.2B.4C.6D.8

6.若i、j已定义成mt型,则下列程序段中内循环体的总执行次数是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30

7.

8.若有定义:floatx=1.5;inta=1,b=3,c=2;则正确的switch语句是()。A.switch(a+b){case1:prinf("*\n");.case2+1:printf("**(n");}

B.switch(int)x);{case1:print("*\n");.case2:printf(**\n");}

C.switch(x){case1.0:print("*\n");case2.0:print("*\n");}

D.switch(a+b){case1:print("*\n");.casec:pit(**\n");}

9.下面不属于需求分析阶段任务的是()。

A.确定软件系统的功能需求B.确定软件系统的性能需求C.制定软件集成测试计划D.需求规格说明书评审

10.快速排序在_____情况下最易发挥其长处。

A.被排序数据中含有多个相同排序码

B.被排序数据已基本有序

C.被排序数据完全无序

D.被排序数据中最大值和最小值相差悬殊

11.下列条件语句中,输出结果与其他语句不同的是()。

A.if(a)printf("%dn",x);elseprint[("%d\n",y)

B.if(a=0)pritf("%dn",y);elseprint[("%d\n",x)

C.if(a!一0)printf("%dn",x);elseprint[("%a\n",y)

D.if(a=O)print[("%dn",x);elseprintf("%d\n",y)

12.已知char**s,下面正确的语句是()。A.A.s="ABCDEF";

B.*s="ABCDEF";

C.**s="ABCDEF";

D.*s='A';

13.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是______。

A.控制流B.加工C.数据存储D.源和潭

14.若程序中有宏定义行“#defineN100”,则下列叙述中正确的是()。

A.宏定义行中定义了标识符N的值为整数100

B.在编译程序对C语言源程序进行预处理时用100替换标识符N

C.上述宏定义行实现将100赋给标识符N

D.在运行时用100替换标识符N

15.定义int*swap()指的是______。

A.一个返回整型值的函数swap()

B.一个返回指向整型值指针的函数swap()

C.一个指向函数swap()的指针,函数返回一个整型值

D.以上说法均错

16.下面不能正确表示a*b/(c*d)的表达式是()。

A.(a*b)/c*dB.a*b/(c*d)C.a/c/d*bD.a*b/c/d

17.以下对软件特点描述错误的是()。

A.软件的使用存在老化问题B.软件的复杂性高C.软件是一种逻辑实体,具有抽象性D.软件的运行对计算机系统具有依赖性

18.

19.在下面的二维数组定义中,正确的是()。

A.inta[5][];

B.inta[][5];

C.inta[][3]={{1,3,5},{2}};

D.inta[](10);

20.下列程序的输出结果是()。voidfun(int*X,inty){printf("%d%d",*x,*y);*x=3;*y=1;}main{intx=1,y=2;fun(&y,&x);printf("%d%d",x,y);}A.2143B.1212C.1234D.2112

二、2.填空题(20题)21.程序测试分为静态测试和动态测试。其中()是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。

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

main()

{inta[]={31,27,20,12,6,1},*p=a;

p++;

printf("%d\n",*(p+2));

}

23.以下函数用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。请填空。

#include<conio.h>

#include<stdio.h>

intfun(int*s,intt,int*k)

{inti;

*k=0;

【】

if(s[*k]<s[i])*k=i;

return【】;}

main()

{inta[10]={876,675,896,101,301,401,980,431,451,777},k;

fun(a,10,&k);

printf("%d,%d\n",k,a[k]);}

24.软件设计模块化的目的是______。

25.有下列程序;

#include<stdio.h>

main()

{charc;

while((c=getchar())!=',')putchar(++C);

}

程序运行时,如果从键盘输入:A,B,<CR>,则输出结果为______。

26.若从键盘输入58,则以下程序输出的结果是______。

main{)

{inta;

scanf("%d",&a);

if(a>50)printf("%d",a);

if(a>40)printf("%d",a);

if(a>30)printf("%d",a);

}

27.若有定义:intk;,以下程序段的输出结果是______。for(k=2;k<6;k++,k++)printf("##%d",k);

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

main()

{inta=10;

a=(3*5,a+4);printf("a=%d\n",A);

29.以下程序的运行结果是【】。

#include<stdio.h>

#include<string.h>

typcdefstructstudent

{charname[10];

longsno;

floatscore;

}STU;

main()

{STUa={"Zhangsan",2001,95},b={"Shangxian",2002,90},

c={"Anhua",2003,95},d,*p=&d;

d=a;

if(strcmp(,)>0)d=b;

if(strcmp(,)>0)d=c;

printf("%1d%s\n",d.sno,p->name);

}

30.函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下:

1

11

121

1331

14641

其构成规律是:

①第0列元素和主对角线元素均为1;

②其余元素为其左上方和正上方元素之和;

③数据的个数每行递增1。

请将程序补充完整。

#defineN6

voidYangHui(intx[N][N])

{inti,j;x[0][0]=1;

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

{x[i][0]=x[i][i]=1;

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

x[i][j]=【】;

}

}

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

32.以下程序是从终端读入数据到数组中,统计其中正数的个数,并计算它们的和。请填

main()

{

inti,a[20],sum,count;

sum=count=【】;

for(i=0;i<20;i++)scanf("%d("%d",【】);

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

{

if(a[i]>0)

{count++;

sum+=【】;

}

}

printf("sum=%d,count=%d\n",sum,count);

}

33.要求使下列程序输出5个整数,请填空。

for(i=0;i<=______;printf("%d\n",i+=2));

34.下列程序执行后输出的结果是【】。

main()

{intarr[10],i,k=0;

for(i=O;i<10;i++)arr[i]=i;

for(i=1;i<4;i++)k+=arr[i]+i;

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

}

35.以下程序的输出是【】。

main()

{

charstr1[]="Howdoyoudo",*pl=str1;

strcpy(str1+strlen(str1)/2,"esshe");

intf("%s\n",p1);

36.以下程序输出的最后一个值是【】。

intff(intn)

{staticintf=1;

f=f*n;

retumf;

}

main()

{inti;

for(i=1;i<=5;i++)printf("%d\n",ff(i))i

}

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

main()

{inta=2,b=3,c=4;

a*=16+(b++)-(++c);

printf("%d",a);

}

38.数据模型按不同的应用层次分为三种类型,它们是______数据模型、逻辑数据模型和物理数据模型。

39.设一棵完全二叉树共有700个结点,则在该二叉树中有【】个叶子结点。

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

#include<stdio.h>

main()

{inti;

for(i=′a′;i<′f′;i++,i++)printf("%c",i-′a′+′A′);

printf("\n");

}

三、1.选择题(20题)41.以下函数值的类型是_______。fun(floatx){floaty;y=3*x-4;returny;}

A.intB.不确定C.voidD.float

42.在下列叙述中,错误的一条是()

A.形式参数是局部变量

B.不同函数中,可以使用相同名字的变量

C.主函数main中定义的变量在整个文件或程序中有效

D.在―个函数内部,可在复合语句中定义变量,这些变量只在本复合语句中有效

43.数据的存储结构是指()。

A.存储在外存中的数据B.数据所占的存储空间量C.数据在计算机中的顺序存储方式D.数据的逻辑结构在计算机中的表示

44.下列运算符中,不属于关系运算符的是()

A.<B.>=C.==D.!

45.设a为整型变量,不能正确表达数学关系“10<a<15”的C语言表达式是______。

A.10<a<15

B.a==11||a==12||a==13||a==14

C.a>10&&a<15

D.!(a<=10)&&!(a>=15)

46.有以下程序:point(char*p){P+=3;)main(){charb[4]={'a','b','c','d'},*p=b;point(p);printf("%c\n",*p);}程序运行后的输出结果是()。

A.aB.bC.cD.d

47.当变量c的值不为2、4、6时,值也为“真”的表达式是

A.(c==2)||(c==4)||(c==6)

B.(c>=2&&c<=6)||(c!=3)||(c!=5)

C.(c>=2&&c<=6)&&!(c%2)

D.(c>=2&&c<=6)&&(c%2!=1)

48.以下程序(程序左边的数字为附加的行号)______。1#include<str.h>2#include<stdio.h>3main()4{chars[]="string";5puts(s);6strcpy(s,"hello");7printf("%3s\n",s);}

A.没有错B.第1行有错C.第6行有错D.第7行有错

49.若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

50.以下程序的输出结果是______。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.123456780B.123456780C.12345678D.147

51.以下程序的运行结果是

intk=0;

voidfun(intm)

{m+=k;k+=m;printf("m=%dk=%d",m,k++);}

main()

{inti=4;

fun(i++);

printf("i=%dk=%d\n",i,k);

}

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

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

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

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

52.有如下程序:longfib(intn){if(n>2)return(fib(n-1)+fib(n-2));elsereturn(2);}main(){printf("%ld\n",fib(3));}该程序的输出结果是______。

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

53.有下列程序:

main()

{inty=20;

do{y--;}while(--y);

phntf("%d\n",y--);

}

当执行程序时,输出的结果是()。

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

54.阅读下列程序,则运行结果为#include"stdio.h"fun(){staticintx=5;x++;returnx;}main(){inti,x;for(i=0;i<3;i++)x=fun();printf("%d\n",x);}

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

55.下列函数值的类型是()。fun(doublex){floaty;y=3*x-4;returny;}

A.intB.不确定C.voidD.float

56.已知函数fread的调用形式为fread(buffer,size,count,fp);其中buffer代表的是()。

A.存放读入数据项的存储区

B.一个指向所读文件的文件指针

C.一个指针,是指向输入数据存放在内存中的起始地址

D.一个整型变量,代表要读入的数据项总数

57.以下程序的输出结果是______。main(){inta=3;printf("%d\n",(a+=a-+a*a))}

A.-6B.1C.2D.-12

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

A.一个算法的空间复杂度大,则其时间复杂度也必定大

B.一个算法的空间复杂度大,则其时间复杂度必定小

C.一个算法的时间复杂度大,则其空间复杂度必定小

D.上述三种说法都不对

59.以下概念中,不属于面向对象方法的是_______。

A.对象、消息B.继承、多态C.类、封装D.过程调用

60.以下程序的输出结果是main(){intc=35;printf("%d\n",c&c);}

A.0B.70C.35D.1

四、选择题(20题)61.有以下程序程序运行后的输出结果是()。

A.143B.197C.33D.28

62.不能把字符串:Hello!赋给数组b的语句是()。

A.charb[10]={’H’,’e’,’l’,’l’,’o’,’!’};

B.charb[10];b="Hello!";

C.charb[10];strcpy(b,"Hello!");

D.charb[10]="Hello!";

63.有以下程序

64.

65.下面的程序段运行后,输出结果是()。

A.9B.0C.不确定值D.18

66.

67.以下关于long、int和short类型数据占用内存大小的叙述中正确的是(),

A.均占4个字节B.根据数据的大小来决定所占内存的字节数C.由用户自己定义D.由C语言编译系统决定

68.

69.有以下程序:

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

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

70.

71.当把以下四个表达式用作if语句的控制表达式时,有一个选项与表达式(k%2)!=0含义相同,这个选项是()。

A.k%2==0B.k%2==1C.!k%2==1D.都不同

72.

73.如果要在表单中创建一个普通文本框,下列标记中正确的是()。

A.<inputtype=”text”>

B.<inputtype=”password”>

C.<inputtype=”CheCkbox”>

D.<inputtype=”radio”>

74.

75.对长度为n的线性表排序,在最坏情况下,比较次数是nlog2n的排序方法是()。

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

76.

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

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

structabc

{

inta,b,c;

}

main()

{

structabcs[2]={{1,2,3},{4,5,6}};

intt;

t=s[0].a+s[1].b;

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

}

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

79.

80.有以下程序:

#include<stdio.h>

main()

{FILE*fp;inti,a[6]={1,2,3,4,5,6};

fp=fopen("d2.dat","w+");

for=(i=o;i<6;,i++)fpintf(fp,"%d\n",a[i]);

rewind(fp);

for(i=0;i%6;i++)fscanf(fp,"%d",&a[5-i]);

fclose(fp);

for(i=0;i%6;i++)printf("%d,",a[i]);

}

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

A.4,5,6,1,2,3,

B.1,2,3,3,2,1,

C.1,2,3,4,5,6,

D.6,5,4,3,2,1,

五、程序改错题(1题)81.下列给定程序中,函数fun()的功能是:计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y的值不相等,2和Y的值不相等。例如,当x的值为1,y的值为2,z的值为3时,函数值为2.O0。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写一个函数fun(),该函数的功能是将大于整数m且紧靠m的k个素数存入所指的数组中。例如,若输入17、5,则应输出19、23、29、31、37。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:

参考答案

1.A

2.C

3.Dputchar函数的功能是输出一个字符,由whlie判断条件和ch初始值可知,只要“ch≠‘A’”,执行两次putchar函数,否则跳出循环。第1次输出“CD”,第2次输出“BC”,第3次输出“A”后跳出循环。故本题答案为D选项。

4.C在函数intfun(intx[],intn)的定义中,变量sum为一个静态局部变量。由于在整个程序运行期间,静态局部变量在内存中的静态存储中占据着永久的存储单元。函数intfun(intx[],intn)的功能是求出数组x[]各个元素的和,所以在主函数中,调用函数fun(a,5)后,变量sum=1+2+3+4+5=15,当再次调用fun(b,4)后,变量sum=15+6+7+8+9=45,所以s=15+45=60。

5.B

6.B本题考查for循环的使用。对于第1个for循环,任何一个i,内层j的循环都要使j~0到3,j=4时不符合,所以退出j循环;然后i减1,J仍然要从0~3,j=4时退出J循环直到i变成0,退出i循环。第一条for语句执行6次,第二条for语句执行4次,所以内循环体执行6*4=24次。

7.D

8.AB)选项中switch((int)x);语句中不应该有最后的分号。

9.C【答案】:C

【知识点】:需求分析阶段的任务

【解析】:需求分析阶段的任务是深入描述软件的功能和性能,确定软件设计的约束和软件同其他系统元素的接口细节,定义软件的其他有效性需求,借助于当前系统的逻辑模型导出目标系统逻辑模型,解决目标系统“做什么”的问题。可分为需求提出、需求描述及需求评审三个阶段。从此可以看出需求分析的任务不包括制定软件集成测试计划,故选C。

10.C

11.D主要考查if判断语句,A选项if(a),如果a为真,则输出X,否则输出Y。B选项if(a==0),如果a恒等于0,则输出Y,否则输出X。C选项a(!=o),如果a不等于0,则输出X,否则输出y。D选项if(a==0),如果a恒等于0,则输出X,否则输出y。由以上结论可知,输出结果不同的为D选项。

12.C

13.A解析:数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。数据流图中的主要图形元素有:加工(转换)、数据流、存储文件(数据源)、源和潭。

14.B宏定义在编译程序时做了一个简单的替换,所以B选项正确。故本题答案为B选项。

15.B解析:一个函数可以带回—个整型值、字符值、实型值等,但也可以带回指针型数据,即地址。本题的定义中,包括括号和*号,由于()优先级高于*。故它是一个返回整型指针的函数。

16.A

17.A软件具有以下特点。①软件是一种逻辑实体,具有抽象性。②软件没有明显的制作过程。③软件在使用期间不存在磨损、老化问题。④对硬件和环境具有依赖性。⑤软件复杂性高,成本高。⑥软件开发涉及诸多的社会因素。本题答案为A选项。

18.D

19.C

20.C当执行fun函数时,因为参数传递时是地址传递,因此形参值的改变会影响实参中的数,在执行fun函数时先输出12,接着把*X赋3,*y赋4,此时带回主函数中,输出的值为34。

21.静态测试静态测试

22.1212解析:本题签考查如何用指针引用数组元素。分析程序,首先定义了一个指向数组a的指针p,p指向数组的首地址,通过p++,将p指向a[1],p+2是将指针后移2位指向a[3],*(p+2)即是取a[3)的值12。

23.for(I=0;I<t;I++)0for(I=0;I<t;I++),0解析:本题中直接使用指针变量k,但在使用时要注意对k的指针运算,此外,一开始应使*k的值为数组中的某一下标值,即*k=0。

24.降低复杂性降低复杂性

25.BB解析:因为c是字符类型变量,它只能接收一个字符,所以c=A,字符型变量在参与算术运算的时候是用其相应的ASCII码参与运算的,这样++c得到字母B的ASCII码,用putchar函数输出是输出其相应的字符,所以是B。

26.585858585858解析:在程序中,执行scanf()语句后,a被赋值为58。接着执行第一个if语句,因为,a=58>50,执行第一个订语句后面的输出语句,输出58;接着执行第二个if语句,因为,a=58>4O,执行第二个if语句后面的输出语句,输出58;接着执行第三个if语句,因为,a=58>30,执行第三个if语句后面的输出语句,输出58,所以最后的输出为585858。

27.本题主要考查for循环语句。for循环的增量表达式为逗号表达式,相当于k+=2;,即每次循环后k增加2。第一次循环时,k=2,因此输出##2;第二次循环时k=4,输出##4。此后k=6,不满足循环条件。\r\n\r\n

28.a=14a=14解析:在“逗号表达式(表达式1,表达式2)”中,其运算方法是先求表达式1的值,然后求表达式2的值,整个逗号表达式的值是表达式2的值。首先3*5=15,a=10,a+4=14,最后输出的运算结果为14。

29.2002Shangxian2002Shangxian解析:strcmp函数用于比较两个字符串的大小,因为=Zhangsan,=Shangxian,所以strcmp(,)>0为真,执行d=b;因为=Anhua,=Shangxian,所以strcmp(,)>0不成立,不执行d=c;最后输出d.sno和的值分别为2002,Shangxian。

30.x[i-1][j-1]+x[i-1][j]x[i-1][j-1]+x[i-1][j]解析:在程序外层i循环中先将数组的第0列元素和主对角线元素置1,内层j循环的功能是给其余元素赋值,根据题意,空格内应填入x[i-1][j-1)+x[i-1][j]。

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

32.0&a[i]a[i]0\r\n&a[i]\r\na[i]解析:本题要求从终端读入数据到数组中,统计其中正数的个数,并计算它们的和。程序中首先要对存放正数个数的变量count及存放和值的变量sum初始化为0,所以第一空应填0。接着要求从终端读入数据到数组中,可以通过scanf函数实现,因此第二空应填&a[i]。最后通过sum+=a[i];语句累加正数a[i]的值到sum中,因此第三空应填a[i]。

33.88解析:本题考查基本的for循环条件,i+=2表示i每次递增2,从0开始,输出5个整数则需要的条件是i<=8。

34.1212解析:本题的第一个for循环用于给数组arr赋初值,第二个for循环用于求和运算。由于第二个for循环初始值为1,而循环条件为i<4,所以求的是arr[1]到arr[3]及i的和,所以输出结果为12。

35.HowdoessheHowdoesshe解析:strcpy(str1,s1):字符串拷贝函数,作用是将字符串s1拷贝到字符数组str1中去。strlen(str):测试字符串str的长度,函数的值为字符串中实际长度,不包括‘\\0’在内。本题中strlen(strl)的值为13,则strcpy(strl+strlen(strl)/2,'esshe');相当于strqoy(strl+6,'esshe');因此可得答案为Howdoesshe。

36.120120解析:静态变量的类型说明符是static,静态局部变量属于静态存储方式,它具有以下特点:

①静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。

②对静态局部变量是在编译时赋初值的,即只赋初值一次,在程序运行时它已有初值。以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。

③如在定义局部变量时不赋初值的话,则对静态局部变量来说,编译对自动赋初值0(对数值型变量)或空字符(对字符变量)。(注意:C语言中的非静态变量在定义时,系统并不会自动给它赋初值)

④虽然静态局部变量在函数调用结束后仍然存在,但其他函数是不能引用它的。

本题中函数的功能是:与for语句一起求一个整数的阶乘。

37.2828解析:a*=16+(b++)-(++c)等价于a=a*(16+(b++)-(++c)),b++的值为3;++c的值为5,请注意前缀++和后缀++的用法。

38.概念概念

39.350350解析:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。在根据完全二叉树的定义,在一棵完全二叉树中,最多有1个度为1的结点。因此,设一棵完全二叉树具有n个结点,若n为偶数,则在该二叉树中有n/2个叶子结点以及n/2-1个度为2的结点,还有1个是度为1的结点:若n为奇数,则在该二叉树中有[n/2]+1个叶子结点以及[n/2]个度为2的结点,没有度为1的结点。本题中,完全二叉树共有700个结点,700是偶数,所以,在该二叉树中有350个叶子结点以及349个度为2的结点,还有1个是度为1的结点。所以,本题的正确答案为350。

40.ACEACE解析:在本题中,for循环体每执行完一次,变量i的值自加两次。i的初值为\'a\',执行一次循环后变为\'c\',之后再变成\'e\',当其变为\'g\'时,循环条件若不满足,循环终止,故本题共输出3个字符。表达式'i-\'a\'+\ue008\'A\'\ue009'即表示输出i对应的大写字母,结果为ACE。

41.A解析:函数定义时如果数据类型默认,则默认为int。函数中如果有“retum(表达式):”语句,表达式的类型可能与函数的类型不一致,但它并不能改变函数的类型,实际情况是把表达式转换为函数值的类型作为返回值,因此本题的函数值类型是int。

42.C

43.D数据的逻辑结构是指数据元素之间的逻辑关系的数据结构。数据的存储结构则是数据的逻辑结构在计算机中的物理实现,有时也称作数据的物理结构。两者的区别是数据的逻辑结构只涉及到数据之间抽象的数学关系。存储结构则涉及到如何在计算机中通过对数据的物理存储进行组织来表达数据元素之间的逻辑关系。比如在线性表的顺序存储中是利用物理存储空间上的连续性来表达线性表中数据的前后件关系;在线性表的链式存储中是通过指针域构成的逻辑链条来表达数据的前后件关系。一般的,一种数据的逻辑结构对应的物理实现,即数据的存储结构不止一种。因此选项D正确。

44.D

45.A解析:选项A中10<a的结果是逻辑值0或1,再与15比较大小没有意义,因此错误。

46.A解析:本题的考点是C语言的函数参数的传递方式(传值)。函数poret的形参是一个char型指针p,当调用point(p)时,将指针p的值传递给形参,函数point中的p+=3,并不影响主程序main中的p值,因此函数调用结束后,p仍指向b的首地址,输出*p的值应是字符a。

47.B解析:满足表达式(c>=2&&c<=6)的整型变量c的值是2,3,4,5,6。当变量c的值不为2,4,6时,其值只能为3或5,所以表达式c!=3和c!=5中至少有一个为真,即不论c为何值,选项B中的表达式都为“真”。

48.B解析:字符串复制函数strcpy包含在头文件string.h中,因此,程序中的第1行文件包含命令是错误的。

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

50.C解析:p是指针数组,通过第1个循环的赋值,p[0]、p[1]、p[2]分别指向二维数组ch的第1行、第2行、第3行,因此输出字符串“12345678”。

51.B解析:由于在main()函数中,变量i=4,所以就调用fun(4),则输出“m=4k=4”。然后变量k增1等于5,变量i增1等于5,所以main()函数的“printf('i=%dk=%d\\n',i,k);”语句输出“i=5k=5”。

52.B解析:函数fib内部有两个递归调用,当n=3时,fib(n-1)返回2,fib(n-2)也返回2,所以fib(n-1)+fib(n-2)的值为4。

53.D解析:本题考查do…while循环。当--寸是0(即y是0)时结束循环,输出y--是先输出y的值再将y的值减1。

54.D解析:在整个程序运行期间,静态局部变量在内存的静态存储区中占据着永久的存储单元,即使退出函数以后,下次再进入该函数时,静态局部变量仍使用原来的存储单元,静态局部变量的初值是在编译的时候赋予的,在程序执行期间不再赋予初值。本题由于连续三次调用函数fun(),三次对静态变量x进行操作,x的值应依次为6,7,8。

55.A解析:本题考查默认函数的函数值的类型。在函数调用时,尽管y的类型是float,x的类型是double,但是因为函数定义时省去类型说明,系统默认函数值的类型为int型,所以计算后的y的类型是int型。

56.C解析:数据块读取函数调用形式:fread(buffer,size,count,fp)。fread函数参数说明:“buffer”是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。“size”是要读写的字节数:“count”是要进行读写多少个size字节的数据项;“fp”是指文件型指针。

57.D解析:赋值运算符的结合方向是自右至左,所以表达式a+=a=a*a先运算最右边的a*a得9,再运算a=a-9,即a=3-9,所以此时a的值由3变成了-6,最后运算a=a+(-6)=-12。

58.D解析:时间复杂度是指一个算法执行时间的相对度量;空间复杂度是指算法在运行过程中临时占用所需存储空间大小的度量。人们都希望选择一个既省存储空间、又省执行时间的算法。然而,有时为了加快算法的运行速度,不得不增加空间开销;有时为了能有效地存储算法和数据,又不得不牺牲运行时间。时间和空间的效率往往是一对矛盾,很难做到两全。但是,这不适用于所有的情况,也就是说时间复杂度和空间复杂度之间虽然经常矛盾,但是二者不存在必然的联系。因此,选项A、B、C的说法都是错误的。故本题的正确答案是D。

59.D解析:面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。面向对象方法从对象出发,发展出对象、类、消息、继承等概念。

60.C解析:本题考查按位与“&”。因为1&1=1,0&0=0,所以任何数与自身按位与,结果仍为此数,不发生变化。

61.As(k+j)展开后为4+(1(+j)·k+j+1结果为143,选择A)。

62.B

63.A涵数将a[0]自增5次,所以答案选择A)。

64.D

65.B本题主要考查的是用二维数组首地址和下标来引用二维数组元素的方法。通过分析可知,程序中的双重循环定义了一个如下的二维数组:

01200000

23400000

45600000

00000000

00000000

由于数组的下标是从0开始的,所以二维数组元素a[i][j]表示的是二维数组a的第i+1行、第j+1列对应位置的元素。从第二次的嵌套循环结束后j的值为3,所以

计算的是数组中所有第四列的元素的和,即0。

66.B

67.D解析:在C语言的标准中,short占2个字节、long占4个字节,但int的大小和编译系统相关。例如在Turbo\u3000C\u30002.0中,int占2个字节,但在VisualC++6.0(VC6可以用做C语言编译器)中占4个字节。故本题应该选择D。

68.A

69.B本题的考查点是指向数组元素的指针变量的定义和赋值。所谓数组的指针是指数组的起始地址,数组元素的指针是数组元素的地址。P=&a[0][O]是把该数组的第一个元素的地址赋给指针变量P,而且此时指针变量P也是int型。a[1][2]刚好是数组中的第6个元素,此时也就是P所指的地址,所以输出结果是6。

70.D

71.BA选项说的是偶数,B选项求的是奇数,C选项求的是偶数,而题目求的是奇数。

72.A

73.A

74.C

75.D在最坏情况下,快速排序、冒泡排序和直接插入排序需要的比较次数都是n(n一1)/2,堆排序需要比较的次数为nlog2n。

76.C

77.AB)选项,定义变量不能连等,C)选项b前没有类型名,D)选项类型名与变量名之间不能有逗号,所以A)正确,其余错误。

78.B结构体成员的引用;s[0].a=1,s[1].b=5,所以结果为6

79.C

80.D\n这个是对文件的操作,把数组的数写到文件里,然后再从文件里倒序读出。所以输出结果为6,5,4,3,2,1。

\n

81.(1)错误:#defineF(m,n)(m/n)

正确:#defineF(m,n)(m)/(n)

(2)错误:Return(s);

正确:return(s);

【解析】程序中函数的功能是计算题目中给出的公式值,第一个标识:fun()函数两次调用宏F来计算“s=F((a+b),(a-

82.1voidfun(intm,intk,intxx[])2{3inti,j,n;4for(i=m+1,n=0;n<k;i++)p*<>找大于m的素数,循环k次,即找出紧靠m的k个素数*/5{for(j=2;j<i;j++)p*#]断一<>个M否为素数,如果不是,跳出此循环,判断下一个数*/6if(i%j==0)break;7if(j>=i)/*如果是素数,存入数组XX中*/8xx[n++]=i;9}10}本题主要考查素数的判定方法。如果一个数不能被除了1和其自身以外的数整除,则这个数为素数。本程序使用循环语句控制需要判断的数,在循环体中判断该数是否为素数,若是则存入数组XX中。当数组XX的素数个数为k个时,退出循环。</i;j++)p*#]断一<></k;i++)p*<>2021-2022年安徽省淮北市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.假设把整数关键码K散列到有N个槽的散列表,以下哪些散列函数是好的散列函数()

A.h(K)=KmodN

B.h(K)=1

C.h(K)=K/N

D.h(K)=(K+rand(N))modN,rand(N)返回一个0到N-1的整数

2.

3.有以下程序:#include<stdio.h>main(){charch=‘D’;while(ch>‘A’){ch--;putchar(ch);if(ch==‘A’)break;putchar(ch+1);}}程序运行后的输出结果是()。

A.CBB.BCAC.CCBBD.CDBCA

4.有下列程序:intfun(intx[],intn){staticintsum=0,i;for(i=0;i<n;i++)sum+=x[i]:returnsum;}main(){inta[3]={1,2,3,4,5),b[3]={6,7,8,9),s=0;s=fun(a,5)+fun(b,4);printf("%d\n",s);}程序执行后的输出结果是()。、A.45B.50C.60D.55

5.有如下程序:

longfib(intn)

{if(n>2)return(fib(n-1)+fib(n-2));

elsereturn(2);

}

main()

{printf("%d\n",fib(3));}

该程序的输出结果是A.A.2B.4C.6D.8

6.若i、j已定义成mt型,则下列程序段中内循环体的总执行次数是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30

7.

8.若有定义:floatx=1.5;inta=1,b=3,c=2;则正确的switch语句是()。A.switch(a+b){case1:prinf("*\n");.case2+1:printf("**(n");}

B.switch(int)x);{case1:print("*\n");.case2:printf(**\n");}

C.switch(x){case1.0:print("*\n");case2.0:print("*\n");}

D.switch(a+b){case1:print("*\n");.casec:pit(**\n");}

9.下面不属于需求分析阶段任务的是()。

A.确定软件系统的功能需求B.确定软件系统的性能需求C.制定软件集成测试计划D.需求规格说明书评审

10.快速排序在_____情况下最易发挥其长处。

A.被排序数据中含有多个相同排序码

B.被排序数据已基本有序

C.被排序数据完全无序

D.被排序数据中最大值和最小值相差悬殊

11.下列条件语句中,输出结果与其他语句不同的是()。

A.if(a)printf("%dn",x);elseprint[("%d\n",y)

B.if(a=0)pritf("%dn",y);elseprint[("%d\n",x)

C.if(a!一0)printf("%dn",x);elseprint[("%a\n",y)

D.if(a=O)print[("%dn",x);elseprintf("%d\n",y)

12.已知char**s,下面正确的语句是()。A.A.s="ABCDEF";

B.*s="ABCDEF";

C.**s="ABCDEF";

D.*s='A';

13.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是______。

A.控制流B.加工C.数据存储D.源和潭

14.若程序中有宏定义行“#defineN100”,则下列叙述中正确的是()。

A.宏定义行中定义了标识符N的值为整数100

B.在编译程序对C语言源程序进行预处理时用100替换标识符N

C.上述宏定义行实现将100赋给标识符N

D.在运行时用100替换标识符N

15.定义int*swap()指的是______。

A.一个返回整型值的函数swap()

B.一个返回指向整型值指针的函数swap()

C.一个指向函数swap()的指针,函数返回一个整型值

D.以上说法均错

16.下面不能正确表示a*b/(c*d)的表达式是()。

A.(a*b)/c*dB.a*b/(c*d)C.a/c/d*bD.a*b/c/d

17.以下对软件特点描述错误的是()。

A.软件的使用存在老化问题B.软件的复杂性高C.软件是一种逻辑实体,具有抽象性D.软件的运行对计算机系统具有依赖性

18.

19.在下面的二维数组定义中,正确的是()。

A.inta[5][];

B.inta[][5];

C.inta[][3]={{1,3,5},{2}};

D.inta[](10);

20.下列程序的输出结果是()。voidfun(int*X,inty){printf("%d%d",*x,*y);*x=3;*y=1;}main{intx=1,y=2;fun(&y,&x);printf("%d%d",x,y);}A.2143B.1212C.1234D.2112

二、2.填空题(20题)21.程序测试分为静态测试和动态测试。其中()是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。

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

main()

{inta[]={31,27,20,12,6,1},*p=a;

p++;

printf("%d\n",*(p+2));

}

23.以下函数用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。请填空。

#include<conio.h>

#include<stdio.h>

intfun(int*s,intt,int*k)

{inti;

*k=0;

【】

if(s[*k]<s[i])*k=i;

return【】;}

main()

{inta[10]={876,675,896,101,301,401,980,431,451,777},k;

fun(a,10,&k);

printf("%d,%d\n",k,a[k]);}

24.软件设计模块化的目的是______。

25.有下列程序;

#include<stdio.h>

main()

{charc;

while((c=getchar())!=',')putchar(++C);

}

程序运行时,如果从键盘输入:A,B,<CR>,则输出结果为______。

26.若从键盘输入58,则以下程序输出的结果是______。

main{)

{inta;

scanf("%d",&a);

if(a>50)printf("%d",a);

if(a>40)printf("%d",a);

if(a>30)printf("%d",a);

}

27.若有定义:intk;,以下程序段的输出结果是______。for(k=2;k<6;k++,k++)printf("##%d",k);

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

main()

{inta=10;

a=(3*5,a+4);printf("a=%d\n",A);

29.以下程序的运行结果是【】。

#include<stdio.h>

#include<string.h>

typcdefstructstudent

{charname[10];

longsno;

floatscore;

}STU;

main()

{STUa={"Zhangsan",2001,95},b={"Shangxian",2002,90},

c={"Anhua",2003,95},d,*p=&d;

d=a;

if(strcmp(,)>0)d=b;

if(strcmp(,)>0)d=c;

printf("%1d%s\n",d.sno,p->name);

}

30.函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下:

1

11

121

1331

14641

其构成规律是:

①第0列元素和主对角线元素均为1;

②其余元素为其左上方和正上方元素之和;

③数据的个数每行递增1。

请将程序补充完整。

#defineN6

voidYangHui(intx[N][N])

{inti,j;x[0][0]=1;

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

{x[i][0]=x[i][i]=1;

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

x[i][j]=【】;

}

}

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

32.以下程序是从终端读入数据到数组中,统计其中正数的个数,并计算它们的和。请填

main()

{

inti,a[20],sum,count;

sum=count=【】;

for(i=0;i<20;i++)scanf("%d("%d",【】);

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

{

if(a[i]>0)

{count++;

sum+=【】;

}

}

printf("sum=%d,count=%d\n",sum,count);

}

33.要求使下列程序输出5个整数,请填空。

for(i=0;i<=______;printf("%d\n",i+=2));

34.下列程序执行后输出的结果是【】。

main()

{intarr[10],i,k=0;

for(i=O;i<10;i++)arr[i]=i;

for(i=1;i<4;i++)k+=arr[i]+i;

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

}

35.以下程序的输出是【】。

main()

{

charstr1[]="Howdoyoudo",*pl=str1;

strcpy(str1+strlen(str1)/2,"esshe");

intf("%s\n",p1);

36.以下程序输出的最后一个值是【】。

intff(intn)

{staticintf=1;

f=f*n;

retumf;

}

main()

{inti;

for(i=1;i<=5;i++)printf("%d\n",ff(i))i

}

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

main()

{inta=2,b=3,c=4;

a*=16+(b++)-(++c);

printf("%d",a);

}

38.数据模型按不同的应用层次分为三种类型,它们是______数据模型、逻辑数据模型和物理数据模型。

39.设一棵完全二叉树共有700个结点,则在该二叉树中有【】个叶子结点。

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

#include<stdio.h>

main()

{inti;

for(i=′a′;i<′f′;i++,i++)printf("%c",i-′a′+′A′);

printf("\n");

}

三、1.选择题(20题)41.以下函数值的类型是_______。fun(floatx){floaty;y=3*x-4;returny;}

A.intB.不确定C.voidD.float

42.在下列叙述中,错误的一条是()

A.形式参数是局部变量

B.不同函数中,可以使用相同名字的变量

C.主函数main中定义的变量在整个文件或程序中有效

D.在―个函数内部,可在复合语句中定义变量,这些变量只在本复合语句中有效

43.数据的存储结构是指()。

A.存储在外存中的数据B.数据所占的存储空间量C.数据在计算机中的顺序存储方式D.数据的逻辑结构在计算机中的表示

44.下列运算符中,不属于关系运算符的是()

A.<B.>=C.==D.!

45.设a为整型变量,不能正确表达数学关系“10<a<15”的C语言表达式是______。

A.10<a<15

B.a==11||a==12||a==13||a==14

C.a>10&&a<15

D.!(a<=10)&&!(a>=15)

46.有以下程序:point(char*p){P+=3;)main(){charb[4]={'a','b','c','d'},*p=b;point(p);printf("%c\n",*p);}程序运行后的输出结果是()。

A.aB.bC.cD.d

47.当变量c的值不为2、4、6时,值也为“真”的表达式是

A.(c==2)||(c==4)||(c==6)

B.(c>=2&&c<=6)||(c!=3)||(c!=5)

C.(c>=2&&c<=6)&&!(c%2)

D.(c>=2&&c<=6)&&(c%2!=1)

48.以下程序(程序左边的数字为附加的行号)______。1#include<str.h>2#include<stdio.h>3main()4{chars[]="string";5puts(s);6strcpy(s,"hello");7printf("%3s\n",s);}

A.没有错B.第1行有错C.第6行有错D.第7行有错

49.若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

50.以下程序的输出结果是______。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.123456780B.123456780C.12345678D.147

51.以下程序的运行结果是

intk=0;

voidfun(intm)

{m+=k;k+=m;printf("m=%dk=%d",m,k++);}

main()

{inti=4;

fun(i++);

printf("i=%dk=%d\n",i,k);

}

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

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

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

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

52.有如下程序:longfib(intn){if(n>2)return(fib(n-1)+fib(n-2));elsereturn(2);}main(){printf("%ld\n",fib(3));}该程序的输出结果是______。

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

53.有下列程序:

main()

{inty=20;

do{y--;}while(--y);

phntf("%d\n",y--);

}

当执行程序时,输出的结果是()。

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

54.阅读下列程序,则运行结果为#include"stdio.h"fun(){staticintx=5;x++;returnx;}main(){inti,x;for(i=0;i<3;i++)x=fun();printf("%d\n",x);}

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

55.下列函数值的类型是()。fun(doublex){floaty;y=3*x-4;returny;}

A.intB.不确定C.voidD.float

56.已知函数fread的调用形式为fread(buffer,size,count,fp);其中buffer代表的是()。

A.存放读入数据项的存储区

B.一个指向所读文件的文件指针

C.一个指针,是指向输入数据存放在内存中的起始地址

D.一个整型变量,代表要读入的数据项总数

57.以下程序的输出结果是______。main(){inta=3;printf("%d\n",(a+=a-+a*a))}

A.-6B.1C.2D.-12

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

A.一个算法的空间复杂度大,则其时间复杂度也必定大

B.一个算法的空间复杂度大,则其时间复杂度必定小

C.一个算法的时间复杂度大,则其空间复杂度必定小

D.上述三种说法都不对

59.以下概念中,不属于面向对象方法的是_______。

A.对象、消息B.继承、多态C.类、封装D.过程调用

60.以下程序的输出结果是main(){intc=35;printf("%d\n",c&c);}

A.0B.70C.35D.1

四、选择题(20题)61.有以下程序程序运行后的输出结果是()。

A.143B.197C.33D.28

62.不能把字符串:Hello!赋给数组b的语句是()。

A.charb[10]={’H’,’e’,’l’,’l’,’o’,’!’};

B.charb[10];b="Hello!";

C.charb[10];strcpy(b,"Hello!");

D.charb[10]="Hello!";

63.有以下程序

64.

65.下面的程序段运行后,输出结果是()。

A.9B.0C.不确定值D.18

66.

67.以下关于long、int和short类型数据占用内存大小的叙述中正确的是(),

A.均占4个字节B.根据数据的大小来决定所占内存的字节数C.由用户自己定义D.由C语言编译系统决定

68.

69.有以下程序:

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

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

70.

71.当把以下四个表达式用作if语句的控制表达式时,有一个选项与表达式(k%2)!=0含义相同,这个选项是()。

A.k%2==0B.k%2==1C.!k%2==1D.都不同

72.

73.如果要在表单中创建一个普通文本框,下列标记中正确的是()。

A.<inputtype=”text”>

B.<inputtype=”password”>

C.<inputtype=”CheCkbox”>

D.<inputtype=”radio”>

74.

75.对长度为n的线性表排序,在最坏情况下,比较次数是nlog2n的排序方法是()。

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

76.

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

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

structabc

{

inta,b,c;

}

main()

{

structabcs[2]={{1,2,3},{4,5,6}};

intt;

t=s[0].a+s[1].b;

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

}

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

79.

80.有以下程序:

#include<stdio.h>

main()

{FILE*fp;inti,a[6]={1,2,3,4,5,6};

fp=fopen("d2.dat","w+");

for=(i=o;i<6;,i++)fpintf(fp,"%d\n",a[i]);

rewind(fp);

for(i=0;i%6;i++)fscanf(fp,"%d",&a[5-i]);

fclose(fp);

for(i=0;i%6;i++)printf("%d,",a[i]);

}

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

A.4,5,6,1,2,3,

B.1,2,3,3,2,1,

C.1,2,3,4,5,6,

D.6,5,4,3,2,1,

五、程序改错题(1题)81.下列给定程序中,函数fun()的功能是:计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y的值不相等,2和Y的值不相等。例如,当x的值为1,y的值为2,z的值为3时,函数值为2.O0。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写一个函数fun(),该函数的功能是将大于整数m且紧靠m的k个素数存入所指的数组中。例如,若输入17、5,则应输出19、23、29、31、37。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:

参考答案

1.A

2.C

3.Dputchar函数的功能是输出一个字符,由whlie判断条件和ch初始值可知,只要“ch≠‘A’”,执行两次putchar函数,否则跳出循环。第1次输出“CD”,第2次输出“BC”,第3次输出“A”后跳出循环。故本题答案为D选项。

4.C在函数intfun(intx[],intn)的定义中,变量sum为一个静态局部变量。由于在整个程序运行期间,静态局部变量在内存中的静态存储中占据着永久的存储单元。函数intfun(intx[],intn)的功能是求出数组x[]各个元素的和,所以在主函数中,调用函数fun(a,5)后,变量sum=1+2+3+4+5=15,当再次调用fun(b,4)后,变量sum=15+6+7+8+9=45,所以s=15+45=60。

5.B

6.B本题考查for循环的使用。对于第1个for循环,任何一个i,内层j的循环都要使j~0到3,j=4时不符合,所以退出j循环;然后i减1,J仍然要从0~3,j=4时退出J循环直到i变成0,退出i循环。第一条for语句执行6次,第二条for语句执行4次,所以内循环体执行6*4=24次。

7.D

8.AB)选项中switch((int)x);语句中不应该有最后的分号。

9.C【答案】:C

【知识点】:需求分析阶段的任务

【解析】:需求分析阶段的任务是深入描述软件的功能和性能,确定软件设计的约束和软件同其他系统元素的接口细节,定义软件的其他有效性需求,借助于当前系统的逻辑模型导出目标系统逻辑模型,解决目标系统“做什么”的问题。可分为需求提出、需求描述及需求评审三个阶段。从此可以看出需求分析的任务不包括制定软件集成测试计划,故选C。

10.C

11.D主要考查if判断语句,A选项if(a),如果a为真,则输出X,否则输出Y。B选项if(a==0),如果a恒等于0,则输出Y,否则输出X。C选项a(!=o),如果a不等于0,则输出X,否则输出y。D选项if(a==0),如果a恒等于0,则输出X,否则输出y。由以上结论可知,输出结果不同的为D选项。

12.C

13.A解析:数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。数据流图中的主要图形元素有:加工(转换)、数据流、存储文件(数据源)、源和潭。

14.B宏定义在编译程序

温馨提示

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

评论

0/150

提交评论