2022-2023年河北省唐山市全国计算机等级考试C语言程序设计预测试题(含答案)_第1页
2022-2023年河北省唐山市全国计算机等级考试C语言程序设计预测试题(含答案)_第2页
2022-2023年河北省唐山市全国计算机等级考试C语言程序设计预测试题(含答案)_第3页
2022-2023年河北省唐山市全国计算机等级考试C语言程序设计预测试题(含答案)_第4页
2022-2023年河北省唐山市全国计算机等级考试C语言程序设计预测试题(含答案)_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

2022-2023年河北省唐山市全国计算机等级考试C语言程序设计预测试题(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.设有定义“inta;floatb;”,执行“scanf(“%2d%f”,&a,&b);”语句时,若从键盘输入876543.0并按<Enter>键,则a和b的值分别是()。

A.87和6.0B.876和543.0C.87和543.0D.76和543.0

2.设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为()。

A.intB.floatC.doubleD.不确定

3.以下叙述中错误的是()。

A.可以通过typedef增加新的类型

B.可以typedef将已存在的类型用一个新的名字来代表

C.用typedef定义新的类型名后,原有类型名仍有效

D.用typedef可以为各种类型起别名,但不能为变量起别名

4.下列关于C语言文件的叙述中正确的是()。

A.文件由一系列数据依次排列组成,只能构成二进制文件

B.文件由结构序列组成,可以构成二进制文件或文本文件

C.文件由数据序列组成,可以构成二进制文件或文本文件

D.文件由字符序列组成,其类型只能是文本文件

5.结构化程序设计方法的3种基本控制结构中不包括

A.循环结构B.递归结构C.顺序结构D.选择结构

6.有以下程序:#include<stdio.h>intf(intm){staticintn=0;n+=m;returnn;}main(){intn=0;printf("%d,"f(++n));printf("%d\n",f(n++));}程序运行后的输出结果是()。A.1,2B.1,1C.2,3D.3,3

7.下列关于栈叙述正确的是A.栈顶元素最先能被删除B.栈顶元素最后才能被删除C.栈底元素永远不能被删除D.以上三种说法都不对

8.关于结构化程序设计原则和方法的描述错误的是()。

A.选用的结构只准许有一个入口和一个出口

B.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现

C.不允许使用GOT0语句

D.语言中若没有控制结构,应该采用前后一致的方法来模拟

9.

10.以下关于指针的说法错误的是()。

A.可以向指针中写入任意数据

B.可以向指针所指内存单元中写入数据

C.指针可以指向与其基类型相同的普通变量

D.可以通过加法运算,使指针指向下一个内存单元

11.函数filecopy的功能是,将fin所指文件中的内容输出到fout所指文件中,但函数不完整:voidfilecopy(FILE*fin,FILE*fout){charch;ch=getc(fin);while(_______){putc(ch,fout);ch=getc(fin);}}其中下划线处应填入的是()。A.!feof(fin)B.!feof(fout)C.feof(fin)==1D.feof(fout)==1

12.C语言中,要求参加运算的数必须是整数的运算符是()。

A./B.!C.%D.==

13.以下叙述中错误的是A.算法正确的程序最终一定会结束

B.算法正确的程序可以有零个输出

C.算法正确的程序可以有零个输入

D.算法正确的程序对于相同的输入一定有相同的结果

14.

15.设S为一个长度为n的字符串,其中的字符各不相同,则S中的互异的非平凡子串(非空且不同于S本身)的个数为()。

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

16.向一个栈顶指针为H的链栈中插入一个s所指向的结点时,需执行()。

A.H->link=s

B.s->link=H->link;H->link=s;

C.s->link=H;H=s;

D.s->link=H;H=H->link;

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

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

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

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

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

18.

19.以下不能对二维数组a进行正确初始化的语句是

A.inta[2][3]={0};

B.inta[][3]={{1,2},{0}};

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

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

20.字符(char)型数据在微内存中的存储形式是______。

A.反码B.补码C.EBCDIC码D.ASCII码

二、2.填空题(20题)21.下列程序的运行结果是______。

#include<stdio.h>

func(a,B)

{staticintm=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

}

main0

{intk=5,m=3,p;

p=func(k,m);

printf("%d",p);

p=func(k,m);

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

}

22.若有以下程序

intf(intx,inty)

{return(y-x)*x;}

main()

{inta=3,b=4,c=5,d;

d=f(f(3,4),f(3,5));

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

}

执行后输出结果是【】。

23.定义inta=5,b;,则执行表达式b=++a*--a之后,变量b的值为【】。

24.关系数据库管理系统能实现的专门关系运算包括选择、连接和【】。

25.数据结构分为线性结构和非线性结构,带链的队列属于[]。

26.以下程序的功能是进行位运算main(){unsignedchara,b;a=7^3;b=~4&3;pfintf("%d%d\n",a,b);}程序运行后的输出结果是

27.若有程序:

main()

{inti,j;

scanq("i=%d,j=%d",&i,&j);

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

}

要求给i赋10,给j赋20,则应该从键盘输入【】。

28.当数据的物理结构(存储结构、存取方式等)改变时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的【】。

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

#include<stdio.h>

longfunc(intx)

{longp;

if(x==O‖x==1)

return(1);

p=x*func(x-1);

return(p);

}

main()

{printf("%d\n",func(4));

}

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

main()

{inta[4][4]={{1,2,3,4),{5,6,7,8},{11,12,13,14},{15,16,17,18}};

inti=0,j=0,s=0;

while(i++<4)

{

if(i==2||i==4)continue;

j=0;

do{S+=a[i][j];j++;}while(j<4);

}

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

}

31.\13'在内存中占1个字节,"\12"在内存中占______个字节。

32.设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部【】。要求形参名为b。

main()

{double[10][22];

intn;

......

fun(s);

}

33.在数据库理论中,数据物理结构的改变,如存储设备的更换、物理存储的更换、存取方式改变等都不影响数据库的逻辑结构,从而不引起应用程序的变化,称为______。

34.以下程序用来输出结构体变量ex所占存储单元的字节数,请填空。

structst

{charname[20];doublescore;};

main()

{structstex;

printf("exsize:%d\n",sizeof(【】));}

35.下面程序的运行结果是()。##include<stdio.h>main(){inta,s,n,m;a=2;s=0;n=1;m=1;while(m<=4){n=n*a;s=s+n;++m;}printf("s=%d",s);}

36.以下函数的功能是求x的y次方,请填空。

doublefun(doublex,inty)

{inti;

doublez;

for(i=1,z=x;i<y;i++)z=z*【】;

returnz;

}

37.对于长度为n的顺序存储的线性表,当随机插入和删除一个元素时,需平均移动元素的个数为【】。

38.下列语句能循环______次。

ints=12;

while(s);

--s;

39.以下函数fun的功能是返回str所指字符中中以形参c中字符开头的后续字符串的首地址,例如:str所指字符串为“Hello!”,c中的字符为'e',则函数返回字符串"ello!"的首地址。若str所指字符串为空中或不包含c中的字符,则函数返回NULL。请填空。

char*fun(char*str,charc)

{intn=0;char*p=str;

if(p!=NULL)

while(P[n]!=c&&p[n]!='\0')n++;

if(p[n]=='\0')retumNULL;

return(【】);

}

40.与结构化需求分析方法相对应的是【】方法。

三、1.选择题(20题)41.在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率。与程序的效率相比,人们更重视程序的

A.安全性B.一致性C.可理解性D.合理性

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

A.在C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

B.在C的函数中,最好使用全局变量

C.外部变量可以在函数之间传递数据

D.自动变量实质上是一个函数内部的局部变量

43.有以下程序main(){inta=0,i;for(i=1;i<5;i++){switch(i){case0case3:a+=2;case1;case2;a+=3;default,a+=5;}}printf("%d\n",a);}

A.31B.13C.10D.20

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

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

45.

有以下程序:

main

{intx=102,y=012;

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

}

执行后输出结果是()。

A.10,01B.02,12C.102,10D.02,10

46.已知i、j、k为整型变量,若从键盘输入1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是()。

A.scanf("%2d%2d%2d",&i,&j,&k);

B.scanf("%d%d%d",&i,&j,&k);

C.scanf("%d,%d,%d",&i,&j,&k);

D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);

