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

下载本文档

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

文档简介

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

一、单选题(20题)1.下列程序段的时间复杂度为()。A.O(n)B.O(n-1)C.O(n2)D.O(log2n)

2.面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是()。

A.模拟现实世界中不同事物之间的联系

B.强调模拟现实世界中的算法而不强调概念

C.使用现实世界的概念抽象地思考问题从而自然地解决问题

D.不强调模拟现实世界中的算法而强调概念

3.一个C语言程序总是从()开始执行。

A.书写顺序的第一函数B.书写顺序的第一条执行语句C.主函数main()D.不确定

4.有以下程序:#include<stdio.h>typedefstruct{intnum;charname[10];intscore;}PER;voidfun(PERx[]){intt;if(x[0].score>x[1].score){t=x[0].score;x[0].score=x[1].score;x[1].score=t;}}main(){PERs[2]={{1001,“zhang”,621},{1002,“wang”,585}};inti;fun(s);for(i=0;i<2;i++)printf(“%d,%s,%d,”,s[i].num,s[i].name,s[i].score);}程序的运行结果是()。A.1001,zhang,585,1002,wang,621,

B.1001,zhang,621,1002,wang,585,

C.1002,wang,585,1001,zhang,621,

D.1002,wang,621,1001,zhang,585,

5.不带头结点的单链表head为空的判定条件是()。

A.head=NULLB.head->next=NULLC.head->next=headD.head!=NULL

6.在以下一组运算中,优先级最高的运算符是()

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

7.在一个链式队列中,假设f和r分别为队头和队尾指针,则插入S所指结点的运算是()。

A.f->next=s;f=s;

B.r->next=s;r=s;

C.S->next=rr=s;

D.r->next=f;f=s;

8.在E-R图中,用来表示实体的图形是______。A.矩形B.椭圆形C.菱形D.三角形

9.C语言中的基本数据类型所占存储空间长度的顺序是()

A.char<=int<=float<=double<=long

B.int<=char<=float<=long<=double

C.int<=long<=float<=double<=char

D.char<=int<=float<=long<=double

10.有以下程序:程序运行后的输出结果是()。A.6B.10C.8D.4

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

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

12.

13.数据管理技术发展的三个阶段中,()没有专门的软件对数据进行管理。

I.人工管理阶段

II.文件系统阶段

Ⅲ.数据库阶段A.A.仅IB.仅ⅢC.I和IID.II和Ⅲ

14.以下各选项中的代码段执行后,变量y的值不为1的是()。A.intx=5,y=0;if(5)y=1;

B.intx=5,y=0;if(x)y=1;

C.intx=10,y=0;if(x=y)y=1;

D.intx=5,y=10;if(x=y)y=1;

15.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是()。

A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和DBMSD.没有任何关系

16.下列程序的输出结果是()。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

17.软件生命周期中所花费用最多的阶段是()。

A.详细设计B.软件编码C.软件测试D.软件维护

18.在具有n个结点的单链表中,实现()的操作,其算法的时间复杂度是O。

A.求链表的第i个结点B.在地址为P的结点之后插入一个结点C.删除表头结点D.删除地址为P的结点的后继结点

19.有如下说明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是()

A.*p+9B.*(p+8)C.*p+=9D.p+8

20.设以下变量均为int类型,表达式的值不为7的是A.(x=y=6,x+y,x+1)

B.(x=6,x+1,y=6,x+y)

C.(x=y=6,x+y,y+1)

D.(y=6,y+1,x=y,x+1)

二、2.填空题(20题)21.为了便于对照检查,测试用例应由输入数据和预期的【】两部分组成。

22.数据的基本单位是______。

23.以下程序的输出结果是______。

#include<stdio.h>

main()

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

p=a;p++;

printf("%d",*p);

}

24.下面rotme函数的功能是:将n行n列的矩阵A转置为A'。例如:

请填空。

#defineN4

voidrotate(inta[][N])

{inti,j,t;

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

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

{t=a[i][j];

【】;

a[j][i]=t;

}

}

25.以下程序的功能是计算:s=1+12+123+1234+12345。请填空。

main()

{intt=0,s=0,i;

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

{t=i+______;s=s+t;}

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

}

26.用以下程序把从键盘输入的字符存放到一个文件中,用字符#作为结束符,请按题意要求填空完善程序。

#include<stdio.h>

main()

{FILE*fp;

charch,fname[10];

printf("Inputthenameoffile\n");

gets(fname);

if(fp=fopen(【】))==NULL)

{printf("can'topen\n");

【】;

}

while((ch=getchar())!='#')

fputc(【】);

fclose(fp);

}

27.软件维护活动包括以下几类:改正性维护、适应性维护、【】维护和预防性维护。

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

intm=17;

intfun(intx,inty)

{intm=3;

return(x*Y-m);

}

main()

{inta=5,b=7;

printf("%d\n",fun(a,B)/m);

}

29.一个模块直接调用的其他模块的模块个数称为______。

30.在C语言中,字符的比较就是对它们的【】码进行比较。

31.下列程序的输出结果是【】。

voidfun(int*n)

{

while((*n)--);

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

}

main()

{inta=100;

fun(&a);

}

32.设有下列宏定义:

#defineA2

#defineB(A+3)

则执行赋值语句"k=B*20;"(k为int型变量)后,k的值是______。

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

#include<stdio.h>

main()

{inti;

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

printf("\n");

}

34.下列程序将二维数组a的行和列元素互换后存放到另一个二维数组b中。请填空。

main()

{inta[2][3]={{1,2,3),{4,5}},b[3][2],i,j;

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

{for(j=0;j<30++)

______;

}

}

35.栈的3种基本运算是:入栈、退栈和______。

36.软件需求规格说明书应具有完整性、无歧义性、正确性、可验证性、可修改性等特性,其中最重要的是【】。

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

38.请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。

