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

下载本文档

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

文档简介

2022年吉林省吉林市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.

2.

3.按照“先进先出”组织数据的数据结构是()。

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

4.有以下程序:main{inti,n=0:for(i=2;i<5;i++){do{if(i%3)continue:n++:}while(!i);n++:}printf("n=%d\n",n);}程序执行后输出结果是()。A.n=5B.n=2C.n=3D.n=4

5.下列正确的实型常量是()。

A.E3.4B.-12345C.2.2eO.8D.4

6.若有定义:floatx=1.5;inta=1.b=3.c=2;则正确的switch语句是()。A.

B.

C.

D.

7.有以下定义和语句

StructWorkers

{intnum;charname[20];charc;

struct

{intday;intmonth;intyear;}s;

};

StructWorkersW,*pe;

PW=&W;

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

B.W.yeaR=1980;

C.pW->yeaR=1980;

D.W.s.yeaR=1980;

8.程序流程图中带有箭头的线段表示的是()。

A.图元关系B.数据流C.控制流D.调用关系

9.具有10个叶子结点的二叉树中有()个度为2的结点。

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

10.下面程序的输出结果是#include<stdio.h>#include<string.h>main(){char*p1="abc",*p2="ABC",str[50]="xyz";strcpy(str+2,strcat(p1,p2));printf("%s\n",str);}

A.xyzabcABCB.zabcABCC.xyabcABCD.yzabcABC

11.设x是一个int型的,y的值为10,则表达式x&&y的值为()。

A.1B.0C.与x值相同D.与x值相反

12.当执行以下程序段时,()。x=-l:do{x=x*X;)while(!x);A.循环体将执行一次B.循环体将执行两次C.循环体将执行无限次D.系统将提示有语法错误

13.

14.线性表的顺序存储结构是一种()。

A.随机存取的存储结构B.顺序存取的存储结构C.索引存取的存储结构D.Hash存取的存储结构

15.下列程序的输出结果是()。#include<stdio.h>voidmain(){inta=0,b=1,c=2;if(++a>0‖++b>0)++c;printf("%d,%d,%d",a,b,c);}

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

16.下列合法的声明语句是()。

A.int_abc=50;

B.doubleint=3+5e2.5;

C.longdo=1L:

D.float3_asd=3e-3;

17.设数据结构A=(D,R),其中D={1,2,3,4},R={r},r={<1,2>,<2,3>,<3,4>,<4,1>},则数据结构A是()。

A.线性结构B.树形结构C.图状结构D.集合

18.下列叙述中,不属于软件需求规格说明书的作用的是()

A.便于用户,开发人员进行理解和交流

B.反映出用户问题的结构,可以作为软件开发工作的基础和依据

C.作为确认测试和验收的依据

D.便于开发人员进行需求分析

19.有以下程序main(){inti;for(i=0;i<3;i++)switch(i){case1:printf("%d",i);case2:printf("%d",i);default:printf("%d",i);}}执行后输出的结果是A.11122B.12C.12020D.120

20.以下叙述中正确的是()。

A.C语言语句必须在一行内写完

B.C语言程序中的每一行只能写一条语句

C.C语言程序中的注释必须与语句写在同一行

D.简单C语言语句必须以分号结束

二、2.填空题(20题)21.E-mail地址由用户名和域名两部分组成,这两部分的分隔符为【】。

22.以下程序的输出结果是()。#include<stdio.h>fun(){staticinta=0;a+=3;printf("%d",A);}main(){intcc;for(cc=1;cc<5;cc++)fun();printf("\n");}

23.下述程序的输出结果是【】。

#include<stdio.h>

voidmain()

