2021-2022年山东省济南市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第1页
2021-2022年山东省济南市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第2页
2021-2022年山东省济南市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第3页
2021-2022年山东省济南市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第4页
2021-2022年山东省济南市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年山东省济南市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.已定义c为字符型变量,则下列语句中正确的是()。

A.c='97'B.c="97"C.c=97D.c="a"

2.有以下程序:#include<stdio.h>main(){inti,s=0,t[]=(1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);printf(“%d\n”,s);}程序的运行结果是()。

A.20B.25C.45D.36

3.以下不正确的叙述是()。

A.在C程序中,逗号运算符的优先级最低

B.在C程序中,APH和aph是两个不同的变量

C.若a和b类型相同,在执行了赋值表达式a=b后b中的值将放人a中,而b中的值不变

D.当从键盘输入数据时,对整型变量只能输入整型数值,对实型变量只能输入实型数值

4.执行下面的程序段后,变量k中的值为()。intk=3,s[2];s[0]=k;k=s[1]*10;

A.不定值B.33C.30D.10

5.设有定义“doublex=5.16894;”,则语句“printf(“%lf\n”,(int)(x*1000+0.5)/1000.);”的输出结果是()。

A.5.16900B.5.16800C.0.00000D.输出格式说明符与输出项不匹配,产生错误信息

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

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

7.以下能正确定义一维数组的选项是A.intnum[];

B.#defineN100intnum[N];

C.intnum[0..100];

D.intN=100;intnum[N];

8.以下关于算法的叙述中错误的是()。

A.算法可以用伪代码、流程图等多种形式来描述

B.一个正确的算法必须有输入

C.一个正确的算法必须有输出

D.用流程图描述的算法可以用任何一种计算机高级语言编写成程序代码

9.一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1<=i<=n)个元素是()

A.不确定B.n-i+1C.iD.n-i