【】(double,double);

main()

{doublex,y;

scanf("%1f%1f",&x,&y);

printf("%1f\n",max(x,y));

}

doublemax(doublea,doubleB)

{return(a>b?a:b);}

39.以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。

FILE*myf;longfl;

myf=【】("test.t","rb");

fseek(myf,(),SEEK_END)fl+ftell(myf);

fclose(myf);

printf("%ld\n",fl);

40.下列程序用来将从键盘上输入的2个字符串进行比较,然后输出2个字符串中第1个不相同字符的ASCII码之差。例如,输入的2个字符串分别为abcdef和abceef,则输出为-1。

#include

main()

{charstr[100],str2[100],c;

inti,s;

printf("\ninputstring1:\n");gest(str1);

printf("\ninputstring2:\n");gest(str2);

i=0;

while((strl[i]==str2[i]&&(strl[i]!=【】))

i++;

s=【】;

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

三、1.选择题(20题)41.软件调试的目的是______。

A.发现错误B.改正错误C.改善软件的性能D.挖掘软件的潜能

42.下列关于线性链表的描述中正确的是()。

A.存储空间不一定连续,且各元素的存储顺序是任意的

B.存储空间不一定连续,且前件元素一定存储在后件元素的前面

C.存储空间必须连续,且各前件元素一定存储在后件元素的前面

D.存储空间必须连续,且各元素的存储顺序是任意的

43.若希望下列的程序运行后输出25,程序空白处的正确选项是()。

main()

{inti,j=50,a[]={7,4,10,5,8};

for()

j+=a[i];

primf("%d,j-40);

}

A.i=1;i<4;++iB.i=1;i<3;++iC.i=4;i>2;i--D.i=2;i<4;++i

44.以下数组定义中错误的是()。

A.intx[][3]={0};

B.intx[2][3]={{1,2},{3,4},{5,6}};

C.intx[][3]={{1,2,3},{4,5,6}};

D.intx[2][3]={1,2,3,4,5,6};

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

A.一个C程序可以有多个主函数

B.一个C语言的函数中只允许有一对花括号

C.C程序的书写格式是自由的,一个语句可以写在一行上,也可以写在多行内

D.在对C程序进行编译时,可以发现注释行中的拼写错误

46.有以下程序:#include<stdio.h>main(){chark;inti;for(i=1;i<3;i++){scanf("%c",&k);switch(k){case'0':printf("another\n");case'1':printf("number\n");}{}程序运行时,从键盘输入:01<回车>,程序执行后的输出结果是()。

A.anothernumber

B.anothernumberanother

C.anothernumber

D.numbernumber

47.C语言规定,在一个C程序中,main()函数的位置()。

A.必须在系统调用的库函数之后B.必须在程序的开始C.必须在程序的最后D.可以在任意位置

48.当前在数据库管理系统的研究方面,较活跃的是()

A.关系数据库B.网状数据库C.空间数据库D.层次数据库

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

A.一个逻辑数据结构只能有一种存储结构

B.数据的逻辑结构属于线性结构,存储结构属于非线性结构

C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率

D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率

50.若a是noat型变量,b是unsigned型变量,以下输入语句中,合法的是______。

A.scanf("%6.2f%d",&a,&b);

B.scanf("%f%n",&a,&b);

C.scaaf("%f%3o",&a,&b);

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

51.表达式'8'-'2'的值是()。

A.整数6B.字符6C.表达式不合法D.字符8

52.有以下程序

#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.1267B.1256C.1278D.1245

53.变量p为指针变量,若p=&a,下列说法不正确的有______。

A.&*p==&aB.*&a==aC.(*p)++==a++D.*(p++)==a++

54.下面不属于软件设计原则的是()。

A.抽象B.模块化C.自底向上D.信息隐蔽

55.设有定义:intn=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是()A.p=1;B.*q=2;C.q=p;D.*p=5;

56.设inti=2,j=1,k=3,则表达式i&&(i+j)&k|i+j的值是_______。

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

57.有以下函数:fun(char*a,char*b){while((*a!='\0')&&(*b!='\0')&&(*a==*b)){a++;b++;}return(*a-*b);}该函数的功能是()。

A.计算a和b所指字符串的长度之差

B.将b所指字符串复制到a所指字符串中

C.将b所指字符串连接到a所指字符串后面

D.比较a和b所指字符串的大小

58.若i、j已定义为int型,则以下程序段中内循环的总的执行次数是()for(i=5;i>0;i--)for(j=0;j<4;j++){…}

A.20B.24C.25D.30

59.在面向对象方法中,一个对象请求另一个对象为其服务的方式是通过发送()。

A.调用语句B.命令C.口令D.消息

60.软件需求分析一般应确定的是用户对软件的______。

A.功能需求B.非功能需求C.性能需求D.功能需求和非功能需求

四、选择题(20题)61.

62.以下关于结构化程序设计的叙述中正确的是()。

A.结构化程序使用goto语句会很便捷

B.在c语言中,程序的模块化是利用函数实现的

C.一个结构化程序必须同时由顺序、分支、循环三种结构组成

D.由三种基本结构构成的程序只能解决小规模的问题

63.有以下程序:

#include<stdio.h>

main

{inty=10;

while(y--);

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

}

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

A.y=0B.y=-1C.y=lD.while构成无限循环

64.以下描述中正确的是()。

A.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句

B.do-while循环由do开始,用while结束,在while(表达式.后面不能写分号

C.在do-while循环体中,是先执行一次循环,再进行判断

D.do-while循环中,根据情况可以省略while

65.

有以下程序

#include<stdio.h>

main

{inta=1,b=2,c=3,x;

x=(a^b)&C;printf("%d",x);

}

程序的运行结果是()。

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

66.若想定义int型变量a,b,c,d并都赋值为1,以下写法中错误的是()。

A.inta=b=c=d=1;

B.inta=1,b=1,c=1,d=1;

C.inta,b,c,d;a=b=c=d=1;

D.inta,b,c,d=1;a=b=c=d;

67.设pl和p2是指向一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是()。

A.k=*pl+*p2B.p2=k;C.pl=p2;D.k=*pl*(*p2.;

68.

69.

70.

71.

有以下程序段:

intx=3;

do

{printf("%d",x-=2);)

while(!(--x));

其输出结果是()。

A.1B.30C.1-2D.死循环

72.

73.在计算机中,算法是指()

A.加工方法B.解题方案的准确而完整的描述C.排序方法D.查询方法

74.有以下程序程序的运行结果是()。

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

75.有以下程序

structSTU

{

charname[10];

intnum;

intScore;

};

main()

{

structSTUs[5]={{"YangSan",20041,703},

{"LiSiGuo",20042,580},

{"WangYin",20043,680},

{"SunDan",20044,550},

{"Penghua",20045,537}},*p[5],*t;

inti,j;

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

p[i]=&s[i];

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

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

if(p[i]->Score>p[j]->Score)

{

t=p[i];

p[i]=p[j];

p[j]=t;

}

printf("%d%d\n",s[1].Score,p[1]->Score);

}

程序运行后的输出结果是

A.550550B.580550

C.680680D.580680

76.以下能定义为用户标识符的是()。

A.printfB.charC._8abcD.Void

77.

78.

79.有以下程序:

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

A.852B.963C.741D.875421

80.

五、程序改错题(1题)81.下列给定程序中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值。从第l项起,斐波拉契数列为:1,1,2,3,5,8,13,21,…例如,若给n输入7,则该项的斐波拉契数值为l3。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>longfun(intg){//****found****switch(g);{case0:return0;//****found****casel:case2:return1;}return(fun(g-1)+fun(g-2));}voidmain{longfib;intn;printf("Inputn:");scanf("%d",&n);printf("n=%d\n",n);fib=fun(n);printf("fib=%d\n\n",fib);}

六、程序设计题(1题)82.

参考答案

1.B

2.C\n面向对象的设计方法的基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。它虽强调模拟现实世界中的概念而不强调算法,但是它鼓励开发者在软件开发的过程中从应用领域的概念角度去思考。

\n

3.C

4.A程序首先使用typedef定义一种新的类型名PER,它包含3种数据成员:整数num,字符数组name,整数score。main函数使用PER定义结构体数组s,s包含两个PER类型的元素。然后调用函数fun将数组s传入。fun函数的功能是比较形参数组x的两个元素的score值的大小。若第1个元素的score值大于第2个元素的score值,就使用临时变量t将两个元素的score值交换。由于621大于585且x等价于实参s的指针,因此实参s的两个元素的score也会进行交换,执行完fun函数之后,for循环将两个元素输出。故本题答案为A选项。

5.A

6.C

7.B

8.A解析:在E-R图中,用三种图框分别表示实体、属性和实体之间的联系,其规定如下:用矩形框表示实体,框内标明实体名;用椭圆状框表示实体的属性,框内标明属性名;用菱形框表示实体间的联系,框内标明联系名。所以,选项A正确。

9.A

10.C题干中,整型指针变量Pk指向k,Pm指向m,所以右边表达式“*pk*(*pm)”的值为“k*m”,即2*4=8;左边表达式“*(p=&n)”先将变量n的地址赋给p,然后对p解引用,引用到n,将n的值赋为8。本题答案为C选项。

11.A

12.C

13.A数据管理技术发展的兰个阶段中,只有人工管理阶段,没有操作系统,没有管理数据的软件,数据处理方式是批处理。在文件系统阶段,操作系统中已经有了专门数据管理软件,一般称为文件系统。在数据库系统阶段,出现了统一管理数据的专门软件系统,即数据库管理系统。

14.C选项A的if条件表达式的值是5,结果为真,执行“y=1”,y的值为1;选项B的if条件表达式x的值为5,结果也是真,执行“y=1”,y的值为1;选项C的if条件表达式“x=y”是赋值语句,将y的值0赋给x,表达式的值为0,if语句不执行,y的值为0;选项D的if条件表达式“x=y”是赋值语句,将y的值10赋给x,表达式的值为10,执行“y=1”,y的值为1。故本题答案为C选项。

15.C(10)C)解析:DB即数据库(Database),是统一管理的相关数据的集合;DBMS即数据库管理系统(DatabaseManagementSystem),是位于用户与操作系统之间的一层数据管理软件,为用户或应用程序提供访问DB的方法;DBS即数据库系统(DatabaseSystem)由如下5部分组成,数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、系统平台之一——硬件平台(硬件)、系统平台之二——软件平台(软件)。

16.D本题考梦自增运算符“++”、逻辑与运算符“&&”和逻辑或运算符“||”。自增运算符“++”出现在变量之前,表示先使用变量的值加l,再使用变量的值进行运算;出现在变量之后,表示先使用变量的值进行运算,再使用变量的值加l。当逻辑与运算符“&&’’两边的运算对象都为真时,逻辑表达式的值才为真;当逻辑或运算符“||”只要一个值为1,值就为1。根据运算符的优先级,题中应先计算内层括号中的值。++j是先自加后运算,因此运算时j的值等于3,所以表达式++j=3成立,即表达式的值为1;1与任何数都为进行或(||)运算,结果都为1,因此k=3的表达式i++是先运算后自加,因此运算时i为1,所以i++=1成立,自加1后i=2。if语句的条件为真即“1”,所以输出i、j、k的值分别是2,3,3。

17.D解析:软件生命周期分为软件定义、软件开发及软件运行维护3个阶段。本题中,详细设计、软件编码和软件测试都属于软什开发阶段;维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段.软件工程学的一个目的就是提高软件的可维护性,降低维护的代价。

18.A

19.B解析:在C语言的数组元素的引用方法,我们在前面已经讲过了,比如数组元素a[0],可以用表达式*(p+0),即*p来引用,对于数组元素a[1],可以用表达式*(p+1)来引用,在这里,p+1的值就是数组元素a[1]的地址,对此地址使用“间接访问运算符”:*(p+1)就代表存储单元a[1],注意:一对圆括号不可少。同样,对于数组元素a[2],则可以用表达式。(p+2)来引用…,对于数组元素a[9],可以用表达式,(p+9)来引用。因此,当指针变量p指向a数组的起始地址时,若0≤i<10,则数组元素a[i]可以用*(p+i)来表示。

20.B本题考查逗号表达式的用法。C语言中逗号“,”也是一种运算符,称为逗号运算符,其功能是把两个表达式连接起来组成一个表达式,称为逗号表达式。其一般形式为:表达式1,表达式2。其求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。逗号表达式的一般形式可以扩展为:表达式1,表达式2,表达式3,…,表达式n。它的值为表达式n的值。

21.输出结果输出结果解析:注意:测试的基本方法和步骤。

22.数据元素。数据元素。

23.指针P指向数组a的首地址,执行语句p++;后p指向数组a的第2个元素的地址,即a[1]的地址,因此*p=a[1]=4。\r\n\r\n

24.j<Ia[i][j]=a[j][i]j<I\r\na[i][j]=a[j][i]解析:本题中要求将n行n列的矩阵A转置,即让数组中行上的元素变成对应列上的元素。即把对角线两边的元素对换,所以本题的第一个空白处应该填写j<i,第二个空白处填写交换对角线两边的元素的语句a[i][j]=a[j][i]。

25.t*10或10*tt*10或10*t解析:本题要求累加一系列有规律的数,从输出结果来看,s保存的是最终结果,而s在循环体中,每次累加一个t,则说明t在5次循环中分别等于1.12、123、1234、12345;而t每次循环等于“填空内容”加上循环变量i,又因为i在5次循环中分别等于1、2、3、4,5,所以t每次循环要加的“填空内容”应分别为0、10、120,1230,12340,这一系列值正好是前一次t的值的10倍.所以“填空内容”应是t*10。

26.fname"#"exit(0)chfp

27.完善性软件维护活动包括以下几类:改正性维护,适应性维护、完善性维护和预防性维护,完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。

28.11解析:本题考查局部变量和全局变量的区别:局部变量是指作用域在函数级和块级的变量,全局变量是指作用域在程序级和文件级的变量。本程序首先定义了一个全局变量m=17,m=17的作用域在整个程序内。在fun函数内部定义了一个局部变量m=3,m=3的作用域仅在fun函数内部,通过fun函数返回两个形参的积再减m。在主函数中,输出fun(a,b)/m=(5*7-3)/17=1。

29.扇出扇出解析:在结构图中,调用一个给定模块的模块个数称为扇入,一个模块直接调用的其他模块个数称为扇出。

30.ASCⅡ

31.00解析:在函数fun()中,while((*n)-)是先引用*n的值,再做(*n)--运算,所以循环结束时*n的值为0,再做(*n)--运算后,*n的值为-1;执行++(*n)后,*n的值是0。

32.100100解析:本题考查带参数的宏定义及相关运算。运算过程为:k=B*20=(A+3)*20=(2+3)*20=100。

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

34.b[j][i]=a[i][j]b[j][i]=a[i][j]解析:本题考查二维数组的基本知识。它是要将一个二维数组,的行和列元素互换后存放到另一个二维数组b中,只要将数组a的行标和列标互换,然后赋给数组b即可。

35.读栈顶元素读栈顶元素解析:栈的基本运算有3种:入栈、退栈和读取栈顶元素。其中,入栈是指在栈顶插入一个新的元素;退栈是指取出栈顶元素并赋值给一个变量;读栈顶元素是将栈顶元素赋值给一个指定的变量,不删除栈顶元素。

36.正确性正确性解析:本题考查软件工程中需求规格说明书的评审。衡量需求规格说明书好坏的标准按重要性次序排列为:正确性、无歧义性、完全性、可验证性、一致性、可理解性、可修改性和可追踪性。因此,划线处应填入“正确性”。

37.软件开发

38.doublemax或externdoublemaxdoublemax或externdoublemax解析:本题中main()函数需要调用max()函数,在main()之前就需要声明函数max(),并且可以用extern说明符使变量的作用域扩充到需要用到它的函数,所以,填写doublemax(或externdoublemax)。

39.fopenfopen解析:C语言中的文件分为:ASCII文件与二进制文件。文件在使用前打开,使用后要关闭。打开文件的函数为:fopen(),调用形式为:fp=fopen('文件名','使用文件方式');关闭文件的函数为:fclose(),调用形式为:fclose(fp),其中fp为文件指针。

40.\0'strl[i]-str2[i]

41.B解析:在对程序进行测试时会发现错误,这就要进行程序调试(排错)。程序调试活动由三部分组成:一是错误定位,根据错误的外部表现形式,确定程序中出错的位置,找出错误的内在原因;二是对程序进行修改,排除这个错误;三是进行回归测试,防止引进新的错误。所以程序调试的目的就是诊断和改正程序中的错误。软件调试不能改善软件的性能,也不能挖掘软件的潜能。

42.A解析:线性表的链式存储结构中的结点空间是动态生成的,它们在内存中的地址可能是连续的,也可能是不连续的。

43.D解析:要想使程序输出是25,则j-40=25,j=65,而j初值是50,所以填入for循环中的语句,使引用的数组元素累加为65-50=15即可。

44.B解析:二维数组的初始化有以下几种形式:①分行进行初始化;②不分行进行初始化;③部分数组元素进行初始化;④省略第一维的定义,不省略第二维的定义。选顷B)等号右边分了3行,大于等号左边数组的行数2。

45.C解析:本题涉及C语言基本的3个知识点:①C语言规定一个程序只允许有一个主函数,一个函数内可以允许有多个花括号;②C语言的标识符是由字母、数字、下划线组成的,可以是大写字母,而且标识符区分字母的大小写;③C程序的注释部分仅仅是方便程序员阅读,提高程序的可读性和可移植性,它并不参与程序的编译,所以编译器也就不会发现注释行中的错误。

46.C解析:本题中没有使用break终止switch语句的执行,当k为'0'时,执行完case'0'后的输出后将继续执行case'1'后的输出;当k为'1'时,执行case'1'后的输出。

47.D解析:每个C程序有且只有一个主函数(main),且程序必须从main()函数开始执行,而且main()函数可以放在程序中的任意位置。

48.C

49.D解析:数据的逻辑结构是对数据元素之间的逻辑关系的描述,它可以用一个数据元素的集合和在此集合中定义的若干关系来表示。数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接等存储结构。但是不同的存储结构的数据的处理效率不同。

50.C

51.A解析:在C语言中,虽然字符都是变为其对应的ASCII码值来参与算术运算的,但字符间的相对位置关系还是不变的,字符8和字符2的ASCII码值相差仍是6。

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

53.D解析:*p代表a,&*p等价于&a;p代表&a,*p等价于a,因而(*p)++等价于a++;但因p的值为a的内存单元地址,p++为变量a首地址后面的地址,*(p++)不再指向变量s。

54.C解析:软件设计遵循软件工程的基本目标和原则,建立了适用于在软件设计中应该遵循的基本原理和与软件设计有关的概念。①抽象是一种思维工具,就是把事物本质的共同特性抽出来而不考虑其他细节。②模块是指可以单独命名且可编址的元素。如高级语言中的过程、函数、子程序等。③信息隐蔽是指在一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不能访问的。④模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。因此,本题的正确答案是C。

55.D解析:本题考核的知识点是指针变量定义和赋值语句的基本应用。在使用一个指针变量之前,先要用声明语句对其进行定义,在定义了一个指针变量之后,系统就为这个指针变量分配了一个存储单元,用它来存放地址。在C语言中有两个有关指针的运算符:&运算符,为取地址运算符,*运算符是指针运算符,*p代表p所指向的变量。本题中首先定义了整型变量n,其初值为0,接着定义一个指针变量p并让它指向n,然后定义了一个指向指针的指针变量q并让它指向p,选项A中将常量1赋给指针p不正确;选项B也是将常量2赋给*p,故选项B不正确;选项C中P不是指向指针的指针变量,而将他赋值给一个指向指针的指针变量小显然不正确,所以,4个选项中选项D符合题意。

56.Ci+j=3,运算符的优先级为数学运算符,位运算符,逻辑运算符,因此,首先计算最右边的i+j=3,然后计算(i+j)&k|3=9,最后计算i&&9=1

57.D解析:本题要求阅读的代码是一个函数,阅读之前先要看清函数的定义,该函数有两个参数,都是字符指针,这说明它接收的是两个字符串.该函数没有定义返回类型,C语言规定函数的返回类型为int时可以省略,所以切不可将其看成是无返回类型的void型函数,它是int型函数。函数体中除了返回语句外,只有一条while循环语句,该循环的循环条件为(*a!='\\'0}&&(*b!='\\0')&&(*a==*B),即当a和b所指处都不是字符结束符'\\0'并且a和b所指处的内容相等时执行循环。而循环体中只是简单地将指针a和b同时往后移动1位。循环结束后返回a所指内容减去b所指内容的差。换个角度去考虑,也就是说当字符串a或b中有一个结束了或者是它们的相同位置中有一个字符不同时,则返回该位置两个字符之差。若两者长度相同而且所有对应字符都相同的话,最后返回的是'\\0\\-'\\0'=0,否则的话就返回两个字符串第一对不相同的字符之差.这时应该可以看出来,这个函数实现的是对两个字符串的比较。所以,4个选项中D正确。

58.A

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

60.DD。【解析】软件需求分析中需要构造一个完全的系统逻辑模型,理解用户提出的每一功能与性能要求,使用户明确自己的任务。因此,需求分析应确定用户对软件的功能需求和非功能需求。

61.A

62.B滥用90t0语句将使程序的流程毫无规律,可读性差,对于初学者来说尽量不要使用,所以A错误。—个结构化程序可以包含顺序、分支、循环结构中的一种或多种,所以C错误。由三种基本结构构成的程序可以解决任何复杂的问题,所以D错误。

63.B\ny--的作用是先取其值作为表达式的值,然后Y的值减1存入Y。当y>0时循环继续,直到y=0时循环结束,然后Y值减l存入Y中,所以选B。

\n

64.C解析:do-while语句的一般形式为:do循环体语句while(表达式);,其中循环体语句可以是复合型语句,但必须用花括号括起来。while后必须要有分号作为语句的结束,在do-while循环中,不可以省略while。

65.D

\n首先计算1与2的或运算,再将其结果与3进行“与”运算,结果为00000011,即十进制数3。

\n

66.AC语言中赋值运算符的结合方向是从右向左的,变量先定义后使用。“inta=b=c=d=1;”,本条语句首先执行赋值运算“d=1”,由于变量d并未定义,故编译不通过,提示没有定义标识符b、c、d,A选项错误。故本题答案为A选项。

67.B本题主要考查了一维数组指针的赋值和用指针引用数组元素进行运算。选项B)中p2为指向int型变量的指针,而k为int型变量,不能将int型变量直接赋值给指向int型变量的指针,所以选项B)错误,应该为p2=&k。

68.B

69.D

70.A

71.C

\n本题考查do-while循环,先执行d0输出的x的值为1,接着执行while语句,此时--x的值为0,x也为0,而非0为1,循环成立,接着执行do输出X值为-2,执行--x后,表达式为-2,而!(--x)为0,退出循环。

\n

72.A

73.B在计算机中,算法被定义为对一个问题求解步骤的一种描述,是求解问题的方法,它是指令的有限序列,其中每条指令表示一个或者多个操作。算法具有有穷性、确定性、可行性、输入和输出五大特点。

在本题中,选项A、C、D的说法明显偏离了算法的定义,因此正确答案选B。

74.As[i]元素作为c数组的下标,使C数组元素自增,执行完毕后,c数组元素为04332。按题目要求输出,4332,所以答案选择A)。

75.B本题实际上是按成员变量Score的值进行由小到大的排序,程序执行后,数组p[5]中各元素分别为:

{{'Penghua',20045,537},

{'SunDan',20044,550},

{'LiSiGuo',20042,580},

{'WangYin',20043,680},

{'YangSan',20041,703}}

所以,p[1]->Score=550,s[1].Score=580。故本题答案为B。

76.B用户自定义标识符不能与关键字相同。但可以与库函数名相同,只是一般不建议用户这么做。

77.C

78.D

79.A第一次for循环,y的值为9,y%3的值为3,满足条件打印一一Y,即先减一后打印,所以打印8;第二次for循环,Y的值为7,y%3的值为1,不执行打印语句;第三次for循环,y的值为6,y%3的值为0,满足条件打印一一Y,即先减一后打印,所以打印5;第四次for循环,Y的值为4,不满足if条件,不执行打印语句;第五次for循环,Y的值为3,满足if条件,打印输出2;第六次for循环,Y的值为1,不满足条件,不执行打印语句。

80.A

81.(1)错误:switch(g);正确:switch(g)(2)错误:casel:case2:returnl;正确:casel;case2:returnl;【解析】此题考查C语言的语法规则,switch(表达式)后不应该带有“;”,case语句常量后应该是“:”。switch语句的一般形式如下:switch(表达式){case常量表达式1:语句1;case常量表达式2:语句2;case常量表达式n:语句i;default:语句n+1;}

82.

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

一、单选题(20题)1.下列程序段的时间复杂度为()。A.O(n)B.O(n-1)C.O(n2)D.O(log2n)

2.面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是()。

A.模拟现实世界中不同事物之间的联系

B.强调模拟现实世界中的算法而不强调概念

C.使用现实世界的概念抽象地思考问题从而自然地解决问题

D.不强调模拟现实世界中的算法而强调概念

3.一个C语言程序总是从()开始执行。

A.书写顺序的第一函数B.书写顺序的第一条执行语句C.主函数main()D.不确定

4.有以下程序:#include<stdio.h>typedefstruct{intnum;charname[10];intscore;}PER;voidfun(PERx[]){intt;if(x[0].score>x[1].score){t=x[0].score;x[0].score=x[1].score;x[1].score=t;}}main(){PERs[2]={{1001,“zhang”,621},{1002,“wang”,585}};inti;fun(s);for(i=0;i<2;i++)printf(“%d,%s,%d,”,s[i].num,s[i].name,s[i].score);}程序的运行结果是()。A.1001,zhang,585,1002,wang,621,

B.1001,zhang,621,1002,wang,585,

C.1002,wang,585,1001,zhang,621,

D.1002,wang,621,1001,zhang,585,

5.不带头结点的单链表head为空的判定条件是()。

A.head=NULLB.head->next=NULLC.head->next=headD.head!=NULL

6.在以下一组运算中,优先级最高的运算符是()

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

7.在一个链式队列中,假设f和r分别为队头和队尾指针,则插入S所指结点的运算是()。

A.f->next=s;f=s;

B.r->next=s;r=s;

C.S->next=rr=s;

D.r->next=f;f=s;

8.在E-R图中,用来表示实体的图形是______。A.矩形B.椭圆形C.菱形D.三角形

9.C语言中的基本数据类型所占存储空间长度的顺序是()

A.char<=int<=float<=double<=long

B.int<=char<=float<=long<=double

C.int<=long<=float<=double<=char

D.char<=int<=float<=long<=double

10.有以下程序:程序运行后的输出结果是()。A.6B.10C.8D.4

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

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

12.

13.数据管理技术发展的三个阶段中,()没有专门的软件对数据进行管理。

I.人工管理阶段

II.文件系统阶段

Ⅲ.数据库阶段A.A.仅IB.仅ⅢC.I和IID.II和Ⅲ

14.以下各选项中的代码段执行后,变量y的值不为1的是()。A.intx=5,y=0;if(5)y=1;

B.intx=5,y=0;if(x)y=1;

C.intx=10,y=0;if(x=y)y=1;

D.intx=5,y=10;if(x=y)y=1;

15.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是()。

A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和DBMSD.没有任何关系

16.下列程序的输出结果是()。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

17.软件生命周期中所花费用最多的阶段是()。

A.详细设计B.软件编码C.软件测试D.软件维护

18.在具有n个结点的单链表中,实现()的操作,其算法的时间复杂度是O。

A.求链表的第i个结点B.在地址为P的结点之后插入一个结点C.删除表头结点D.删除地址为P的结点的后继结点

19.有如下说明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是()

A.*p+9B.*(p+8)C.*p+=9D.p+8

20.设以下变量均为int类型,表达式的值不为7的是A.(x=y=6,x+y,x+1)

B.(x=6,x+1,y=6,x+y)

C.(x=y=6,x+y,y+1)

D.(y=6,y+1,x=y,x+1)

二、2.填空题(20题)21.为了便于对照检查,测试用例应由输入数据和预期的【】两部分组成。

22.数据的基本单位是______。

23.以下程序的输出结果是______。

#include<stdio.h>

main()

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

p=a;p++;

printf("%d",*p);

}