{

charc1[20]="1234";

charc2[20]="5678";

char*p1,*p2;

p1=c1;

p2=c2;

while(*p1++)

while(*p1++=*p2++);

printf("%s,c1);

}

24.在计算机中,字符的比较是对它们的【】进行比较。

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.下列程序段中循环体的执行次数是______。

a=15;

b=0;

do{b+=2;a-=2+b;}while(a>=0);

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

main()

{

inta[]={2,4,6},*ptr=&a[0],x=8,y,z;

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

z=(*(ptr+y)<x)?*(ptr+y):x;

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

}

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

#include<stdio.h>

fun()

{inta=0;

a+=3;

printf("%d",A);

}

main()

{intcc;

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

fun();

printf("\n");

}

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

intm=13;

intfun(intx,inty)

{intm=3;

return(x*y-m);

}

main()

{inta=7,b=5;

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

}

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

#include<stdio.h>

main()

{intx=10,y=10,i;

for(i=0;x>8;y=++i)

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

}

31.以下程序的功能是:利用指针指向三个整型变量,并通过指针运算找出三个数中的最大值,输出到屏幕上。请填空。

main()

{intx,y,z,max,*px,*py,*pz,*pmax;

scanf("%d%d%d",&x,&y,&z);

px=&x;py=&y;pz=&z;pmax=&max;

【】;

if(*pmax<*py)*pmax=*py;

if(*pmax<*pz)*pmax=*pz;

printf("max=%d\n",max);}

32.定义charch="$";inti=1,j;执行j=!ch&&i++以后,i的值为______。

33.注释一般分为序言性注释和______注释。

34.若有下列定义:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;,则值为3的表达式为:______。

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

structexmp{charname[10];

intnumber;

};

structexmptest[3]={{"WangXi",1},{"QiYu",2},{"HuHua",3}};

main()

{printf("%c,%s\n",test[0].name[1],test[2].name+3);

}

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

37.数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结构、数据流、______和处理过程。

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

#include<stdio.h>

main()

{intfun();

fun();

}

fun()

{staticinta[4]={1,2,3,4);

inti:

for(i:0;i<4;i++)a[i]+=a[i];

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

printf("\n");

}

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

40.下列程序的输出结果是16.00,请填空。

#include<stdio.h>

main()

{inta=9,b=2;

floatx=【】,y=1.1,z;

z=a/2+b*x/y+1/2;

printf("%5.2f\n",z);

}

三、1.选择题(20题)41.已知二叉树BT的后后序遍历序列是dabec,中序遍历序列是debac,它的前序遍序列是______。

A.cedbaB.acbedC.decabD.deabc

42.下列有关数据库的描述,正确的是______。

A.数据库是一个DBF文件B.数据库是一个关系C.数据库是一个结构化的数据集合D.数据库是一组文件

43.下列语句中,不正确的是()

A.staicchara[]={"China"};

B.staticchara[]="Cina";

C.print{("%s”,a[0]);

D.scanf("%s”,a);

44.程序中若有如下说明和定义语句

Charfun(char*);

main()

{

char*s="one",a[5]={0}.(*f1)()=fun,ch;

}

以下选项中对函数fun的正确调用语句是

A.(*f1)(A);B.*fl(*s);C.fun(&A);D.ch=*fl(s);

45.以下程序的输出结果是______。#defineSQR(X)X*Xmain(){inta=16,k=2,m=1;a/=SQR(k/m)/SQR(k+m);printf("%d\n",A);}

A.16B.2C.9D.1

46.当执行下面的语句定义一维数组a并赋以初值后,此数组的元素中不正确的一个赋值结果是()staticinta[10]={0,1,2,3,4,5};

A.a[2]=1B.a[0]=0C.a[3]=3D.a[9]=0

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

A.软件测试应该由程序开发者来完成

B.程序经调试后一般不需要再测试

C.软件维护只包括对程序代码的维护

D.以上三种说法都不对

48.有以下程序:main(){inti,j,x=0;for(i=0;i<2;i++){x++;for(j=0;j<=3;j++){if(j%2)continue;x++;}x++;}printf("x=%d\n",x);}程序执行后输出结果是()。

A.x=4B.x=8C.x=6D.x=12

49.下列关于标识符的说法中错误的是

A.合法的标识符是由字母、数字和下划线组成

B.C语言的标识符中,大写字母和小写字母被认为是两个不同的字符

C.C语言的标识符可以分为三类,即关键字、预定义标识符和用户标识符

D.用户标识符与关键字不同时,程序在执行时将给出出错信息

50.数据存储和数据流都是______,仅仅是所处的状态不同。

A.分析结果B.事件C.动作D.数据

51.软件生命周期中花费时间最多的阶段是()

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

52.有以下程序:main(){inta[3][3],*p,i;p=&a[0][0];for(i=0;i<9;i++)p[i]=i+1;printf("%d\n",a[1][2]);}程序运行后的输出结果是

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

53.下列可用于C语言用户标识符的一组是

A.void,define,WORD

B.a3_b3,_123,Car

C.For,-abc,IFCase

D.2a,DO,sizeof

54.下面的程序段运行后,输出结果是

inti,j,x=0;

staticinta[8][8];

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

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

a[i][j]=2*i+j;

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

x+=a[i][j];

printf("%d",x);

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

55.以下程序中C的二进制值是()。chara=2,b=4,c;c=a^b>>2

A.11B.10100C.111100D.000l1000

56.当变量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)

57.结构化分析方法是一种面向______的需求分析方法。

A.对象B.数据结构C.控制流D.数据流

58.若有说明inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是______。

A.i=*p;B.*p=*&j;C.i=&j;D.i=**p;

59.下列叙述中正确的是A.线性表是线性结构B.栈与队列是非线性结构C.线性链表是非线性结构D.二叉树是线性结构

60.若定义了以下函数:voidf(……){……*p=(double*)malloc(10*sizeof(double));……}p是该函数的形参,要求通过p把动态分配存储单元的地址传回主调函数,则形参p的正确定义应当是()

A.double*pB.float**pC.double**pD.float*p

四、选择题(20题)61.

62.以下选项中,合法的一组c语言数值常量是()。

A.12.0Xa234.5e0

B.028.5e…30xf

C.1774el.50abe

D.0x8A10,0003.e5

63.

64.若有以下的说明和语句,则在执行for语句后,’(*(pt+1)+2)表示的数组元素是()。

intt[3][3],*pt[3],k;for(k=0;k<3;k++)pt[k]=&t[k][0];A.A.t[2][0]B.t[2][2]C.t[1][2]D.t[2][1]

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

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

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

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

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

66.下列关于栈叙述正确的是()。A.栈顶元素最先能被删除B.栈顶元素最后才能被删除C.栈底元素永远不能被删除D.栈底元素最先能被胍除

67.有以下计算公式

68.

69.

70.在面向对象方法中,实现信息隐蔽是依靠()。

A.对象的继承B.对象的多态C.对象的封装D.对象的分类

71.若有函数内部说明:inta[3][4];则数组a中各元素

A.可在程序的运行阶段得到初值0

B.可在程序的编译阶段得到初值0

C.不能得到确定的初值

D.可在程序的编译或运行阶段得到初值0

72.下述程序用来输出两个字符串前7个字符中对应相等的字符及其位置号,则程序空白上应该填写的是()。

#include<stdio.h>

main

{chars1[]="chinese",s2[]="japanese";

inti;

for(i=0;s1[i]='\0'&&s2[i]!='\0';i++)

if(s1[i]==s2[i]&&i<7)

_____________;

}A.A.putchar(s2[i]);putchar(i)

B.puts(s1[i],i)

C.printf("%c%d\n",s2[i],i)

D.printf("%C",s1[]);printf("%d\n",i)

73.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指()

A.模块间的关系B.系统结构部件转换成软件的过程描述C.软件层次结构D.软件开发过程

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

#include<stdio.h>

main

{inti;

for(i=1;i<=10,i++)

{if((i*i>=20)&&(i*i<=100))

break;

}

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

}A.A.49B.36C.25D.64

75.

76.

77.有以下语句:Charb[B];intC;,则正确的输入语句是()。

A.

B.

C.

D.

78.用数组名作为函数调用的实参,则传递给形参的是()。

A.数组中所有元素的值B.数组的第一个数据C.数组的首地址D.数组元素的个数

79.(28)在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是()

A.数据库系统

B.文件系统

C.人工管理

D.数据项管理

80.

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:从m个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。例如输入8名学生的成绩:987867563489.578.576.5则低于平均分的学生人数为3(平均分为72.187500)。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,规定输入的字符串中只包含字母和*号。请编写函数其功能是使字符串的前导*号不得多于n个,若多于n个,则删除多余的*号;若少于或等于n个,则不做处理。字符串中间和尾部的*号不删除。例如,字符串中的内容为“*******A*BC*DEF*G****”,若n的值为4,删除后,字符串中的内容应当是“****A*BC*DEF*G****”;若n的值为8,则字符串中的内容仍为“*******A*BC*DEF*G****”。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdio.h>#include<conio.h>voidfun(char*a,intn){}voidmain(){ chars[81];intn; printf(“Enterastring:\n”); gets(s); printf(“Entern:”); scanf(“%d”,&n); fun(s,n); printf(“Thestringafterdeleted:\n”); puts(s);}

参考答案

1.D

2.C

3.A队列是一种特殊的线性表,只允许在表的一端插八元素,在表的另一端删除元素,插入元素的一端叫“队尾”,删除元素的一端叫“队头”。先插入的元素先被删除,是按“先进先出”的原则组织数据的。

【知识拓展】“队列”和“栈”都是一种特殊的线性表。之所以称之为“队列”,其形式如“排队”。要讲究“先来后到”,先进先出,后进后出。

4.Dcontinue语句的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环的条件判定。

5.B解析:实型常量有两种书写形式:①小数形式,它由符号、整数部分、小数点及小数部分组成;②指数形式,由十进制小数形式加上指数部分组成,其形式为十进制小数e指数或十进制小数E指数。注:e或E后面的指数必须是整数,并且在e或E的前面必须有数字。本题中,选项A)中E的前面没有数字,因此错误。选项C)中0.8不是整数,因此错误。选项D)中4是整型常量而不是实型常量。