47.设有如下定义structss{charname[10];intage;,charsex;}std[3],*p=std;下面各输入语句中错误的是

A.scanf("%d",&(*p).age);

B.scanf("%s",&);

C.sean("%c",&std[0].sex);

D.scanf("%c",&(p->sex));

48.将E-R图转换到关系模式时,实体与联系都可以表示成________。

A.属性B.关系C.键D.域

49.下列程序的输出结果是______。main(){inti;for(i=1;i+1;i++){if(i>4){printf("%d",i++);break;}}printf("%d",i++);}

A.55B.56C.程序错误,没有输出D.循环条件永远为真,死循环

50.若程序执行时的输入数据是"2473",则下述程序的输出结果是

#include<stdio.h>

voidmain()

{intcs;

while((cs=getchar())!=;'\n')

{switch(cs-'2')

{case0

case1:putchar(cs+4);

case2:putchar(cs+4);

break;

case3:putchar(cs+3);default:putchar(cs+2);}}}

A.668977B.668966C.6677877D.6688766

51.使计算机病毒传播范围最广的媒介是________

A.硬磁盘B.软磁盘C.内部存储器D.互联网

52.有以下程序:#include<stdio,h>#definef(x)(x*x)main(){inti1,i2;i1=f(8)/f(4);i2=f(4+4)/f(2+2);printf("%d,%d\n",i1,i2);