24.下面rotme函数的功能是:将n行n列的矩阵A转置为A'。例如:

请填空。

#defineN4

voidrotate(inta[][N])

{inti,j,t;

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

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

{t=a[i][j];

【】;

a[j][i]=t;

}

}

25.以下程序的功能是计算:s=1+12+123+1234+12345。请填空。

main()

{intt=0,s=0,i;

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

{t=i+______;s=s+t;}

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

}

26.用以下程序把从键盘输入的字符存放到一个文件中,用字符#作为结束符,请按题意要求填空完善程序。

#include<stdio.h>

main()

{FILE*fp;

charch,fname[10];

printf("Inputthenameoffile\n");

gets(fname);

if(fp=fopen(【】))==NULL)

{printf("can'topen\n");

【】;

}

while((ch=getchar())!='#')

fputc(【】);

fclose(fp);

}

27.软件维护活动包括以下几类:改正性维护、适应性维护、【】维护和预防性维护。

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

intm=17;

intfun(intx,inty)

{intm=3;

return(x*Y-m);

}

main()

{inta=5,b=7;

printf("%d\n",fun(a,B)/m);

}

29.一个模块直接调用的其他模块的模块个数称为______。

30.在C语言中,字符的比较就是对它们的【】码进行比较。

31.下列程序的输出结果是【】。