6.AB)选项中switch(n[nx);语句中不应该有最后的分号。switch(expr1),中的exp1不能用浮点类型或Iong类型,也不能为一个字符串,所以C)错误。case后面常量表达式的类型必须与switch后面表达式的类型一致,所以D)错误。

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

8.C解析:程序流程图是人们对解决问题的方法、思路或算法的一种描述。其中,图框表示各种操作的类型,图框中的文字和符号表示操作的内容,流程线表示操作的先后次序。带箭头的线段在数据流程图中表示数据流。带箭头的线段在程序流程图中表示控制流。题中给出的选项中,在图元之间用带有箭头的线段表示图元关系。在模块之间用带有箭头的线段表示调用关系。构成程序流程图的基本图符及含义:→或↓表示控制流;□表示加工步骤;

表示逻辑条件。

9.B

10.C解析:本题考查的重点是拷贝字符串——使用strcpy()函数,该函数的调用方式是:strcpy(字符数组,字符串)其中“字符串”可以是字符串常量,也可以是字符数组。函数的功能是:将“字符串”完整地复制到“字符数组”中,字符数组中原有内容被覆盖。

使用该函数时注意:①字符数组必须定义得足够大,以便容纳复制过来的字符串。复制时,连同结束标志‘\\0’一起复制。②不能用赋值运算符“=”将一个字符串直接赋值给一个字符数组,只能用strcpy()函数来处理。

另外,本题还考查连接字符串的strcat()函数,其调用方式是:strcat(字符数组,字符串)

功能是把“字符串”连接到“字符数组”中的字符串尾端,并存储于“字符数组”中。“字符数组”中原来的结束标志,被“字符串”的第一个字符覆盖,而“字符串”在操作中未被修改。

使用该函数时注意:①由于没有边界检查,编程者要注意保证“字符数组”定义得足够大,以便容纳连接后的目标字符串;否则,会因长度不够而产生问题。③连接前两个字符串都有结束标志‘\\0’,连接后“字符数组”中存储的字符串的结束标志‘\\0’被舍弃,只在目标串的最后保留一个‘\\0’。

11.C

12.Ado-wlfile的功能是先执行一次循环体,再判断条件是否成立,当x=-1时,执行do语句,x=x*x=1,接着执行while后的表达式,其值为0,退出循环,因此循环体只执行了一次。

13.A

14.A

15.C解析:本题考查if语句。先判断if语句的条件是否成立,++a=1>0,此条件成立,又因为是进行逻辑或运算,在已知其中一个运算对象为真的情况下,不必判断另外一个运算符的真假,即不进行++b操作,就可以直接得出整个表达式的值为逻辑1,执行下列的++c。

16.A解析:C语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线。另外C语言规定了一些专用的标识符,它们有着固定的含义,不能更改。int就是表达变量类型的标识符,它不能再用做变量名和函数名,所以选项B)不正确。do是C语言的一个关键字,也不能再用做变量名和函数名,所以选项C)不正确。

17.A

18.D解析:软件需求规格说明书SRS,SoftwareRequirementSpecification)是需求分析阶段的最后成果,是软件开发中的重要文档之一。它有以下几个方面的作用,①便于用户、开发人员进行理解和交流;②反映出用户问题的结构,可以作为软件开发工作的基础和依据;③作为确认测试和验收的依据。