A.64,28B.4,4C.4,3D.64,64

53.下列程序的输出结果是#include"stdio.h"#defineM(x,y)x%ymain(){inta,m=12,n=100;a=M(n,m);printf("%d\n",a--);}

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

54.请读程序:#include<stdio.h>#defineSUB(X,Y)(X)*Ymain(){inta=3,b=4;printf("%d\n",SUB(a++,b++));}上面程序的输出结果是()。

A.12B.15C.16D.20

55.下面程序输出的结果是

main()

{inti;

inta[3][3]={1,2,3,4,5,6,7,8,9};

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

printf("%d",a[2-i][i]);}

A.159B.753C.357D.591

56.以下叙述中正确的是______。A.预处理命令行必须位于源文件的开头

B.在源文件的一行上可以有多条预处理命令

C.宏名必须用大写字母表示

D.宏替换不占用程序的运行时间

57.在C语言中,函数调用时()。

A.实参和形参各占独立的存储单元

B.实参和形参共用存储单元

C.由系统自动确定实参和形参是否共用存储单元

D.由用户指定实参和形参是否共用存储单元

58.下列叙述中,不属于测试的特征的是

A.测试的挑剔性B.完全测试的不可能性C.测试的可靠性D.测试的经济性

59.已知小写字母a的ASCII码为97,大写字母A的ASCII码为65,以下程序的结果是______。main(){unsignedinta=32,b=66;printf("%c\n",b|b);}

A.66B.98C.bD.B

60.若运行以下程序时,从键盘输入ADescriptor<CR>(<CR>表示回车),则下面程序的运行结果是#include<stdio.h>main(){charc;intv0=1,v1=0,v2=0;do{switch(c=getchar()){case'a':case'A':case'e':case'E':case'i':case'I':case'o':case'O':case'u':case'U':v1+=1default:v0+=1;v2+=1;}}while(c!='\n');printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);}

A.v0=7,v1=4,v2=7

B.v0=8,v1=4,v2=8

C.v0=11,v1=4,v2=11

D.v0=13,v1=4,v2=12

四、选择题(20题)61.有以下程序:

#include<stdio.h>

main()