voidfun(int*n)

{

while((*n)--);

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

}

main()

{inta=100;

fun(&a);

}

32.设有下列宏定义:

#defineA2

#defineB(A+3)

则执行赋值语句"k=B*20;"(k为int型变量)后,k的值是______。

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

#include<stdio.h>

main()

{inti;

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

printf("\n");

}

34.下列程序将二维数组a的行和列元素互换后存放到另一个二维数组b中。请填空。

main()

{inta[2][3]={{1,2,3),{4,5}},b[3][2],i,j;

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

{for(j=0;j<30++)

______;

}

}

35.栈的3种基本运算是:入栈、退栈和______。

36.软件需求规格说明书应具有完整性、无歧义性、正确性、可验证性、可修改性等特性,其中最重要的是【】。

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

38.请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。

【】(double,double);

main()

{doublex,y;

scanf("%1f%1f",&x,&y);

printf("%1f\n",max(x,y));

}

doublemax(doublea,doubleB)

{return(a>b?a:b);}

39.以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。

FILE*myf;longfl;

myf=【】("test.t","rb");

fseek(myf,(),SEEK_END)fl+ftell(myf);

fclose(myf);

printf("%ld\n",fl);

40.下列程序用来将从键盘上输入的2个字符串进行比较,然后输出2个字符串中第1个不相同字符的ASCII码之差。例如,输入的2个字符串分别为abcdef和abceef,则输出为-1。