19.A解析:当执行switch语句时,首先计算紧跟其后一对括号中的值,然后在语句体内寻找与该值吻合的case标号。若相等,则执行该标号后开始的各语句,包括在其后的所有case和default后的语句,直到switch语句体结束。

20.DC语句可以跨行来写,但是必须以分号结束,所以A选项错误。C语言程序中的一行可以有多条语句,所以B选项错误。C语言中的注释语句可以与原语句放在一行,也可以不放在一行,所以C选项错误。故本题答案为D选项。

21.@

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

23.1567815678解析:本题使用了双重while循环,外循环的循环条件是*p1++,即每次循环时让p1指向其后面的一个元素,而p1自增之前所指内容为0时循环结束。内循环的循环条件是*p1++=*p2++,即每次循环时让p1和p2指向其后面的一个元素,而将p2自增之前所指的元素复制到p1自增之前所指的地址中去,直到p2自增之前所指内容为0时循环结束。p1本来一开始是指向c1[0],由于外循环判断条件时让p1自增了,所以进入内循环时p1指向c1[1],而内循环将p2所指字符串复制到p1所指位置,所以内循环的结果是c1[1]、c1[2]、c1[3]、c1[4]、c1[5]分别被c2[0]、c2[1]、c2[2]、c2[3]、c2[4]改写成'5'、'6'、'7'、'8'、'\\0'。故程序输出的结果为15678。

24.ASCII码ASCII码解析:C语言中,字符也可以进行比较运算,并且是按照其ASCII码值进行的。

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

26.33解析:本题考查do…while语句形式:

do循环体

while表达式

首先执行循环体语句,然后检测循环控制条件表达式的值,若为真,则重复执行循环体语句,否则退出循环。第1次循环:b+=2,b=2,a-=2+b,a=11;第2次循环:b=4,a=5;第3次循环:b=6,a=-3,此时再判断循环条件不满足,退出循环。