{inta,b,k,m,*pl,*p2;

k=1,m=8;

p1=&k,p2=&m;

a=/*pl-m;b=*p1+*p2+6;

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

}

编译时编译器提示错误信息,你认为出错的语句是()。

A.a=/*pl-m;

B.b=*p1+*p2+6;

C.k=1,m=8;

D.pl=&k,p2-&m;

62.

63.

64.数据库的故障恢复一般是由

A.数据流图完成的B.数据字典完成的C.DBA完成的D.PAD图完成

65.用树形结构来表示实体之间联系的模型称为()。

A.关系模型B.层次模型C.网状模型D.数据模型

66.表达式:10!=9的值是()。

A.trueB.非零值C.0D.1

67.以下程序的功能是进行位运算

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

A.43B.73C.70D.40

68.

69.for(i=1;i<=10;i=i+3)for(j=2;j<6;j++){··…·}的循环次数是()。

A.16B.18C.14D.12

70.

71.下列关于结构型、共用型、枚举型的定义语句中,正确的是()。

A.structss{intx}

B.unionuu{intx;}xx=5;

C.enumee{intx};

D.struct{intx;};

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

A.在C语言程序中,main函数必须放在其他函数的最前面

B.每个后缀为C的C语言源程序都可以单独进行编译

C.在C语言程序中,只有main函数才可单独进行编译

D.每个后缀为.C的C语言源程序都应该包含一个main函数

73.分析以下程序的输出结果是()。

main

{inta=5,b=-1,c;

c=adds(a,b);

printf(“%d”,c);

c=adds(a,b);

printf(“%d\n”,c);}

intadds(intx,inty)

{staticintm=0,n=3;

n*=++m;

m=n%x+y++;

return(m);}

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

74.

75.有以下程序:

#include<stdio.h>

main

{shortC=124;

C=C_;

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

}

若要使程序的运行结果为248,应在下划线处填入的是()。

A.>>2

B.|248

C.&0248

D.<<1

76.设有如下说明

typedefstructST

{

longa;intb;charc[2];

}NEW;

则下列叙述中正确的是

A.以上的说明形式非法B.ST是一个结构体类型

C.NEW是一个结构体类型D.NEW是一个结构体变量

77.

78.有以下程序:

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

A.02356B.0235C.235D.2356

79.(42)希尔排序法属于哪一种类型的排序法()

A.交换类排序法

B.插入类排序法

C.选择类排序法

D.建堆排序法

80.

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是计算并输出h以内的素数之和。h由主函数传给proc()函数。若h的值为80,则函数的值为791。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,规定输入的字符串中只包含字母和*号。编写函数fun(),其功能是除了字符串前导和尾部的*号外,将字符串中其他的*号全部删除。形参h指向字符串中第一个字母,形参p指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。例如,若字符串中的内容为“****A*BC*DEF*G********”,删除后,字符串中的内容应当是“****ABCDEFG********”。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdio.h>#include<conio.h>#include<string.h>voidfun(char*a,char*h,char*p){}main(){chars[8l],*t,*f;printf(“Enterastring:\n”);gets(s);t=f=s;while(*t)t++;t--;while(*t==‘*’)t--;while(*f==‘*’)f++;fun(s,f,t);printf(“Thestringafterdeleted:\n”);puts(s);}

参考答案

1.Ascanf函数中,在格式字符前加入一个整数可以指定输入数据所占的宽度,所以赋值时会将87赋给变量a,把6.0赋给float型变量b。故本题答案为A选项。

2.C

3.A关键字typedet的作用只是将C语言中的已有的数据类型作了置换,并不是增加新的类型,所以A)错误。

4.C文件由数据序列组成,可以构成二进制文件或文本文件。故本题答案为C选项。

5.B解析:本题考查了程序的基本结构。程序由一些基本结构组成。任何一个大型的程序都由3种基本结构组成,由这些基本结构顺序的构成了一个结构化的程序。这3种基本结构为:顺序结构、选择结构和循环结构。

6.A解析:static变量用于局部变量中有记忆功能和全局生存期。函数中的静态变量的特点是每次调用函数,静态变量的值是上次调用完该函数后的静态变量值,所以在此题中,第一调用函数,返回1,此时函数中的静态变量n的值为l,所以第二次调用函数时,返回值为2。

7.A栈是限定只在一端进行插入与删除的线性表,按照“先进后出”或“后进先出”的原则组织数据。栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。

8.C结构化程序设计的原则和方法之一是限制使用GOT0语句,但不是绝对不允许使用G0T0语句。其他三项为结构化程序设计的原则。

9.B

10.A指针变量必须区分基类型,可以向指针所指内存单元写入与基类型相同的数据,而不能写入任意数据,选项A错误,选项B正确;指针可以指向与其基类型相同的普通变量,选项C正确;指针是一个内存地址,它是一个整数,可以通过加法运算,使指针指向下一个内存单元,选项D正确。故本题答案为A选项。

11.Afilecopy函数每次从fin文件指针调用getc函数读取一个字符存放到ch中,再通过while循环调用putc函数将ch写入fout,直到fin指向文件尾部为止。所以while的循环条件是判断fin是否到文件尾部。这里使用feof函数判断:feof返回值为真时,表示fin指向了文件尾部,否则表示fin未到文件尾部。所以while循环条件为!feof(fin)。故本题答案为A选项。

12.C

13.B(45)B)解析:算法应该具有下列五个特性:

①有穷性:一个算法必须在执行有穷步之后结束。

②确定性:算法中的每一步,必须有确切的含义,在他人理解时不会产生二义性。

③动态性:算法中描述的每一步操作都可以通过已有的基本操作执行有限次实现。

④输入:一个算法应该有零个或多个输入。

⑤输出:一个算法应该有一个或多个输出。这里所说的输出是指与输入有某种特定关系的量。

14.D

15.D

16.C

17.A解析:在链式存储结构中,存储数据的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,数据元素之间的逻辑关系,是由指针域来确定的。由此可见,选项A的描述正确。因此,本题的正确答案为A。

18.A

19.C解析:关于二维数组的初始化,我们需要掌握如下方法:①所赋初值个数与数组元素的个数相同;②所赋初值行数少于数组行数时,系统将自动给后面各行的元素补初值0;③在给二维数组赋初值时可以不用行花括号对。选项C)应该是inta[3][2]={{1,2},{3,4},{5,6,}};

20.D解析:将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符的ASCII码值放到存储单元中。

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

22.99解析:函数的嵌套调用是在主函数中函数f(f(3,4),f(3,5))的返回值赋给d。函数的第一个参数为f(3,4)的返回值,函数f(3,4)返回值为(4-3)*3=3,f(3,5)返回值为(5-3)*3=6,那么函数f(f(3,4),f(3,5))等价于函数f(3,6)其返回值为(6-3)*3=9。因此d被赋值为9,所以输出9。

23.2525解析:#NAME?

24.投影专门关系运算包括对单个关系进行垂直分解(投影操作)或水平分解(选择操作)和对多个关系的结合(连接操作)等。

25.线性结构线性结构解析:与栈类似,队列也是线性表,也町以采用链式存储结构。

26.A

27.i=0j=20i=0,j=20解析:该函数的第一个参数是格式字符串,主要由两类字符组成,一类是非格式符要求原样输入,一类是格式符对应要输入的变量,所以说本题中应该原样输入i=,j=,后面分别给变量0和20,所以说空格处应该填入i=0,j=20。

28.物理独立性物理独立性

29.本题考查函数的循环调用。p=x*func(x-1),当x=4时,不满足if语句的条件,p=4*func(3),x=3也不满足条件,则func(3)=3*func(2),func(2)=2*func(1),x=1满足条件return(1),则输出结果为4*3*2*1=24。\r\n\r\n

30.9292解析:本题的主函数中首先定义了一个4行4列的二维数组,然后执行一个while循环,该循环中又嵌套了一个do-while循环。先看while循环,该循环通过i++的值来判断是否结束循环,当i++的值为4的时候结束循环,当i=O时,执行while的循环体,显然if语句条件不满足不执行,接着让j=0,然后执行do-while循环体,不难看出do-while循环的功能是将第i+1行的所有元素加起来,所以这时s的值为s=a[1][0]+a[1][1]+a[1][2]+a[1][3]=26,当i=1时,i+1=2,if后面括号里的表达式的值为真执行后面的continue语句,结束该次循环;当i=2时,i加1变为3,把第3+1行的所有元素的值加到s上,此时s=s+a[2][0]+a[2][1]+a[2][2]+a[2][3]=92,当i=3时,3+1=4,if后面括号里的表达式的值为真执行后面的continue语句,结束该次循环,当i=3时,if后面括号里的表达式的值为真执行后面的continue语句,结束该次循环当i=4时while循环结束,所以最后输出的s的值为92。

31.22解析:'\\13':表示八进制数13表示的ASCII字符,是一个字符,占一个字节;而”\\12”是个字符串,除了八进制数12表示的ASCII字符占一个字节外,还有在字符串的末尾加上串结束标志“'\\0'”,所以共有2个字节。

32.voidfun(doubleb[10][22])voidfun(doubleb[10][22])解析:本题答案:voidfun(doubleb[10][22])。

33.物理独立性物理独立性解析:数据的物理结构改变,不影响数据库的逻辑结构,从而不引起应用程序的变化,这种性质叫做物理独立性。

34.structst或exstructst或ex解析:结构体类型数据,其数据成员各自占据不同的存储空间,整个结构体变量所占存储单元的字节数为每一个数据成员所占的存储空间的和。注意:共用体变量所占存储单元字节数的计算。

35.s=30s=30解析:分析循环条件“m=1,m<=4”,所以循环4次。第1次:n=n*a=2,s=s+n=2;m=2。第2次:n=n*a=4,s=s+n=6;m=3。第3次:n=n*a=8,s=s+n=14;m=4。第4次:n=n*a=16,s=s+n=30。

36.xx解析:函数的定义形式为;

函数类型函数名(形参表)

{

类型说明语句;

执行语句;

}

本题中函数的功能是:累积变量以求得变量的Y次方。

37.n/2n/2解析:删除一个元素,平均移动的元素个数为(n-1+n-2+…+0)/n=(n-1)/2;插入一个元素,平均移动元素个数为(n+n-1+n-2+…+1)/n=(n+1)/2;所以总体平均移动元素个数为n/2。

38.无限无限解析:分析程序“while(s)”语句后面有一个“;”不能执行后面的语句,只是执行空语句,所以s=12保持不变,因此,没有条件限制的能循环无限次(即死循环)。

39.str+n或p+nstr+n或p+n解析:此题主要是将形参c中的字符与str中的字符相比较,返回以形参c中字符开头的后续字符串,函数fun中的变量n用于记录形参c中字符在str字符串中的位置,故返回的结果用str+n或p+n表示。

40.结构化设计结构化设计解析:与结构化需求分析方法相对应的是结构化设计方法。结构化设计就是采用最佳的可能方法设计系统的各个组成部分以及各个成分之间的内部联系的技术。

41.C解析:结构化程序设计方法设计出的程序具有明显的优点。其一,程序易于理解、使用和维护;其二,提交了编程工作的效率,降低了软件开发成本。其中,人们更重视前者。

42.B解析:编译时,编译系统不为局部变量分配内存单元,而是在程序运行中,当局部变量所在的函数被调用时,编译系统根据需要要临时分配内存,调用结束空间释放;全局变量一经定义,编译系统为其分配固定的内存单元,在程序运行的自始至终都占用固定的单元。在考虑内存不定的情况下,最好使用全局变量。

43.A

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

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

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

45.C解析:本题中,“printf('%2d,%2d\\n',x,y)”表示以逗号隔开输出两个十进制整数,每个整数域宽是2。而在C语言中规定:当域宽小于实际宽度时域宽不起作用,按实际宽度输出,因此最后的输出值为102和10(y的初值012表示八进制整数12,等于十进制的10)。所以,4个选项中选项C符合题意。

46.C解析:使用scanf()函数时,要求除格式控制符以外的字符都要原样输入,“,”为非格式符,要原样输入。选项A,输入格式描述为“%2d%2d%2d”,意思是输入一个长度为6的数字串,scanf()将每两个为一组读入3个变量中,不满足键盘输入1,2,3的条件,故A错误;选项B中,输入格式描述符为“%d%d%d”,输入要用空格隔开,故错误;选项D中,输入格式描述符为“i=%d,j=%d,k=%d”,应该从键盘输入i=1,j=2,k=3,才能使得i,j,k的值为1,2,3,故选项D错误。4个选项中C正确。

47.B解析:本题考核的知识点是结构型数组的应用。选项A中“&(*p).age”代表的是std[0]age的地址,是正确的,选项C也是正确的,选项D先用指针变量引用结构型的成员sex,然后取它的地址,也是正确的,选项B中的“'是错误的引用,因为std是数组名,代表的是数组的首地址,地址没有成员“name”。所以B选项为所选。

48.B解析:关系数据库逻辑设计的主要工作是将\ue008E-R\ue009图转换成指定RDBMS中的关系模式。首先,从E-R图到关系模式的转换是比较直接的,实体与联系都可以表示成关系,E-R图中属性也可以转换成关系的属性,实体集也可以转换成关系。

49.B解析:本程序中有个for循环,但注意到for循环的条件是“i+1”,也就是只要i+1的值为真(非零值均为真),就执行循环。当i=1的时候,i+1的值为真,判断if条件不成立,执行i++,输出i的值为5。

50.A解析:本题主要考查switch语句的使用方法。switch语句的执行过程为:进入switch结构后,对条件表达式进行运算,然后从上至下去找与条件表达式值相匹配的case,以此作为入口,执行switch结构中后面的各语句,直到遇到break语句,则跳出switch语句,如果各case都不匹配时,则执行default后面的语句。

51.D

52.C解析:程序中i1=f(8)/f(4)宏替换后得到i1=(8*8)/(4*4),结果为4;i2=f(4+4)/f(2+2)宏替换后得到i2=(4+4*4+4)/(2+2*2+2),其结果为3。故本题输出的值为4,3。

53.C解析:带参数的宏定义命令行形式如下:

#define宏名(形参表)替换文本

在编译的时候编译预处理程序用“替换文本”来替换宏,即M(n,m)被替换为n%m,之后计算,将计算的结果赋给a。注意,宏替换是在编译时由预处理程序完成的,宏替换不占用运行的时间,而函数调用是在程序运行时进行的,在函数的调用过程中需要占用一系列的处理时间。

54.A解析:本题的考查点是宏定义。a++的形式应当先使用a值,然后a才进行自加1运算,所以程序在进行SUB()乘法运算的时候,仍取a,b的原值,最后输出的结果是12。

55.B解析:本题用循环的方法考查对数组概念的掌握。首先,当i=0时,数组中的位置是a[2][0]=7,当然,如果用排除法,就不用考虑后面的循环,因为在4个选项中,第1个数为7的选项只有B)。本题执行第2次循环时,i的值为1,则printf函数中的数组指向为a[1][1]=5,依次循环,可求出答案。

56.D本题主要考查宏的一些基本概念。通常,预处理命令位于源文件的开头,但不一定必须位于开头,也可以写在函数与函数之间;由于预处理命令的末尾不加分号,不以分号来区分一条宏命令,所以,不能在一行上写多条预处理命令,只能写一条,否则,系统处理时就会把它当做一条命令处理;宏名一般习惯用大写字母表示,以便与变量名相区别,这只是习惯用法,并不是C语言中有这样的规定,宏的定义可用小写字母;C语言中,宏的替换是在程序编译时进行,不占用程序运行的时间,故本题答案为D。

57.A解析:本题考查函数调用时的参数传递。函数的形参是函数定义时由用户定义的形式上的变量,实参是函数调用时,主调函数为被调函数提供的原始数据。

在函数调用时,实参和其所对应的形参分别占用不同的存储单元,彼此之间不影响。

58.C解析:软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。它有3个方面的重要特征,即测试的挑剔性、完全测试的不可能性及测试的经济性。其中没有测试的可靠性这一说法。注意:软件测试与软件调试的概念,以及相应的方法。

59.C解析:位运算符“|”的作用是按位或,即两个二进制数的相应位中只要一个为1,该位的结果值为1。最后以字符型输出,98对应的字符“b”。

60.D解析:本题考查switch语句的掌握。必须撑握以下内容:首先应该明白switch语句的语法格式:

switch语句的语法格式为:

switch(表达式)

{

case常量表达式1:语句组1;

case常量表达式2:语句组2;

……

case常量表达式n:语句组n;

default:语句组n+1;

}

另外,注意以下几点关于switch语句的重点:

①系统在执行时计算开关表达式的值;②根据所得的值在各个case标号表达式中寻找匹配,直到发现与表达式匹配的标号(本例中匹配的是case'B':);③找到匹配后执行后面相应的语句表,顺序往下执行;④如果无相匹配的标号,若存在default标号,则执行该语句标号后面的语句表n+1;当不存在default标号时,不执行switch中的任何一个语句表。

一般而言,在多分支结构中总会出现“意外”的情况,这时均可归入default:程序段,作统一的处理;default标号是可选性的,不必每次都有,视需要而定。switch语句中还可以包含switch语句,形成switch的嵌套。

61.A\n本题考查指针,pl=&k表示P指向k的地址,则*p=k,依次类推,在对指针进行赋值时没有错误。a=/*p+m赋值,在c语言中'/*'表示的注

温馨提示

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

评论

0/150

提交评论