#include

main()

{charstr[100],str2[100],c;

inti,s;

printf("\ninputstring1:\n");gest(str1);

printf("\ninputstring2:\n");gest(str2);

i=0;

while((strl[i]==str2[i]&&(strl[i]!=【】))

i++;

s=【】;

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

三、1.选择题(20题)41.软件调试的目的是______。

A.发现错误B.改正错误C.改善软件的性能D.挖掘软件的潜能

42.下列关于线性链表的描述中正确的是()。

A.存储空间不一定连续,且各元素的存储顺序是任意的

B.存储空间不一定连续,且前件元素一定存储在后件元素的前面

C.存储空间必须连续,且各前件元素一定存储在后件元素的前面

D.存储空间必须连续,且各元素的存储顺序是任意的

43.若希望下列的程序运行后输出25,程序空白处的正确选项是()。

main()

{inti,j=50,a[]={7,4,10,5,8};

for()

j+=a[i];

primf("%d,j-40);

}

A.i=1;i<4;++iB.i=1;i<3;++iC.i=4;i>2;i--D.i=2;i<4;++i

44.以下数组定义中错误的是()。

A.intx[][3]={0};

B.intx[2][3]={{1,2},{3,4},{5,6}};

C.intx[][3]={{1,2,3},{4,5,6}};

D.intx[2][3]={1,2,3,4,5,6};

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

A.一个C程序可以有多个主函数

B.一个C语言的函数中只允许有一对花括号

C.C程序的书写格式是自由的,一个语句可以写在一行上,也可以写在多行内

D.在对C程序进行编译时,可以发现注释行中的拼写错误

46.有以下程序:#include<stdio.h>main(){chark;inti;for(i=1;i<3;i++){scanf("%c",&k);switch(k){case'0':printf("another\n");case'1':printf("number\n");}{}程序运行时,从键盘输入:01<回车>,程序执行后的输出结果是()。

A.anothernumber

B.anothernumberanother

C.anothernumber

D.numbernumber

47.C语言规定,在一个C程序中,main()函数的位置()。

A.必须在系统调用的库函数之后B.必须在程序的开始C.必须在程序的最后D.可以在任意位置

48.当前在数据库管理系统的研究方面,较活跃的是()

A.关系数据库B.网状数据库C.空间数据库D.层次数据库

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

A.一个逻辑数据结构只能有一种存储结构

B.数据的逻辑结构属于线性结构,存储结构属于非线性结构

C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率

D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率

50.若a是noat型变量,b是unsigned型变量,以下输入语句中,合法的是______。

A.scanf("%6.2f%d",&a,&b);

B.scanf("%f%n",&a,&b);

C.scaaf("%f%3o",&a,&b);

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

51.表达式'8'-'2'的值是()。

A.整数6B.字符6C.表达式不合法D.字符8

52.有以下程序

#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.1267B.1256C.1278D.1245

53.变量p为指针变量,若p=&a,下列说法不正确的有______。

A.&*p==&aB.*&a==aC.(*p)++==a++D.*(p++)==a++

54.下面不属于软件设计原则的是()。

A.抽象B.模块化C.自底向上D.信息隐蔽

55.设有定义:intn=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是()A.p=1;B.*q=2;C.q=p;D.*p=5;

56.设inti=2,j=1,k=3,则表达式i&&(i+j)&k|i+j的值是_______。

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

57.有以下函数:fun(char*a,char*b){while((*a!='\0')&&(*b!='\0')&&(*a==*b)){a++;b++;}return(*a-*b);}该函数的功能是()。

A.计算a和b所指字符串的长度之差

B.将b所指字符串复制到a所指字符串中

C.将b所指字符串连接到a所指字符串后面

D.比较a和b所指字符串的大小

58.若i、j已定义为int型,则以下程序段中内循环的总的执行次数是()for(i=5;i>0;i--)for(j=0;j<4;j++){…}

A.20B.24C.25D.30

59.在面向对象方法中,一个对象请求另一个对象为其服务的方式是通过发送()。

A.调用语句B.命令C.口令D.消息

60.软件需求分析一般应确定的是用户对软件的______。

A.功能需求B.非功能需求C.性能需求D.功能需求和非功能需求

四、选择题(20题)61.

62.以下关于结构化程序设计的叙述中正确的是()。

A.结构化程序使用goto语句会很便捷

B.在c语言中,程序的模块化是利用函数实现的

C.一个结构化程序必须同时由顺序、分支、循环三种结构组成

D.由三种基本结构构成的程序只能解决小规模的问题

63.有以下程序:

#include<stdio.h>

main

{inty=10;

while(y--);

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

}

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

A.y=0B.y=-1C.y=lD.while构成无限循环

64.以下描述中正确的是()。

A.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句

B.do-while循环由do开始,用while结束,在while(表达式.后面不能写分号

C.在do-while循环体中,是先执行一次循环,再进行判断

D.do-while循环中,根据情况可以省略while

65.

有以下程序

#include<stdio.h>

main

{inta=1,b=2,c=3,x;

x=(a^b)&C;printf("%d",x);

}

程序的运行结果是()。

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

66.若想定义int型变量a,b,c,d并都赋值为1,以下写法中错误的是()。

A.inta=b=c=d=1;

B.inta=1,b=1,c=1,d=1;

C.inta,b,c,d;a=b=c=d=1;

D.inta,b,c,d=1;a=b=c=d;

67.设pl和p2是指向一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是()。

A.k=*pl+*p2B.p2=k;C.pl=p2;D.k=*pl*(*p2.;

68.

69.

70.

71.

有以下程序段:

intx=3;

do

{printf("%d",x-=2);)

while(!(--x));

其输出结果是()。

A.1B.30C.1-2D.死循环

72.

73.在计算机中,算法是指()

A.加工方法B.解题方案的准确而完整的描述C.排序方法D.查询方法

74.有以下程序程序的运行结果是()。

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

75.有以下程序

structSTU

{

charname[10];

intnum;

intScore;

};

main()

{

structSTUs[5]={{"YangSan",20041,703},

{"LiSiGuo",20042,580},

{"WangYin",20043,680},

{"SunDan",20044,550},

{"Penghua",20045,537}},*p[5],*t;

inti,j;

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

p[i]=&s[i];

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

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

if(p[i]->Score>p[j]->Score)

{

t=p[i];

p[i]=p[j];

p[j]=t;

}

printf("%d%d\n",s[1].Score,p[1]->Score);

}

程序运行后的输出结果是

A.550550B.580550

C.680680D.580680

76.以下能定义为用户标识符的是()。

A.printfB.charC._8abcD.Void

77.

78.

79.有以下程序:

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

A.852B.963C.741D.875421

80.

五、程序改错题(1题)81.下列给定程序中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值。从第l项起,斐波拉契数列为:1,1,2,3,5,8,13,21,…例如,若给n输入7,则该项的斐波拉契数值为l3。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>longfun(intg){//****found****switch(g);{case0:return0;//****found****casel:case2:return1;}return(fun(g-1)+fun(g-2));}voidmain{longfib;intn;printf("Inputn:");scanf("%d",&n);printf("n=%d\n",n);fib=fun(n);printf("fib=%d\n\n",fib);}

六、程序设计题(1题)82.

参考答案

1.B

2.C\n面向对象的设计方法的基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。它虽强调模拟现实世界中的概念而不强调算法,但是它鼓励开发者在软件开发的过程中从应用领域的概念角度去思考。

\n

3.C

4.A程序首先使用typedef定义一种新的类型名PER,它包含3种数据成员:整数num,字符数组name,整数score。main函数使用PER定义结构体数组s,s包含两个PER类型的元素。然后调用函数fun将数组s传入。fun函数的功能是比较形参数组x的两个元素的score值的大小。若第1个元素的score值大于第2个元素的score值,就使用临时变量t将两个元素的score值交换。由于621大于585且x等价于实参s的指针,因此实参s的两个元素的score也会进行交换,执行完fun函数之后,for循环将两个元素输出。故本题答案为A选项。

5.A

6.C

7.B

8.A解析:在E-R图中,用三种图框分别表示实体、属性和实体之间的联系,其规定如下:用矩形框表示实体,框内标明实体名;用椭圆状框表示实体的属性,框内标明属性名;用菱形框表示实体间的联系,框内标明联系名。所以,选项A正确。

9.A

10.C题干中,整型指针变量Pk指向k,Pm指向m,所以右边表达式“*pk*(*pm)”的值为“k*m”,即2*4=8;左边表达式“*(p=&n)”先将变量n的地址赋给p,然后对p解引用,引用到n,将n的值赋为8。本题答案为C选项。

11.A

12.C

13.A数据管理技术发展的兰个阶段中,只有人工管理阶段,没有操作系统,没有管理数据的软件,数据处理方式是批处理。在文件系统阶段,操作系统中已经有了专门数据管理软件,一般称为文件系统。在数据库系统阶段,出现了统一管理数据的专门软件系统,即数据库管理系统。

14.C选项A的i

温馨提示

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

评论

0/150

提交评论