27.66解析:条件运算符的优先级高于赋值运算符,因此本题先计算关系表达式(*ptr+y)<x)?*(ptr+y):x的值,再赋给变量z。当y=0时,*(ptr+y)=2,而x=8,(*(ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=2,所以z=2;当y-1时,*(ptr+y)=4,(*(ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=4,所以z=4;当y=2时,*(ptr+y)=6,(*(ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=6,所以z=6;循环结束。因此输出z的结果为6。

28.33333333解析:本题考查for循环,for(cc=1;cc<=4;cc++)表示循环4次,a+=3表示每次a的值增加3,但是子函数中没有将变量a定义为static类型,所以每次调用完子函数之后,变量a所做的改变都不能保存,这样在下一次调用子函数时,a的初值仍是0,所以不管调用多少次,子函数输出始终是3。

29.22解析:本题变量m既是外部变量(值是13),又是fun函数的局部变量(值为3)。函数fun(x*y-m)的值为7*5-3=32,在main函数中,fun(a,b)/m中的m应取外部变量的值13,因此输出2。

30.101091101091解析:for(表达式1;表达式2:表达式3)语句的功能是:首先计算表达式1的值,然后检测表达式2的值,若其值为真,则执行循环体语句,执行完毕后,再计算表达式3的值。然后再检测表达式2的值是否为真,若为真,继续执行循环体语句,若为假,则退出循环:第1次循环x>8成立,输出x=10,y=10后,x的值减1,i=1,执行y=++i操作,y的值变为1;判断条件还成立,输出x=9,y=1,然后x的值减1,循环条件不成立,则退出循环。

31.*pmax=*px*pmax=*px解析:首先将变量x的值放到max中,然后依次和变量y、z进行比较。若有比max大的数,将该数存放到max中,这样最后在max中的值就是x、y、z中的最大值。

32.用“&&”连接两个表达式时,若第1个表达式的值为“假”,则运算结果与第2个表达式无关,此时第2个表达式将不再进行计算。本题中第1个表达式“j=!ch”值为0,所以第2个表达式i++将不再进行计算,i的值为1。\r\n\r\n

33.功能性功能性解析:注释一般分为序言性注释和功能性注释。序言性注释通常位于每个程序的开头部分,给出程序的整体说明;功能性注释一般嵌在源程序体之中,主要描述其后的语句或程序做什么,

34.p+=2*(p++)p+=2,*(p++)解析:由题可知a[2]=3,因此只要使指针p指向a[3],然后再引用指针的值就可以了。

35.aua。a,ua。解析:test是结构体数组,每个元素均可看作是一个结构体变量,主函数将结构体数组元素test[0]中的name域下标为1的元素以字符形式输出,将结构体数组元素test[2]中的name域从地址name+3开始以字符串的形式输出。

36.软件开发

37.数据存储数据存储

38.24682,4,6,8解析:子函数fun()的功能是将数组a中的元素都自加一遍,然后仍然将结果存在原数组中,其实就是将数组a的每个元素都变为原来的2倍,然后输出。在主程序中首先通过intfun()定义了子函数fun(),然后再调用fun()。

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。

解析:本题以浮点格式输出z值,宽度为5,有2位小数。应该注意的是,两个整数运算结果仍为整数,如1/2的结果为0。本题可逐步求解:

16.00=9/2+2*x/1.1+1/2

16.00=4+2*x/1.1+0

12.00=2*x/1.1

所以,x的值为6.6。

41.A解析:二叉树BT的后序遍历序列为dabec,故BT的根结点为c:而BT的中序遍历序列是debac,即遍历序列中最后—个结点为跟结点,说明BT的右子树为空。由BT的的后序遍历序列和中序遍历序列可知BT的左子树(LST)的后序遍历序序列和序遍历序列分别为dabe和deba(树是递归定义的):故LST的根结点是e,在由LST的中序遍历序列可知其左子树为d。因此BT的前序遍历序列为cedba。

42.C解析:数据库(Database,简称DB)是数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享。数据库中的数据具有“集成”、“共事”之特点。

43.C

44.A解析:在C语言中函数名代表该函数的入口地址,因此可以定义一种指向函数的指针来存放这种地址.其定义形式为:

函数类型(*函数指针名)(函数参数列表);

其中,函数参数列表可以省略。通过函数指针调用函数的形式为:

(*函数指针)(函数参数列表)

调用时函数的参数列表是不能省略的。所以本题的正确答案为选项A。

45.B解析:C语言在预编译时遇到带实参的宏名,则按命令行中指定的字符串从左到右进行置换。在做这题时,也不妨运用置换法。得到a/=k+m*k+m/k+m*k+m=16/7=2。注:a为整型,所以在做除法,自动取整。

46.A

47.D解析:本题考核软件测试、软件调试和软件维护的概念。软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。软件测试具有挑剔性,测试不是为了证明程序是正确的,而是在设想程序有错误的前提下进行的,其目的是设法暴露程序中的错误和缺陷,就是说,测试是程序执行的过程,目的在于发现错误;一个好的测试在于能发现至今未发现的错误;一个成功的测试是发现了至今未发现的错误。由于测试的这一特征,一般应当避免由开发者测试自己的程序。所以,选项A的说法错误。

调试也称排错,目的是发现错误的位置,并改正错误,经测试发现错误后,可以立即进行调试并改正错误;经过调试后的程序还需进行回归测试,以检查调试的效果,同时也可防止在调试过程中引进新的错误。所以,选项B的说法错误。

软件维护通常有4类:为纠正使用中出现的错误而进行的改正性维护;为适应环境变化而进行的适应性维护;为改进原有软件而进行的完善性维护;为将来的可维护和可靠而进行的预防性维护。软件维护不仅包括程序代码的维护,还包括文档的维护。文档可以分为用户文档和系统文档两类。但无论是哪类文档,都必须与程序代码同时维护。只有与程序代码完全一致的文档才有意义和价值。所以,选项C的说法错误。

综上所述,选项A、B、C的说法都错误,所以,选项D为正确答案。

48.B解析:外循环的循环变量i从0递增到1会循环2次,内循环的循环变量j从0递增到3会循环4次。但是内循环中有一条if语句,每当j%2为真,即j为奇数时会跳过下面的x++;语句,所以4次内循环只有2次执行到x++;语句,再加上外循环中包含的2条x++语句,所以每次外循环会使x自增4次,2次外循环下来x的值为8。故应该选择B。

49.D解析:用户标识符与关键字相同时,程序在编译过程中将给出出错信息。注意:选项D)应该改为用户标识符与关键字相同,程序在编译时将给出出错信息。注意:合法的标识符第一个字符必须为字母或下划线。

50.D解析:数据流图有4种成分:源点或终点、处理、数据存储和哦数据流。数据存储是处于静止状态的数据,数据流是处于运动中的数据。

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

52.B解析:主函数中首先定义了一个3行3列的二维数组,定义了一个整型变量指向它,直接通过for循环给数组的每一个元素赋值,使得a[0][0]=1、a[0][1]=2、a[0][2]=3、a[1][0]=4、a[1][l]=5、a[1][2]=6、a[2]10]=7、a[2][1]=8、a[2][2]=9。所以,4个选项中选项B符合题意。

53.B解析:C语言规定标识符只能由字母、数字和下画线3种字符组成,且第一个字符必须为字母或下画线,排除选项C)和D);C语言中还规定标识符不能为C语言的关键字,而选项A)中void为关键字,故排除选项A)。

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

012

234

456

由于数组的下标是从0开始的,所以二维数组元素a[i][j]表示的是二维数组a的第i+1行、第j+1列对应位置的元素。

55.A

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

57.D

58.B解析:指针是—种用来存放变量地址的特殊变量。本题中指针变量p用于存放整型变量i的地址,改变*p的值即为改变i的值。又因为“&”和“*”两个运算符的优先级相同,按自右而左的方向结合,所以*&j运算选进行&j运算,得j的地址,再进行*运算,取所得地址里面的值,故*&j与j等价。

59.A根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。如果一个非空的数据结构满足下列两个条件:1,有且只有一根节结点,2,每一个结点最多有一个前件,也最多有一个后件,则称该数据结构为线性结构,又称线性表。所以线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。

60.C解析:从上面程序中对指针变量p值的定义可见,p所指单元的内容又是一个地址,这个地址是申请分配内存空间后的返回首地址,而分配的空间中又存放double型的数据,因此p是指向指针的指针变量,通过两层间接寻址对double型的数据操作,故正确答案应该是选项C。

61.A

62.AC语言中八进制整型常量的开头是数字0,十六进制整型常量的数字开头是Ox。C语言中的实型常量有两种表示形式:小数形式,小数形式表示的实型常量必须要有小数点;指数形式,以“e”或“E",后跟一个整数来表示以l0为底数的幂数,且规定字母e或E之前必须要有数字,且e或E后面的指数必须为整数。B选项中028错误,八透割中没有数字8。c选项中4el.5中e后面的指数不是整数:D选项中3.e5小数点后面缺少数字。

63.B

64.C从for循环可知pt是指向行的首地址的指针变量,因此由指针的表示方法可知:*(*(pt+1)+2)=pt[1][2]=t[1][2]。

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

66.A栈是先进后出的数据结构,因此栈顶元素最后入栈却最先被删除,栈底元素最先入栈却最后被删除,所以本题答案为A)。