10.以下程序的输出结果是()。unionmyun{struct{intx,y,z;)u;intk:}a;main{a.u.x=4;a.u.y=5;a.u.z=6;k=0;printf(%d\n",a.u.x);}A.4B.5C.6D.0

11.以下各选项中的代码段执行后,变量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;

12.

13.以下符号中不能作为标识符的是()。A._256B.voidC.scanfD.Struct

14.下列语句组中正确的是()。

A.char*s;s={“BOOK!”};

B.char*s;s=“BOOK!”;

C.chars[10];s=“BOOK!”;

D.chars[];s=“BOOK!”;

15.下面程序段的输出结果是______。char*s="abcde";s+=2;printf("%d",s);

A.cdeB.字符'c'C.字符'c'的地址D.无确定的输出结果

16.用树形结构表示实体之间联系的模型的是

A.关系模型B.网状模型C.层次模型D.以上三个都是

17.顺序结构的本质特点是()。

A.数据元素存储在地址连续的内存空间

B.数据元素紧邻

C.数据元素在内存中的相对位置表示数据之间的逻辑关系

D.不使用指针

18.以下定义数组的语句错误的是()。

A.intnum[]={1,2,3,4,5,6};

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

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

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

19.由两个栈共享一个存储空间的好处是______。

A.减少存取时间,降低下溢发生的几率

B.节省存储空间,降低上溢发生的几率

C.减少存取时间,降低上溢发生的几率

D.节省存储空间,降低下溢发生的几率

20.若有定义inta=5,b=7;,则表达式a%=(b%2)运算后,a的值为()。

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

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

22.下面pi函数的功能是根据以下公式返回满足精度要求的π的值。请根据以下算法要求补足所缺语句。

doublepi(doubleeps)

{doubles=0.0,t=1.0;

intn;

for(【】;t>eps;n++)

{s+=t;

t=n*t/(2*n+1);

}

return(2.0*【】);

}

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

main()

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

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

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

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

}

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

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

main()

{unsignedshorta=65536;intb;

printfC%d\n",b=a);

}

26.对数组中的元素值进行排序。请填空。

#include<stdio.h>

main()

{inta[]={2,4,15,3,17,5,8,23,9,7,11,13,}i,j,k;

for(k=0;k<12;k++)

for(i=k;i<12;i++)

if(a[i]>【】)

{j=a[i];

a[i]=【】;

【】=j;}

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

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

printf("\n");

}

27.以下程序的功能是:输出100以内(不含100)能被3整除且个位数为6的所有整数,请填空。

#include<stdio.h>

main()

{inti,j

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

{j=i*10+6;

if(【】)continue:

Printf("%d”",j);

}

}

28.若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是【】。

intw[10]={23,54,10,33,47,98,72,80,61),*p=w;

29.若变量x、y已定义为int类型且X的值为33,y的值为3,请将输出语句printf((),x/y);补充完整,使其输出的计算结果形式为:x/y=11。

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

charstr口="ABCD",*p=str;

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

31.设有下列程序:

#include<stdio.h>

#include<string.h>

main()

{inti;

chars[10],t[10];

gets(t);

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

{gets(s);

if(strcmp(t,s)<0)strcpy(t,s);

}

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

}

程序运行后,从键盘上输入(<CR>代表回车符):DEF<CR>BADEP<CR>QTHRG<CR>,则程序的输出结果是______。

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

voidfun()

{

staticinta=0;

a+=2;printf("%d",A);

}

main()

{intcc;

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

printf("\n");

}

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

34.C语言用于结构化程序设计的3种基本结构是______、选择结构和循环结构。

35.设有下列宏定义:#defineA2

#defineBA+3

则执行赋值语句;t=B*2;t为int型变量后的值是______。

36.下面程序的运行结果是:【】。

intf(inta[],intn)

{if(n>1)returna[0]+f(&a[1],n-1);

elselreturna[0];

}

main()

{intaa[3]={1,2,3},s;

s=f(&aa[0],3);printf("%d\n",s);

}

37.设i,j,k均为int型变量,则执行完下面的for语句后,k的值为【】。

for(i=0,j=10;i<=j;i++,j--)k=i+j;

38.下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。

#include<stdio.h>

main()

{inti,j;

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

{j=i*10+6;

if(【】)continue;

printf("%d",j);

}

}

39.设有以下程序,为使之正确运行,请在横线中填入应包含的命令行。(注:try_me()函数在a:\myfile.txt中有定义。)

______

main()

{printf("\n");

try_me();

printf("\n");}

40.测试的目的是暴露错误,评价程序的可靠性;而______的目的是发现错误的位置并改正错误。

三、1.选择题(20题)41.以下4组用户定义标识符中,全部合法的一组是()A._mainencludesin

B.If-maxturbo

C.txtREAL3COM

D.intk_2_001

42.有以下程序main(){intm=12,n=34;printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);)程序运行后的输出结果是

A.12353514B.12353513C.12343514D.12343513

43.有以下程序:fun(intx){intp;if(x==0||x==1)return(3);p=x-fun(x-2);returnp;}main(){printf("%d\n",fun(7));}执行后的输出结果是()。

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

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

A.C程序是以函数为基本单位的,整个程序由函数组成

B.C语言程序的一条语句可以写在不同的行上

C.C程序的注释行对程序的运行功能不起任何作用,所以注释应该尽可能少写

D.C程序的每个语句都以分号结束

45.下列程序的输出结果是______。#includesub1(chara,charb){charc;c=a;a=b;b=c;}sub2(char*a,charb){charc;c=*a;*a=b;b=c;}sub3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}{chara,b;a='A';b='B';sub3(&a,&b);putchar(a);putchar(b);a='A';b='B';sub2(&a,b);putchar(a);prtchar(b);a='A';b='B';sub1(a,b);putchar(a);putchar(b);}

A.BABBABB.ABBBBAC.BABABAD.BAABBA

46.以下程序的结果是______。inta,b;voidfun(){a=100;b=200;}main(){inta=5;b=7fun();printf("%d%d\n",a,b);}

A.100200B.57C.200100D.75

47.下列函数定义中,会出现编译错误的是______。

A.max(intx,inty,int*z){*z=x>y?x:y;}z=x>y?x:y;

B.intmax(intx,y){intz;returnz;}

C.max(intx,inty){intz;z=x>y?x:y;return(z);}

D.intmax(intx,inty){returnx>y?x:y;}

48.下列描述中正确的是()。

A.软件工程只是解决软件项目的管理问题

B.软件工程主要解决软件产品的生产率问题