67.A应该先判断x是正数还是负数,然后再调用sqn函数,A)选项开始没有判断,所以A)错误.

68.B

69.A

70.C解析:通常认为,面向对象方法具有封装性、继承性、多态性几大特点。就是这几大特点,为软件开发提供了一种新的方法学。

封装性:所谓封装就是将相关的信息、操作与处理融合在一个内含的部件中(对象中)。简单地说,封装就是隐藏信息。这是面向对象方法的中心,也是面向对象程序设计的基础。

继承性:子类具有派生它的类的全部属性(数据)和方法,而根据某一类建立的对象也都具有该类的全部,这就是继承性。继承性自动在类与子类间共享功能与数据,当某个类作了某项修改,其子类会自动改变,子类会继承其父类所有特性与行为模式。继承有利于提高软件开发效率,容易达到一致性。

多态性:多态性就是多种形式。不同的对象在接收到相同的消息时,采用不同的动作。例如,一个应用程序包括许多对象,这些对象也许具有同一类型的工作,但是却以不同的做法来实现。不必为每个对象的过程取一过程名,造成复杂化,可以使过程名复用。同一类型的工作有相同的过程名,这种技术称为多态性。

经过上述分析可知,在面向对象方法中,实现信息隐蔽是依靠对象的封装。正确答案是选项C。

71.C本题主要考查数组的定义及初始化。在对数组进行定义和初始化时,需要注意以下事项。

(1)数组的内存空间在编译时确定,定义数组时的n值只能使用常量,不能使用变量。

(2)定义数组时可以不标明数组元素的个数,而是通过赋初值的方式确定,编译系统将自动计算花括号内的数据数量作为数组的元素个数。

(3)数组初始化时,当初值的个数小于整型常量n时,编译系统会自动补0。一旦给定初值数超过n,编译系统将报错。

(4)初始化数组的元素类型,必须与定义数组时的类型一致。

(5)数组名记录了数组在内存中的首地址,其值不能更改。

(6)除字符数组外,不能直接用数组名对数组进行整体输入或输出。

本题中定义了一个3行4列的数组,但没有对其进行赋初值操作,可能我们会想在系统编译时会自动补0,这只是在初值个数小于数组定义大小的情况下的操作,如果没有进行赋初值操作,数组中的元素值是不能被确定的。因此,本题答案选C。

72.A本题考查输出函数putchar的功能,即把字符输出到标准输出设备;puts是把指向的字符串输出到标准输出设备。

73.B软件设计包括软件的结构设计、数据接口设计和过程设计。其中软件结构设计主要包括系统由哪些子系统构成,以及这些子系统之间的关系是怎样的,并将这些内容编写成文档;数据接口设计的任务是为每个子系统设计其与其他子系统间的接口,并编写成文档,这个接口要是一个无二义的接口,不需要子系统的操作知识就可以使用;过程设计是指系统结构部件转换成软件的过程描述。

74.C本题考查for循环及if语句。当执行到第一个满足(i*i>一20)&&(i*i<=100)这个条件的i出现时,break跳出循环,执行下列的printf语句。

75.B

76.A

77.Dscanf函数常用的格式控制中”s”代表输入的是字符串,”d”代表输入带符号的十进制整型数,根据语句charb[8];intc;可确定正确的输入语句是D)选项。

78.C数组名是一个指针常量,它的值就是数组的地址,也就是数组首元素地址。

79.A

80.D

81.(1)错误:t=<[3];

正确:t+=s[k];

(2)错误:*aver=&ave;

正确:*aver=ave;

【解析】由函数proe()可知,变量t中存放所有学生成绩之和。因此,“t=s[k];”应改为“t+=s[k];”。题目中要求将学生的平均成绩由形参aver返回主函数中,因此,“*aver=&ave;”应改为“*aver=ave;”。

82.voidfun(char*a,intn){ inti=0,k=0; char*p,*t; p=t=a; /*开始时,p与t同时指向数组的首地址*/ while(*t==‘*’) /*用k来统计前导星号的个数*/ {k++;t++;} if(k>n) /*如果k大于n,则使p的前导保留n个星号,其后的字符依次存入数组a中*/ { while(*p) { a[i]=*(p+k-n); i++; p++; } a[i]=‘\0’; /*在字符串最后加上字符串结束标志*/ }}字符串中前导*号不能多于n个,多余的应删除。首先需要通过while循环统计字符串前导*号的个数,然后通过if条件语句完成前导*号的个数和n的比较,如果前导*号多于n个,则需要把n个*号和其余字符重新保留。2022年吉林省吉林市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.

2.

3.按照“先进先出”组织数据的数据结构是()。

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

4.有以下程序:main{inti,n=0:for(i=2;i<5;i++){do{if(i%3)continue:n++:}while(!i);n++:}printf("n=%d\n",n);}程序执行后输出结果是()。A.n=5B.n=2C.n=3D.n=4

5.下列正确的实型常量是()。

A.E3.4B.-12345C.2.2eO.8D.4

6.若有定义:floatx=1.5;inta=1.b=3.c=2;则正确的switch语句是()。A.

B.

C.

D.

7.有以下定义和语句

StructWorkers

{intnum;charname[20];charc;

struct

{intday;intmonth;intyear;}s;

};

StructWorkersW,*pe;

PW=&W;

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

B.W.yeaR=1980;

C.pW->yeaR=1980;

D.W.s.yeaR=1980;

8.程序流程图中带有箭头的线段表示的是()。

A.图元关系B.数据流C.控制流D.调用关系

9.具有10个叶子结点的二叉树中有()个度为2的结点。

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

10.下面程序的输出结果是#include<stdio.h>#include<string.h>main(){char*p1="abc",*p2="ABC",str[50]="xyz";strcpy(str+2,strcat(p1,p2));printf("%s\n",str);}

A.xyzabcABCB.zabcABCC.xyabcABCD.yzabcABC

11.设x是一个int型的,y的值为10,则表达式x&&y的值为()。

A.1B.0C.与x值相同D.与x值相反

12.当执行以下程序段时,()。x=-l:do{x=x*X;)while(!x);A.循环体将执行一次B.循环体将执行两次C.循环体将执行无限次D.系统将提示有语法错误

13.

14.线性表的顺序存储结构是一种()。

A.随机存取的存储结构B.顺序存取的存储结构C.索引存取的存储结构D.Hash存取的存储结构

15.下列程序的输出结果是()。#include<stdio.h>voidmain(){inta=0,b=1,c=2;if(++a>0‖++b>0)++c;printf("%d,%d,%d",a,b,c);}

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

16.下列合法的声明语句是()。

A.int_abc=50;

B.doubleint=3+5e2.5;

C.longdo=1L:

D.float3_asd=3e-3;

17.设数据结构A=(D,R),其中D={1,2,3,4},R={r},r={<1,2>,<2,3>,<3,4>,<4,1>},则数据结构A是()。

A.线性结构B.树形结构C.图状结构D.集合

18.下列叙述中,不属于软件需求规格说明书的作用的是()

A.便于用户,开发人员进行理解和交流

B.反映出用户问题的结构,可以作为软件开发工作的基础和依据

C.作为确认测试和验收的依据

D.便于开发人员进行需求分析

19.有以下程序main(){inti;for(i=0;i<3;i++)switch(i){case1:printf("%d",i);case2:printf("%d",i);default:printf("%d",i);}}执行后输出的结果是A.11122B.12C.12020D.120

20.以下叙述中正确的是()。

A.C语言语句必须在一行内写完

B.C语言程序中的每一行只能写一条语句

C.C语言程序中的注释必须与语句写在同一行

D.简单C语言语句必须以分号结束

二、2.填空题(20题)21.E-mail地址由用户名和域名两部分组成,这两部分的分隔符为【】。

22.以下程序的输出结果是()。#include<stdio.h>fun(){staticinta=0;a+=3;printf("%d",A);}main(){intcc;for(cc=1;cc<5;cc++)fun();printf("\n");}

23.下述程序的输出结果是【】。

#include<stdio.h>

voidmain()