C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则

D.软件工程只是解决软件开发中的技术问题

49.下列对于软件测试的描述中正确的是()。

A.软件测试的目的是证明程序是否正确

B.软件测试的目的是使程序运行结果正确

C.软件测试的目的是尽可能多地发现程序中的错误

D.软件测试的目的是使程序符合结构化原则

50.执行下面的语句后,表达式++x>b?x:b-->++x?++b:x的值为______。intx=5,b=5;

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

51.在c语言中,变量的隐含存储类别是()。

A.autoB.staticC.externD.无存储类别

52.下列程序执行后的输出结果是______。#defineMA(x)x*(x-1)main(){inta=1,b=2;printf("%d\n",MA(1+a+b));}

A.6B.8C.10D.12

53.有以下程序

voidf(int*q)

{inti=0;

for(;i<5;i++)(*q)++;

}

main()

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

f(a);

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

}

程序运行后的输出结果是

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

54.设有定义:intk=1,m=2;noatf=7;则下列选项中错误的表达式是()。

A.k=k>=kB.-k++C.k%int(f)D.k>=f>=m

55.已知字符'A'的ASCII码值是65,字符变量c1的值是'A',c2的值是'D'。执行语句printf("%d,%d",c1,c2-2);后,输出结果是

A.A,BB.A,68C.65,66D.65,68

56.软件生命周期中花费费用最多的阶段是

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

57.

A.(a+b)*h/2B.(1/2)*(a+b)*hC.(a+b)*h*1/2D.h/2*(a+b)

58.结构化程序设计主要强调的是

A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序易读性

59.以下程序运行后,输出结果是#definePT5.5#defineS(x)PT*x*x#include<stdio.h>main(){inta=1,b=2;printf("%4.1f\n",S(a+b));}

A.49.5B.9.5C.22D.45

60.下列关系运算的叙述中,正确的是()。A.A.投影、选择、连接是从二维表行的方向进行的运算

B.并、交、差是从二维表的列的方向来进行运算

C.投影、选择、连接是从二维表列的方向进行的运算

D.以上3种说法都不对

四、选择题(20题)61.设有定义:intx[2][3];,则以下关于二维数组X的叙述错误的是()。

A.x[0]可看做是由3个整型元素组成的一维数组

B.x[0]和x[l]是数组名,分别代表不同的地址常量

C.数组X包含6个元素

D.可以用语句x[o]=0;为数组所有元素赋初值0

62.(54)在下列几种排序方法中,要求内存量最大的是______。

A.插入排序

B.选择排序

C.快速排序

D.归并排序

63.若变量a、i已正确定义,且i已正确赋值,合法的语句是()。A.A.a==1B.++iC.a=a++=5D.a=int(i)