{

charc1[20]="1234";

charc2[20]="5678";

char*p1,*p2;

p1=c1;

p2=c2;

while(*p1++)

while(*p1++=*p2++);

printf("%s,c1);

}

24.在计算机中,字符的比较是对它们的【】进行比较。

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.下列程序段中循环体的执行次数是______。

a=15;

b=0;

do{b+=2;a-=2+b;}while(a>=0);

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

main()

{

inta[]={2,4,6},*ptr=&a[0],x=8,y,z;

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

z=(*(ptr+y)<x)?*(ptr+y):x;

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

}

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

#include<stdio.h>

fun()

{inta=0;

a+=3;

printf("%d",A);

}

main()

{intcc;

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

fun();

printf("\n");

}

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

intm=13;

intfun(intx,inty)

{intm=3;

return(x*y-m);

}

main()

{inta=7,b=5;

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

}

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

#include<stdio.h>

main()

{intx=10,y=10,i;

for(i=0;x>8;y=++i)

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

}

31.以下程序的功能是:利用指针指向三个整型变量,并通过指针运算找出三个数中的最大值,输出到屏幕上。请填空。

main()

{intx,y,z,max,*px,*py,*pz,*pmax;

scanf("%d%d%d",&x,&y,&z);

px=&x;py=&y;pz=&z;pmax=&max;

【】;

if(*pmax<*py)*pmax=*py;

if(*pmax<*pz)*pmax=*pz;

printf("max=%d\n",max);}

32.定义charch="$";inti=1,j;执行j=!ch&&i++以后,i的值为______。

33.注释一般分为序言性注释和______注释。

34.若有下列定义:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;,则值为3的表达式为:______。

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

structexmp{charname[10];

intnumber;

};

structexmptest[3]={{"WangXi",1},{"QiYu",2},{"HuHua",3}};

main()

{printf("%c,%s\n",test[0].name[1],test[2].name+3);

}

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

37.数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结构、数据流、______和处理过程。

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

#include<stdio.h>

main()

{intfun();

fun();

}

fun()

{staticinta[4]={1,2,3,4);

inti:

for(i:0;i<4;i++)a[i]+=a[i];

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

printf("\n");

}

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

40.下列程序的输出结果是16.00,请填空。

#include<stdio.h>

main()

{inta=9,b=2;

floatx=【】,y=1.1,z;

z=a/2+b*x/y+1/2;

printf("%5.2f\n",z);

}

三、1.选择题(20题)41.已知二叉树BT的后后序遍历序列是dabec,中序遍历序列是debac,它的前序遍序列是______。

A.cedbaB.acbedC.decabD.deabc

42.下列有关数据库的描述,正确的是______。

A.数据库是一个DBF文件B.数据库是一个关系C.数据库是一个结构化的数据集合D.数据库是一组文件

43.下列语句中,不正确的是()

A.staicchara[]={"China"};

B.staticchara[]="Cina";

C.print{("%s”,a[0]);

D.scanf("%s”,a);

44.程序中若有如下说明和定义语句

Charfun(char*);

main()

{

char*s="one",a[5]={0}.(*f1)()=fun,ch;

}

以下选项中对函数fun的正确调用语句是

A.(*f1)(A);B.*fl(*s);C.fun(&A);D.ch=*fl(s);

45.以下程序的输出结果是______。#defineSQR(X)X*Xmain(){inta=16,k=2,m=1;a/=SQR(k/m)/SQR(k+m);printf("%d\n",A);}

A.16B.2C.9D.1

46.当执行下面的语句定义一维数组a并赋以初值后,此数组的元素中不正确的一个赋值结果是()staticinta[10]={0,1,2,3,4,5};

A.a[2]=1B.a[0]=0C.a[3]=3D.a[9]=0

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

A.软件测试应该由程序开发者来完成

B.程序经调试后一般不需要再测试

C.软件维护只包括对程序代码的维护

D.以上三种说法都不对

48.有以下程序:main(){inti,j,x=0;for(i=0;i<2;i++){x++;for(j=0;j<=3;j++){if(j%2)continue;x++;}x++;}printf("x=%d\n",x);}程序执行后输出结果是()。

A.x=4B.x=8C.x=6D.x=12

49.下列关于标识符的说法中错误的是

A.合法的标识符是由字母、数字和下划线组成

B.C语言的标识符中,大写字母和小写字母被认为是两个不同的字符

C.C语言的标识符可以分为三类,即关键字、预定义标识符和用户标识符

D.用户标识符与关键字不同时,程序在执行时将给出出错信息

50.数据存储和数据流都是______,仅仅是所处的状态不同。

A.分析结果B.事件C.动作D.数据

51.软件生命周期中花费时间最多的阶段是()

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

52.有以下程序:main(){inta[3][3],*p,i;p=&a[0][0];for(i=0;i<9;i++)p[i]=i+1;printf("%d\n",a[1][2]);}程序运行后的输出结果是

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

53.下列可用于C语言用户标识符的一组是

A.void,define,WORD

B.a3_b3,_123,Car

C.For,-abc,IFCase

D.2a,DO,sizeof

54.下面的程序段运行后,输出结果是

inti,j,x=0;

staticinta[8][8];

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

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

a[i][j]=2*i+j;

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

x+=a[i][j];

printf("%d",x);

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

55.以下程序中C的二进制值是()。chara=2,b=4,c;c=a^b>>2

A.11B.10100C.111100D.000l1000

56.当变量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)

57.结构化分析方法是一种面向______的需求分析方法。

A.对象B.数据结构C.控制流D.数据流

58.若有说明inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是______。

A.i=*p;B.*p=*&j;C.i=&j;D.i=**p;

59.下列叙述中正确的是A.线性表是线性结构B.栈与队列是非线性结构C.线性链表是非线性结构D.二叉树是线性结构

60.若定义了以下函数:voidf(……){……*p=(double*)malloc(10*sizeof(double));……}p是该函数的形参,要求通过p把动态分配存储单元的地址传回主调函数,则形参p的正确定义应当是()

A.double*pB.float**pC.double**pD.float*p

四、选择题(20题)61.

62.以下选项中,合法的一组c语言数值常量是()。

A.12.0Xa234.5e0

B.028.5e…30xf

C.1774el.50abe

D.0x8A10,0003.e5

63.

64.若有以下的说明和语句,则在执行for语句后,’(*(pt+1)+2)表示的数组元素是()。

intt[3][3],*pt[3],k;for(k=0;k<3;k++)pt[k]=&t[k][0];A.A.t[2][0]B.t[2][2]C.t[1][2]D.t[2][1]

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

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

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

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

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

66.下列关于栈叙述正确的是()。A.栈顶元素最先能被删除B.栈顶元素最后才能被删除C.栈底元素永远不能被删除D.栈底元素最先能被胍除

67.有以下计算公式

68.

69.

70.在面向对象方法中,实现信息隐蔽是依靠()。

A.对象的继承B.对象的多态C.对象的封装D.对象的分类

71.若有函数内部说明:inta[3][4];则数组a中各元素

A.可在程序的运行阶段得到初值0

B.可在程序的编译阶段得到初值0

C.不能得到确定的初值

D.可在程序的编译或运行阶段得到初值0

72.下述程序用来输出两个字符串前7个字符中对应相等的字符及其位置号,则程序空白上应该填写的是()。

#include<stdio.h>

main

{chars1[]="chinese",s2[]="japanese";

inti;

for(i=0;s1[i]='\0'&&s2[i]!='\0';i++)

if(s1[i]==s2[i]&&i<7)

_____________;

}A.A.putchar(s2[i]);putchar(i)

B.puts(s1[i],i)

C.printf("%c%d\n",s2[i],i)

D.printf("%C",s1[]);printf("%d\n",i)

73.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指()

A.模块间的关系B.系统结构部件转换成软件的过程描述C.软件层次结构D.软件开发过程

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

#include<stdio.h>

main

{inti;

for(i=1;i<=10,i++)

{if((i*i>=20)&&(i*i<=100))

break;

}

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

}A.A.49B.36C.25D.64

75.

76.

77.有以下语句:Charb[B];intC;,则正确的输入语句是()。

A.

B.

C.

D.

78.用数组名作为函数调用的实参,则传递给形参的是()。

A.数组中所有元素的值B.数组的第一个数据C.数组的首地址D.数组元素的个数

79.(28)在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是()

A.数据库系统

B.文件系统

C.人工管理

D.数据项管理

80.

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:从m个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。例如输入8名学生的成绩:987867563489.578.576.5则低于平均分的学生人数为3(平均分为72.187500)。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,规定输入的字符串中只包含字母和*号。请编写函数其功能是使字符串的前导*号不得多于n个,若多于n个,则删除多余的*号;若少于或等于n个,则不做处理。字符串中间和尾部的*号不删除。例如,字符串中的内容为“*******A*BC*DEF*G****

温馨提示

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

评论

0/150

提交评论