64.设有图书(图书编号,书名,第一作者,出版社.、读者(借书证号,姓名,单位,职称.和借阅(借书证号,图书编号,借书日期,还书日期.三张表,则表借阅的关键字(键或码.为()。

A.借书证号,图书编号

B.图书编号,借书日期

C.借书日期,还书日期

D.借书证号,借书日期

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

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

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

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

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

66.以下程序的输出结果是()。main(){intRum=0;while(num<=2){num++;printf(”%d\n”,num);}}A.1B.1C.1234D.1223

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

68.

69.有以下程序:

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

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

70.在长度为n的有序线性表中进行顺序查找,最坏情况下需要比较的次数是

A.O(n)B.O(n2)C.O(log2n)D.O(nlog2n)

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

charfun(char*);

main()

{

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

……

}

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

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

72.以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。

#include<stdio.h>

#defineN10

voidfun(intx[N])

{inti=0;

while(i<N)scanf("%d",

);

}

在程序中下划线处应填入的是()A.x+i

B.&x[i+1]

C.x+(i++)

D.&x[++i]

73.

74.

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

voidfun(int*a,inti,inti)

{intt;

if(i<i)

{t=a[i[;a[i]=a[j];a[j]一t;

i++;j--;fun(a,i,j);

}

}

main

{intK[]={2,6,1,8},i;

fun(x,0,3);

for(i=0;i<1;i++)printf("%2d",x[i]);

printf("\n");

}

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

75.设有以下程序段:

要求输入字符串给结构体变量rec的title成员,错误的输入语句是()。

A.seanf(”%s”Ptrtitle);

B.scanf(”%s”,rec.title);

C.scanf(’’%s”,(*pu).title);

D.scanf(”%s”,ptr->title);

76.设有定义"doublea[10],*s=a;",以下能够代表数组元素a[3]的是()。

A.(*s)[3]B.*(s+3)C.*s[3]D.*s+3

77.if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是()。A.可以是任意合法的数值B.必须是整数值C.必须是正数D.必须是逻辑值

78.

79.

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

main

{charw[][10]={"ABCD","EFGH","IJKL","MNOP"),K;

for(k=1;k<3;k++)printf("%s\n",w[k]);A.A.ABCDFGHKLB.ABCDEFGUC.EFGJKOD.EFGHUKL

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:求整数X的Y次方的低3位值。例如,整数6的5次方为7776,此值的低3位值为776。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.规定输入的字符串中只包含字母和*号。编写函数fun(),其功能是:删除字符串中所有的*号。编写函数时,不得使用C语言提供的字符串函数。例如,字符串中的内容为“****A*BC*DEF*G****”,删除后,字符串中的内容应当是“ABCDEFG”。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入编写的若干语句。试题程序:

参考答案

1.C解析:本题考核的知识点是字符型变量的基本概念。用单引号括起来的一个字符称为字符常量,而选项B和选项D中用的是双引号,而用双引号括起来的字符为字符串常量,故选项B和选项D不正确。因为在C语言中,字符常量在存储时,并不是把该字符本身放到内存单元中去,而是将该字符的相应的ASCII代码放到存储单元中,所以C语言使字符型数据和整形数据之间可以通用,选项C正确.而选项A中,给字符型变量赋值时只能赋一个字符,而9,7作为字符时为两个字符且必须分别为单引号括起来,故选项A不正确,所以,4个选项中选项C符合题意。

2.B程序的功能为统计1~9这9个数中的奇数和。C语言中规定数组名代表数组的首地址,也就是第1个元素的地址,因此“*(t+i)”代表数组的第i+1个元素。程序的运行结果是1+3+5+7+9=25。故本题答案为B选项。

3.D

4.A解析:定义数组时,没有对s[1]进行初始化,因此s[1]的值不确定,所以k=s[1]*10的值也不确定。

5.A表达式“(int)(x*1000+0.5)”使用了强制转换,其计算结果为5169,(5169/1000.0)=5.169。所以“printf(“%lf\\n”,5.169);”结果是5.16900。故本题答案为A选项。

6.C

7.B解析:选项A定义数组时省略了长度,而C语言中规定,只有在定义并同时进行初始化时,数组的长度才可以省略,数组的长度为初始化时候的成员个数,故选项A错误;在C语言中规定,数组的长度必须是一个整数或整型常量表达式,故选项C不正确:定义时数组的长度不能使用变量表示,故选项D不正确,所以,4个选项中选项B符合题意。

8.B【答案】B

【知识点】算法描述

【解析】一个算法应该有0个或多个输入,但是必须有一个或多个输出。

9.B

10.D因为a是结构体变量,最后一次输入的值为结构体中的值,即a中的任何一个值都为0。

11.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选项。

12.A

13.B

14.BA选项去掉花括号后,赋值正确;C选项和D选项应在定义时赋初值,因为数组名相当于常量,不能重新赋值。故本题答案为B选项。

15.C解析:语句s+=2;使指针指向字符'c',此时s中保存的便是字符'c'的地址。

16.C解析:在数据库系统中,由于采用的数据模型不同,相应的数据库管理系统(DBMS)也不同。目前常用的数据模型有三种:层次模型、网状模型和关系模型。在层次模型中,实体之间的联系是用树结构来表示的,其中实体集(记录型)是树中的结点,而树中各结点之间的连线表示它们之间的关系。因此,本题的正确答案是C。

17.C

18.B二维数组的定义有3种形式,第一种是分行为两位数组赋值,即intnum[]={{12},{3,4},{5,6}},第二种是按照数组排列顺序进行赋值,即intnum[]={1,2,3,4,5,6},第三种为对部分元素赋初值,即intnum[]={{1,2}{},{3,4},{5,6}},所以错误的为B。

19.B解析:常常一个程序中要用到多个栈,为了不发生上溢错误,就必须给每个栈分配一个足够大的存储空间。但实际中,很难准确地估计,若每个栈都分配过大的存储空间,势必造成系统空间紧张;若让多个栈共用一个足够大的连续存储空间,则可利用栈的动态特性使他们的存储空间互补。

20.A解析:本题考查'%'运算符的使用。运算符'%'要求两个运算对象都为整型,其结果是整数除法的余数。本题中表达式ao%=(b%2)等价于a=a%o(b%2)=5%(7%2)=5%1=0。

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

22.n=1s

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

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

25.00解析:对于一个unsignedshort来说,它能取的最大值是65535。这里给a赋值65536,已经超出了它的取值范围,这样它的高位将被截掉,只把低位赋给它(全零)。所以a的值实际为0。

26.a[k]a[k]a[k]

27.i<10或i<9j%3!=0或j%3i<10或i<9\r\nj%3!=0或j%3解析:程序中的j用于存放符合条件的整数,j=i,10+6;求得个位数为6的整数,由此可得出程序的循环次数为i<10,所以[15]处填i<10。然后通过if语句判断整数是否能被3整除,若不能则继续下一次循环,若能则输出该整数,所以[16]处填j%3!=0。

28.p[5]或*(p+5)p[5]或*(p+5)解析:98是数组w的第5个元素(最开始的为第0个),而通过*p=w已经将p指向了数组w,要想不移动指针p而引用98,可以有以下两种写法:p[5]、*(p+5)。

29.x/y=%dx/y=%d解析:本题考查prinff语句的输出格式。printf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。在编写程序时经常会用到此函数。printf()函数的调用格式为:printf('<格式化字符串>”,<参最表>)其中,格式化字符串包括两部分内容。一部分足正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以“%”开始,后跟一个或几个规定字符,用来确定输出内容格式。参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用“,”分开,且顺序一一

30.6868解析:本题考查如何用指针引用数组元素。本题先定义了一个指向字符型数组str的指针p,指针p指向数组str的首地址,p+3将指针指向str[3],*(p+3)指的是字符“D”,输出时是以“%d,格式输出的,即输出其相应ASCII码值68。

31.函数strcmp(t,s)用来比较t和s所指字符串的大小,若t>s,则函数值大于0;若t=s,则函数值等于0;若t<s,则函数值小于0。函数strcpy(t,s)的功能:把字符数组s所指字符串的内容复制到字符数组t所指存储空间中。

本题中,t[10]='CDEF'。第一次循环,s[10]='BADEF',if语句的控制条件strcmp(t,s)<0不成立,接着执行第二次循环,s='QTHRG',if语句的控制条件strcmp(t,s)<0成立,执行下列的语句,将字符数组s所指字符串的内容复制到字符数组t

32.246246解析:static声明的外部变量只限于被本文件引用,而不能被其他文件引用。用static来声明一个变量的作用有:①对局部变量用static声明,则为该变量分配的空间在整个程序执行期间始终存在;②全部变量用static声明,则该变量的作用域只限于本文件模块(即被声明的文件中)。

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

34.顺序结构顺序结构解析:结构化程序有3种摹本结构,即顺序结构、选择结构(包括if语句和switch语句)和循环结构(包括for语句、while语句、do…while语句)。

35.88解析:本题考查带参数的宏定义及相关运算.运算过程为:t=B*2=A+3*2=2+3*2=8。

36.66解析:经过分析将递归函数写成其数学表达式如下:

f(&a,n)=a[0]+f(&a[1],n-1)n>1

f(&a,n)=a[0]n=1

本题中定义了一个长度为3的数组aa并初始化。接着调用递归函数f,由上面的数学表达式以计算其返回值s=1+2+3=6。

37.1010解析:该for语句以i为0,j为10作为初始值,循环条件是i<=j,每次循环后i增1、j减1,循环体是将i与j的和赋给k,这样变量k将保存的是最后一次赋给它的值。一次循环后i为1、j为9,二次循环后i为2、j为8,……,五次循环后i为5、j为5,第六次循环,将i与j的和10赋给k后,i为6、j为4,循环结束,k值为10。

38.i<=9或i<10或9>=i或10>ij%3!=0或j%3i<=9或i<10或9>=i或10>i\r\nj%3!=0或j%3

39.#include<a:\myfile.txt>#include<a:\\myfile.txt>解析:本题考查了函数的存储分类的概念。如果没有特别说明,函数的存储范围是从定义函数的位置到文件的结尾,如果其他文件想使用这个函数,需要用ginclude文件包含命令将定义函数的文件包含进来。

40.调试调试

41.A解析:标识符是以字母或下划线开头,由字母、数字或下划线组成的字符序列(例如,-max含非法字符-),并且用户标识符不能与C语言中的32个关键字同名(例如,int是关键字,不是合法的用户标识符)。选项B中-max不是字母、数字或下划线组成的字符序列,故选项B不正确;选项C中3COM不是由字母或下划线开头,故选项C不正确;选项D中int为C语言中的关键字,故选项D不正确;选项A中全部为合法的标识符,所以,4个选项中选项A符合题意。

42.A解析:本题考查的是自加运算符的运用。自加运算符有前缀和后缀两种不同的形式,对于变量本身来说,无论是前缀还是后缀其作用的效果都是相同的,使变量值增1。但作为表达式来说却有着不同的值,前缀时自增表达式的值是变量增1,后的值,而后缀时自增表达式的值是变量增1前的值。本题程序开始定义了两个整型变量m和n,并分别初始化为12和34.第一条输出语句是按整型格式输出表达式m++和++n的值,根据前面所述,表达式m++的值为12,++n的值为35,所以第一次输出的字符串是'1235',执行完后m和n的值都自增1,分别是13和35.接下来第二条输出语句也是按整型格式输出表达式n++和++m的值,分别是35和14,故最终的输出应该为“12353514”,所以,4个选项中选项A符合题意。

43.C解析:函数fun是一个递归调用函数,首先主函数将实参7传递给fun函数中的形参x,由于x=7不满足if语句的条件,则执行下面的“p=x-fun(x-2);”语句,此语句继续调用本身,直到当x=1时,返回函数值3代入到调用它的表达式中,以此类推,最终p的值为2。

44.C解析:本题涉及C语言基本的3个知识点:①C语言的源程序是由函数构成的,函数是其基本单位,每一个函数完成相对独立的功能,其中只能包括一个主函数;②C语言规定每个语句以分号结束,其书写格式是自由的,一条语句可以写在不同的行上,或者一行也可以写多条语句;③注释行虽然对程序的运行不起作用,但是它可以方便程序员阅读,提高程序的可读性和可移植性,所以书写注释行还是很有必要的。

45.A

46.B解析:全程变量是可以在子函数中对其值作改变,且它也可作为函数间的值传递。但当函数或子函数中定义了与全程变量名称相同的局部变量,则全程变量将被屏蔽。

47.B解析:在C语言中,不可以在函数的参数声明列表中用一个类型名指定多个参数。故选项B是错误的。其正确的表示方式应为:

intmax(intx,inty){…}

intmax(:1

intx,y;

{…)

48.C\r\n软件工程是试图用工程、科学和数学的原理与方法研制、维护计算机软件的有关技术及管理方法。软件工程的主要思想是强调在软件开发工程中需要应用工程化的原则。软件工程用来解决以下问题:软件需求的增长得不到满足、软件开发成本和进度无法控制、软件质量难以保证、软件不可维护或维护程度低、软件得成本不断提高、软件开发生产率的提高赶不上硬件的发展和应用需求的增长。软件项目的管理、软件产品的生产率、软件开发中的技术都是软件工程需要解决的部分问题。因此选项C正确。

49.C解析:关于软件测试的目的,GrenfordJ.Myers在《TheArtofSoftwareTesting》一书中给出了深刻的阐述:软件测试是为了发现错误而执行程序的过程;一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试。整体来说,软件测试的目的就是尽可能多地发现程序中的错误。本题答案为C。

50.A

51.A解析:auto变量:无static声明的局部变量。用auto作存储类别的声明时,可以不写auto,存储类别隐含确定为auto(自动存储类别),是动态存储方式。大多数变量是自动变量。用static声明的局部变量是静态局部变量。函数调用结束后静态局部变量占据的内存存储单元空间不释放,局部变量保留原值,下次调用时可以继续使用该值。用extern声明外部变量,外部变量即全局变量,可以用extern声明来改变全局变量的作用域,实际上,关键字'auto'可以省略,auto不写则隐含确定为'自动存储类别',属于动态存储方式。

52.B解析:MA(1+a+b)展开为:1+a+h*(1+a+b-1)=1+1+2×(1+1+2-1)=2+2×3=8。

53.B解析:调用函数f()时,将数组a的地址传递给了指针q,此时q指向的就是数组a的第一个元素a[0]。在5次循环过程中,q始终指向a[0],因此a[0]的值增加了5。最后的输出结果为“6,2,3,4,5”。

54.C解析:在C语言中,求余运算符“%”两边的运算对象都应为整型数据,所以需要对变量f进行强制类型转换,正确的写法为k%(int)f。在C语言中,逻辑运算符与赋值运算符、算术运算符、关系运算符之间从高到低的运算优先次序是:!(逻辑“非”)、算术运算符、关系运算符、&&(逻辑“与”)、‖(逻辑“或”)、赋值运算符。根据运算符的优先级与结合性,对于选项A),先计算k>=k的值(为真,即1),再用1对k进行赋值。对于选取项B),先计算k什的值,再对其取负数。对于选项D),先计算k>=f的值(为假,即0),再用0与m进行比较,故最终结果为0。

55.C解析:在C语言中,字符型数据在内存中的存储形式是ASCII码值。当需要以整型格式输出字符时,输出的也是ASCII码值。字符“A”和“D”的ASCII码值分别为65和68。

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

57.B解析:由于1和2都是整型,选项B中1/2的运算结果为0,故整个表达式的值为0,所以它的结果和题目中要求的代数式的计算结果不相符。

58.D结构化程序设计由迪杰斯特拉(E.W.dijkstra)在1969年提出,他主张“清晰第一,效率第二”,以模块化设计为中心,将待开发的软件系统划分为若干个相互独立的模块,这样使完成每一个模块的工作变得单纯而明确,为设计一些较大的软件打下了良好的基础。

由于模块相互独立,因此,在设计其中一个模块时,不会受到其他模块的牵连,因而可将原来较为复杂的问题化简为一系列简单模块的设计。模块的独立性还为扩充已有的系统、建立新系统带来了不少的方便,因为可以充分利用现有的模块作为积木式的扩展。

结构化程序设计的基本思想是采用“自顶向下,逐步求精”的程序设计方法和“单入口单出口”的控制结构。自顶向下、逐步求精的程序设计方法从问题本身开始,经过逐步细化,将解决问题的步骤分解为由基本程序结构模块组成的结构化程序框图;“单入口单出口”的思想认为一个复杂的程序,如果它仅是由顺序、选择和循环三种基本程序结构通过组合、嵌套构成,那么这个新构造的程序一定是一个单入口单出口的程序。据此就很容易编写出结构良好、易于调试的程序。

59.A解析:宏替换用“#define宏名宏体”的形式来定义。在进行编译预处理时,将把程序中宏定义之后的所有宏名用宏体替换。宏虽然可以带参数,但宏替换过程中不像函数那样要进行参数值的计算、传递及结果返回等操作;宏替换只是简单的字符替换,不进行计算。因而本题中的S(a+b)进行宏替换后为PT*1+2*1+2=5.5*1+2*1+2=9.5。注意:带参数的宏定义。

60.C解析:在关系模型的数据语言中,一般除了运用常规的集合运算(并、交、差、笛卡尔积等),还定义了一些专门的关系运算,如投影、选择、连接等。前者是将关系(即二维表)看成是元组的集合,这些运算主要是从二维表的行的方向来进行运算的。后者是从二维表的列的方向来进行运算的。

61.Dx[0]是不能赋值的。

62.D

63.B本题主要考查C语言合法语句的定义。

在选项A中,a==1不是一个合法的语句,因为它没有语句结束标识符“;”,不能说是一条语句,如果作为一个表达式,它是正确的。

在选项B中,由于变量i已被正确定义并有初值,“++i;”是正确的语句。

在选项

温馨提示

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

最新文档

评论

0/150

提交评论