2021-2022年广东省汕尾市全国计算机等级考试C语言程序设计真题二卷(含答案)_第1页
2021-2022年广东省汕尾市全国计算机等级考试C语言程序设计真题二卷(含答案)_第2页
2021-2022年广东省汕尾市全国计算机等级考试C语言程序设计真题二卷(含答案)_第3页
2021-2022年广东省汕尾市全国计算机等级考试C语言程序设计真题二卷(含答案)_第4页
2021-2022年广东省汕尾市全国计算机等级考试C语言程序设计真题二卷(含答案)_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年广东省汕尾市全国计算机等级考试C语言程序设计真题二卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.在以下的叙述中,正确的是()。

A.线性表的顺序存储结构优于链表存储结构

B.二维数组是其数据元素为线性表的线性表

C.栈的操作方式是先进先出

D.队列的操作方式是先进后出

2.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

3.if语句基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是()。

A.必须是逻辑值B.必须是整数值C.必须是正数D.可以是任意合法的数值

4.下列算法中,()算法用来求图中某顶点到其他顶点所有顶点之间的最短路径。

A.DijkstraB.FloyedC.PrimD.Kruskal

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

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

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

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

D.以上说法均错

6.有以下程序

#include<stdio.h>

voidfun(char*t,char*s)

{while(*t!=0)t++;

while((*t++=*s++)!=0);

}

main()

{charss[10]="acc",aa[10]="bbxxyy";

fun(ss,aa);printf("%s,%s\n",ss,aa);

}

程序的运行结果是

A.accxyy,bbxxyy

B.acc,bbxxyy

C.accxxyy,bbxxyy

D.accbbxxyy,bbxxyy

7.在关系数据模型中,通常可以把()称为属性,其值称为属性值。

A.记录B.基本表C.模式D.字段

8.下列运算符中优先级最高的是()。

A.!B.%C.-=D.&&

9.若有说明语句:inta,b,c,*d=&c;,则能正确从键盘读入3个整数分别赋给变量a、b、c的语句是______。

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

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

C.scanf("%d%d%d",a,b,d);

D.scanf("%d%d%d",a,b,*d);

10.下面关于线性表的叙述中,错误的是()。

A.线性表采用顺序存储,必须占用一片连续的存储单元

B.线性表采用顺序存储,便于进行插入和删除操作

C.线性表采用链接存储,不必占用一片连续的存储单元

D.线性表采用链接存储,便于插入和删除操作

11.x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是

A.INPUTx、v、z;

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

C.scanf("%d%d%d",x,y,z);

D.read("%d%d%d",&x,&y,&z);

12.如有inta=11;则表达式(a++*1/3)的值是()。

A.0B.3C.4D.12

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

14.有以下程序

#include<stdio.h>

voidfun(intP)

{intd=2;

P=d++;printf(“%d”,P);}

main()

{inta=1;

fun(A);prinff(“%.d\n”,A);}

程序运行后的输出结果是A.32B.12C.21D.22

15.下面排序算法中,初始数据集的排列顺序对算法的性能无影响的是()

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

16.下列字符数组初始化语句中,不正确的是()。

A.charc[]=goodmorning;

B.charc[20]="goodmorning";

C.charc[]={a,b,c,d);

D.charc[]={"ffgoodmorning"};

17.若希望下列的程序运行后输出25,程序空白处的正确选项是()。main{intid=50,a[]=(7,4,10,5,8};for()j+=a[i];printf("%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

18.以下选项中非法的表达式是()。

A.a+1=a+1

B.a=b==0

C.(Char.(100+100.

D.7<=X<60

19.给出以下定义:charx[]="abcdefg";chary[]={'a','b','c','d','e','f','g'};则正确的叙述为()。

A.数组x和数组y等价B.数组x和数组y的长度相同C.数组x的长度大于数组y的长度D.数组x的长度小于数组y的长度

20.有以下程序:#include<stdio.h>voidfun(int*a,int*b){for(;(*a<*B)||(getchar()!=‘@’);){(*a)++;(*b)--;}}main(){inti=0,j=5;fun(&i,&j);printf(“%d,%d\n”,i,j);}程序运行时在第1列开始输入ab@并按<Enter>键,则运行结果是()。

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

二、2.填空题(20题)21.若有如下结构体说明:

structSTRU

{inta,b;charc:doubled;

structSTRU*p1,*p2;

};

请填空,以完成对t数组的定义,t数组的每个元素为该结构体类型。

【】t[20]

22.在面向对象的方法中,______描述的是具有相似属性与操作的一组对象。

23.以下程序中,for循环体执行的次数是______。

#defineN2

#defineMN+1

#defineKM+1*M/2

main()

{

inti;

for(i-1;i<K;i++)

{...}

...

}

24.长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【】。

25.在关系数据库中把数据表示成二维表,每一个二维表称为【】。

26.若有定义doublea[5];,则a数组元素下标的上限为______。

27.软件的需求分析阶段的工作,可以概括为四个方面:【】、需求分析、编写需求规格说明书和需求评审。

28.下面的程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为bi.dat的新文件中,请填空。

#include<stdio.h>

#include<stdlib.h>

FILE*fp;

main()

{charch;

if((fp=fopen(【】))==NULL)exit(0);

while((ch=getchar())!='@')fputc(ch,fp);

fclose(fp);

}

29.函数my_cmp()的功能是比较字符串s和t的大小,当s等于t时返回0,否则返回s和t的第一个不同字符的ASCII码差值,即s>t时返回正值,s<t时返回负值。请填空。

My_cmp(char*s,char*t)

{while(*s==*t)

{if(*s==′\0)return0;

++s;++t;

}return【】;

}

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

【】(double,double);

main()

{doublex,y;

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

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

}

doublemax(doublea,doubleB)

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

31.下列的for语句的循环次数为______。

for(x=1,y=0;(y!=19)&&(x<7);x++);

32.算法的复杂度主要包括【】复杂度和空间复杂度。

33.实现算法所需的存储单元多少和算法的工作量大小分别为算法的【】。

34.以下程序的输出结果是_______。

main()

{char*p[]={"BOOL","OPK","H","SP:,};

for(i=3;i>0;i--,i--)printf("%c",*p[i]);

printf("\n");}

35.设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部【】(要求形参名为b)。main(){doubles[10][22];intn;……fun(s);……}

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

main()

{unsignedshorta=65536;intb;

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

}

37.函数rewind的作用是

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

#defineN10

#defines(x)x*x

#definef(x)(x*x)

main()

{inti1,i2;

i1=1000/s(N);i2=1000/f(N);

printf(“%d%d\n”,i1,i2);

}

39.软件工程研究的内容主要包括:软件开发技术和【】。

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

charstr[]="ABCD",*p=str;

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

三、1.选择题(20题)41.设x、y、t均为血型变量,则执行语句x=y=3;t=++x||++y;后,y的值为______。

A.不定值B.4C.3D.1

42.设有如下关系表:

则下列操作中,正确的是()。

A.T=R∩SB.T=R∪SC.T=R×SD.T=R/S

43.设有下列二叉树:对此二叉树前序遍历的结果为()

A.ZBTYCPXAB.ATBZXCYPC.ZBTACYXPD.ATBZXCPY

44.若有以下的说明语句,则与它等价的说明是chars[3][5]={"aaaa","bbbb","cccc"};

A.char**s1={"aaaa","bbbb","cccc"};

B.char*s2[3]={"aaaa","bbbb","cccc"};

C.chars3[][5]={"aaaa","bbbb","cccc"};

D.chars4[][4]={"aaaa","bbbb","cccc"};

45.有以下程序

#include<stdio.h>

voidfun(int*a,intn)/*fun函数的功能是将a所指数组元素从大到小排序*/

{intt,i,j;

for(i=0;i<n-1;j++)

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

if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}

}

main()

{intc[10]={1,2,3,4,5,6,7,8,9,0},i;

fun(c+4,6);

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

printf("\n");

}

程序的运行结果是

A.1,2,3,4,5,6,7,8,9,0,

B.0,9,8,7,6,5,1,2,3,4,

C.0,9,8,7,6,5,4,3,2,1,

D.1,2,3,4,9,8,7,6,5,0,

46.以下程序的输出结果是______。fun(intx,inty,intz){z=x*x+y*y;}main(){inta=31;fun(5,2,a);printf("%d",a);}

A.0B.29C.31D.无定值

47.设有以下说明语句structex{intX;floaty;charz;}example;则下面的叙述中不正确的是

A.struct结构体类型的关键字

B.example是结构体类型名

C.x,y,z都是结构体成员名

D.structex是结构体类型名

48.设x为int型变量,执行以下语句,x=10;x+=x-x;x;x的值为______。

A.10B.20C.30D.40

49.程序运行结果为______。#defineR3.0#definePI3.1415926#defineL2*PI*R#defineSPI*R*Rmain(){printf("L=%fS=%f\n",L,S);}

A.L=18.849556S=28.274333

B.18.849556=18.84955628.274333=28.274333

C.L=18.84955628.274333=28.274333

D.18.849556=18.849556S=28.274333

50.以下所列的c语言常量中,错误的是______。

A.0xFFB.1.2e0.5C.2LD.'\72'

51.下面程序的运行结果是#include<stdio.h>main(){chara[]="morning",t;inti,j=0;for(i=1;i<7;i++)if(a[j]<a[i])j=i;t=a[j];a[j]=a[7];a[7]=a[j];puts[a];}

A.mrgninrB.moC.moringD.morning

52.下面程序段中,输出*的个数是char*s="\ta\018bc";for(;*s!='\0';s++)printf("*");

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

53.下列的程序用来输出两个字符串前7个字符中对应相等的字符及其位置号,程序空白处应该填写的是()。#include<stdio.h>main(){Charsl[]="Chinese",s2[]="japnese";inti;for(i=0;s1[i]!='\0'&&s2[i]!='\0';i++)if(s1[i]=s2[i]&&i<7)____________________;}

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

B.puts(s1[i],i)

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

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

54.开发大型软件时,产生困难的根本原因是()

A.大系统的复杂性B.人员知识不足C.客观世界千变万化D.时间紧、任务重

55.

若有下列定义和语句:

intu=011,v=0x11,w=11;

printf("%o,%x,%d\n",u,v,w);

则输出结果是()。

A.9,17,11B.9,11,11C.11,11,11D.11,17,11

56.设计数据库的存储结构属于()。

A.需求分析B.概念设计C.逻辑设计D.物理设计

57.有以下程序:voidsum(int*A){a[0]=a[1];}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;for(i=2;i>=0;i--)sum(&aa[i]);printf("%d\n",aa[0]);}执行后的输出结果是

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

58.设计程序时,应采纳的原则之一是()。

A.程序的结构应有助于读者的理解B.限制goto语句的使用C.减少或取消注释行D.程序越短越好

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

A.数据库系统B.文件系统C.人工管理D.数据项管理

60.以下程序的输出结果是main(){inta=0,i;for(i=1;i<5;i++){switch(i){case0:case3:a+=2;case1:case2:a+=3;default:a+=5;}}printf(“%d\n”,A);}

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

四、选择题(20题)61.

62.设有以下函数:

voidfun(intn,char*s){…}

则下面对函数指针的定义和赋值均正确的是()。

A.void(*pf)();pf=fun;

B.void*pf();pf=fun

C.void*pf();*pf=fun;

D.void(*pf)(int,char);pf=&fun;

63.

64.

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

A.在switch语句中,不-定使用break语句

B.在switch语句中必须使用default

C.break语句必须与switch语句中的case配对使用

D.break语句只能用于switch语句

66.

67.在软件设计中不使用的工具是()。

A.系统结构图

B.程序流程图

C.PAD图

D.数据流图(DFD图)

68.

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

main

{inta,b,d=25;

a=d/10%9;

b=a&&(一1);

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

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

69.有如下说明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

70.

71.有以下程序:

#include<stdio.h>

main()

{inti,j,m=1;

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

{for(j=3;j>0;j--)

{if(i*j>3)break;

m*=i+j;

}

}

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

}

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

A.m=6

B.m=2

C.m=4

D.m=3

72.有以下程序:

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

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

73.(32)数据的存储结构是指()

A.数据所占的存储空间量

B.数据的逻辑结构在计算机中的表示

C.数据在计算机中的顺序存储方式

D.存储在外存中的数据

74.下列描述中,不符合结构化程序设计风格的是

A.使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑

B.注重提高程序的执行效率

C.自顶向下

D.限制使用goto语句

75.?下列程序的输出结果是()。#include<stdio.h>main{inta=0,i;for(i=1;i<5;i++){switch(i){case0:case3:a+=1;case1:case2:a=2default:a+=3;}}printf("%d",a);}A.19B.18C.6D.8

76.下列数据结构中,属于非线性结构的是A.循环队列B.带链队列C.二叉树D.带链栈

77.(18)下列说法中,不属于数据模型所描述的内容的是______。

A.数据结构

B.数据操作

C.数据查询

D.数据约束

78.有以下程序:

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

A.SunDan20042

B.SunDan20044

C.LiSiGuo20042

D.YangSan20041

A.提高耦合性、降低内聚性有利于提高模块的独立性

B.降低耦合性、提高内聚性有利于提高模块的独立性

C.耦合性是指一个模块内部各个元素间彼此结合的紧密程度

D.内聚性是指模块间互相连接的紧密程度

79.有以下程序:

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

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

80.设有定义:

五、程序改错题(1题)81.下列给定程序中,函数proc的功能是:先将字符串s中的字符按顺序存放到t中,然后把S中的字符按正序连接到t的后面。例如,当s中的字符串为WXYZ时,则t中的字符串应为WXYZWXYZ。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#include<string.h>

voidproc(char*s,char*t)

{

inti,s1;

s1=strlen(s);

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

//****found****

t[i]=s[s1];

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

t[s1+i]一s[i];

t[2*s1]=\O0;

}

voidmain

{

chars[100],t[100];

system("CLS");

print{("\nPleaseenterstrings:");

scanf("%s",s);

proc(s,t);

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

}

六、程序设计题(1题)82.编写函数fun,其功能是:求ss所指字符串中指定字符的个数,并返回此值。

例如,若输入字符串123412132,输入字符为l,则输出3。

注意:部分源程序在文件PROGl.C中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

参考答案

1.B

2.D解析:中序遍历的递归算法定义:①遍历左子树;②访问根结点;③遍历右子树。前序遍历的递归算法定义:①访问根结点;②遍历左子树;③遍历右子树。后序遍历的递归算法定义:①遍历左子树;②遍历右子树;③访问根结点。根据前序遍历的结果可知,a是根结点。由中序遍历的结果dgbaechf可知,d、g、b是左子树的结点,e、c、h、f是右子树的结点。再由前序遍历的结果bdg可知,b是a左边子树的根,由cefh可知,c是a右边子树的根。再由中序遍历的结果dgb可知,d、g是b左边子树的结点,b右边子树无结点。再由前序遍历结果dg可知,d为b左子树的根,g是以d为根的子树的右结点。至此,a的左子树已完全弄清楚了。同样的道理,可以弄清楚以c为根的子树的结点位置。所以可知后序遍历的结果是D。

3.D考查if循环语句。if(表达式),其中表达式是一个条件,条件中可以是任意的合法的数值。

4.A

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

6.D解析:本题中fun函数实现了字符串函数strcat的功能,将字符串aa连接到字符串ss的末尾。调用fun函数时,形参t和s分别指向了字符串ss和aa,然后通过一个while循环使t指向字符串ss的结束符的位置,第二个while循环将字符串aa中的字符(包括结束符'\\0')逐个复制到字符串ss的末尾处。

7.D解析:数据库表中字段转化为属性,把记录的类型转化为关系模式。

8.A

9.A解析:选项B中d已经为地址,不应在加上求地址符号“&”,故选项B不正确;选项C中,a和b都为变量不是地址,应该在a和b之前加上求地址符号“&”,故选项C不正确:选项D中指针d所指向的存储空间的位置为变量c的值,不为地址,故选项D不正确,所以,4个选项中A为所选。

10.B

11.B解析:scanf函数的一般格式是:

scanf(格式控制,地址表列)

该格式中,地址表列中应是变量地址,而不是变量名。注意:调用putchar和getchar函输出和输入字符。

12.B

13.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次。

14.C程序运行后,首先输出的是p的值,然后再输出a的值。p=d++,得到p的值为d的初始值2;a的值不变,仍为1。

15.A

16.A本题考查两个概念:①用单引号括起来的一个字符常量只能存放一个字符;②℃语言中没有字符串变量,只能用字符数组来存储字符串。

17.D要想使程序输出25,则j-40=25,j=65,而j初值是50,所以填入for循环的语句,使引用的数组元素累加65-50=15即可,D选项中,i下标从0开始,i=2指向第3个数50+a[2]=50+10=60,继续循环60+a[3]=60+5=65,此时i=4跳出,循环结束。

18.A赋值运算符的左边只能是变量,而不能是常量或表达式。

19.C解析:在C语言中,字符串以'\\0'作为结束符,因此数组x的长度为7+1=8,而数组y的长度等于7。

20.Dfun函数接收两个整型指针变量a、b。for循环判断a、b指向的值大小和getchar读入的字符是否为“@”来决定循环是否执行。循环体内对a、b指向的值各自自增1、自减1。main函数定义并初始化实参i的值为0,实参j的值为5,调用函数fun,传入i、j的地址。所以形参a指向i,形参b指向j,*a的值为0,*b的值为5,*a<*b为真,执行循环体;*a的值为1,*b的值为4,*a<*b为真,执行循环体;*a的值为2,*b的值为3,*a<*b为真,执行循环体;*a的值为3,*b的值为2,*a<*b为假,getchar读入字符“a”,执行循环体;*a的值为4,*b的值为1,*a<*b为假,getchar读入字符“b”,执行循环体;*a的值为5,*b的值为0,*a<*b为假,getchar读入字符“@”,fun函数执行完毕,main函数输出5,0。故本题答案为D选项。

21.strudctSTRUstrudctSTRU解析:结构件类型是构造数据类型,是用户自己定义的一种类型。

结构体类型的定义:

struct结构体类型名

{

成员项表;

};

定义结构体变量的的形式为:

struct结构体类型名变量1,变量2,...?

其中变量包括;一般变量、指针变量、数组变量等。

22.类类解析:在面向对象的方法中,把具有相同属性和方法的对象称为类,类是对象的抽象,对象是类的实例。

23.44解析:将程序中所有的宏替换掉可得:M=2+1,K=2+1*2+1/2=4,所以for循环共循环了K-1+1次,即4-1+1共4次。

24.n/2性表的任何位置插入一个元素的概率相等,即概率为p=1/(n+1),则插入一个元素时所需移动元素的平均次数为E=1/(n+1)(n-i+1)=n/2。

25.关系或一个关系关系或一个关系解析:在关系数据库中,把数据表示成二维表,而一个二维表就是一个关系。

26.44解析:一维数组元素的定义形式为:数组名[N],则该数组中元素的下限是0,上限是N-1。

27.需求获取需求获取解析:软件的需求分析阶段的工作,可以概括为四个方面:需求获取、需求分析、编写需求规格说明书和需求评审。需求获取的目的是确定对目标系统的各方面需求;需求分析是对获取的需求进行分析和综合,最终给出系统的解决方案和目标系统的逻辑模型;编写需求规格说明书作为需求分析的阶段成果,可以为用户、分析人员和设计人员之间的交流提供方便,可以直接支持目标软件系统的确认,又可以作为控制软件开发进度的依据;需求评审是对需求分析阶段的工作进行的复审,验证需求文档的一致性、可行性、完整性和有效性。

28.bi.dat"w"或"bi.dat""w+"bi.dat,'w'或'bi.dat','w+'解析:根据fopen函数的调用方式fopen(文件名,使用文件方式)和题意可得结果。

29.*s-*t*s-*t解析:两字符串大小比较必须从它们的首字符开始,在对应字符相等情况下循环,直至不相等结束。相等时,若字符串已到了字符串的结束标记符,则两字符串相同,函数返回0值;如还有后继字符,则准备比较下一对字符。对应字符不相同,循环结束。循环结束时,就以两个当前字符的差返回,所以在空框处应填入*s-*t,保证在s>t时,返回正值,当s<t时,返回负值。

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

31.66解析:分析程序可知,每循环一次,x的值加1,然后检测循环控制条件(y!=19)&&(x<7),因y的值不变,故满足x<7时循环6次。

32.时间时间解析:算法的复杂度主要指时间复杂度和空间复杂度。所谓算法的时间复杂度,是指执行算法所需要的计算工作量;算法的空间复杂度,一般是指执行这个算法所需要的内存空间。

33.空间复杂度和时间复杂度空间复杂度和时间复杂度解析:算法的复杂性是指对一个在有限步骤内终止算法和所需存储空间大小的估计。算法所需存储空间大小是算法的空间复杂性,算法的计算量是算法的时间复杂性。

34.

35.

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

37.A

38.100010100010解析:首先将程序中的宏替换掉,两处的宏替换后分别为i1=1000/10*10和i2=1000/(10*10),即i1=1000,i2=10,所以最后输出的i1和i2的值分别为1000和10。

39.软件工程管理软件工程管理解析:软件工程足指,采用工程的概念、原理、技术和方法指导软件的开发与维护:软件工程学的主要研究对象包括软件开发与维护的技术、方法、工具和管理等方面。即软件工程研究的内容主要包括:软件开发技术和软件工程管理。

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

41.C解析:C语言中在做逻辑或运算时,自左向右判断各个参加或运算的表达式,一旦运算到某式的值为非零时,表明整个表达式一定为真,余下的语句则不再进行运算。本题中,++x的值为真,则++y并没有进行运算,所以y值不变。

42.B解析:T是R∪S的结果,关系T由属于关系R的或者属于关系S的元组组成。

43.B解析:所谓二叉树的前序遍历(DLR)是指在访问根结点、遍历左子树与遍历右子树这3者中,首先访问根结点,然后遍历左子树,最后遍历右子树,并且,在遍历左右子树时,上述规则同样适用,即“根-左-右”。故该二叉树的前序遍历结果为“ATBZXCYP”。对于本题,若使用后序遍历和中序遍历的结果分别为“ZBTYCPXA”和“TZBACYXP”。

44.C解析:本题中的s数组是一个二维字符数组,选项A)是一个双重指针,但字符串的长度没有限制;选项B)是一个元素为字符指针的数组,同样的也是字符串的长度没有限制;选项D)中,每个字符串的长度限制为4,不正确。注意:用字符数组作为字符串和用指针指向的一个字符串之间的区别。

45.D解析:在本题中,主函数在调用fun()函数进行排序时,传递的参数是c+4和6,fun()函数实现的功能是将数组c的第5个元素开始的6个元素依次进行从大到小的顺序排列。排序之后,数组c的内容变为{1,2,3,4,9,8,7,6,5,0}。

46.C解析:函数fun的形参是简单变量,main函数中调用fun时只是把实参的值传递给形参,形参的改变不影响实参,所以调用完函数fun后a的值不发生变化,即a=31。

47.B解析:本题中,structex是结构体类型名,ex-ample是结构体变量名。

48.B解析:本题x=10,表达式“x+=x-=x-x;”的求解步骤如下:先进行x=x-x的运算,相当于x=x-(x-x)=x=10;再进行x+=x的运算,即x=x+x=200

49.A

50.B解析:在C语言中常量可以用十进制数、八进制数、十六进制数来表示:也可以用转义字符、长整型、科学计数法等来表示。选项A为十六进制表示法正确,故选项A正确。选项B为科学计数法,但在选项B中的科学计数的表示形式是错误的,指数不能为小数,故选项B的表示法是错误的。选项C为长整型表示法正确,故C正确。选项D为转义字符表示正确,故选项D的表示法是正确的。所以,4个选项中选项B符合题意。

51.B解析:本题考查了一维数组元素的引用方法。题中数组a为一字符串数组,通过数组首地址和下标可以引用数组中的每个元素。因为字符数组相当于字符串,所以可以用字符串输出函数puts()来输出字符数组中的各个字符。

52.C解析:本题中,格式符。表示的是八进制无符号形式输出整型数(不带前导0),字符常量在内存中占一个字节,存放的是ACSII码代码值。C语言规定,所有字符常量都作为整型量来处理,在计算机内部,其对应的整数值就是ACSII字符集中该字符的序号,即&*s中有几个字符就输出几个*。

53.C解析:putchar(s)的功能是把字符s输出到标准输出设备;puts(s1)是把s1指向的字符串输出到标准输出设备。

54.A开发大型软件时,产生困难的原因有很多,如需求难以捕捉、员工水平有限、工作安排不太合理、进度控制难以把握、系统开发时间有限等元素,但这些都不是根本的原因,根本的原因是大系统的复杂性。

55.C解析:在C语言中,“%d”表示输出带符号的十进制整型数;“%x”表示以十六进制无符号型输出整型数据(即不带前导0x或0X);“%o”表示以八进制无符号型输出整型数据(即不带前导0)。

56.DD。【解析】物理设计阶段主要解决选择文件存储结构和确定文件存取方法的问题。物理设计阶段包括:选择存储结构、确定存取方法、选择存取路径、确定数据的存放位置。

57.A解析:本题考核的知识点是数组的定义、赋初值以及函数调用的组合应用.本题中函数sum(int*A)的作用是:将形参a所指的数组中的第二个元素的值a[1]赋给第一个元素a[0]。主函数中定义一个长度为10的整型数组并赋初值,接着执行一个for循环,该循环共执行了3次.当i=2时,调用函数sum(&aa[2]),主函数中将&aa[2]作为实参传给行参a,所以此时形参a所指的数组的第一个元素和第二个元素分别为aa[2]和aa[3],故执行完该函数后将aa[3]的值赋给aa[2],即aa[1]=aa[3]=4,当i=1时,调用函数sum(&aa[1]),主函数中将&aa[1]作为实参传给行参a,所以此时形参a所指的数组的第一个元素和第二个元素分别为aa[1]和aa[2],故执行完该函数后将aa[2]的值赋给aa[1],即aa[1]=aa[2]=4;当i=0时;调用函数sum(&aa[0]),,主函数中将&aa[0]作为实参传给行参a,所以此时形参a所指的数组的第一个元素和第二个元素分别为aa[0]和aa[1],故执行完该函数后将aa[1]的值赋给aa[0],即aa[0]=aa[1]=4;故最后输出的aa[0]的值为4,所以,4个选项中选项A符合题意。

58.AA。【解析】程序设计的风格主要强调程序的简单、清晰和可理解性,以便读者理解。程序滥用goto语句将使程序流程无规律,可读性差;添加注释行有利于对程序的理解.不应减少或取消,程序的长短要依据实际的需要而定,并不是越短越好。

59.A在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是数据库系统这一阶段。数据库系统阶段用数据模型来表示复杂的数据,有较高的数据独立性。数据库系统为用户提供了方便的用户接口,用户既可使用查询语言或终端命令操作数据库,也可以用程序方式来操作。数据库管理系统提供了数据控制功能。

60.A解析:switch语句的执行过程是:在switch后面的表达式的值和case后面常量表达式的值吻合时,就执行该case分支的语句。如果在该语句的后面没有break语句,则按顺序继续执行下一个case分支,直到遇到break语句或switch多分支语句结束,在switch语句中,break语句的作用是使流程跳出switch结构,终止switch语句的执行。在本题中,因为每个case语句后面都没有break语句,所以,第一轮循环(i==1)执行过后a的值为8,第2轮(i==2)执行过后a的值为16,第3轮(i==3)执行过后a的值为26,第4轮(i==4)执行过后a的值为31,然后执行“i++”语句,这时循环条件为假,循环结束。

61.D

62.A\n函数指针的定义格式为函数类型(*指针变量名)(形参列表);函数名和数组名一样代表了函数代码的首地址,因此在赋值时,直接将函数指针指向函数名就行了。所以选项A正确。

\n

63.C

64.B

65.Adefault语句在swtch语句中可以省,所以8错误;switch语句中并非每个case后都需要使用break语句,所以c错误;break语句还可以用于for等循环结构中,所以D错误。

66.A

67.D【答案】:D

【知识点】:软件设计中使用的工具

【解析】:数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型,是在可行性研究阶段用到的。PAD图是问题分析图(ProblemAnalysisDiagram)的英文缩写,是在详细设计阶段用到的。系统结构图是对软件系统结构的总体设计的图形显示,是在概要设计阶段用到的。程序流程图是对程序流程的图形表示,故选D。

68.B

\n当逻辑运算符“&&”两边的值是非零时,逻辑表达式的值为真(即为1)。所以b=2&&(-1)=1,2%9=2,故a=2,故先算a/10=25/10=2。

\n

69.B解析:在C语言的数组元素的引用方法,我们在前面已经讲过了,比如数组元素a[0],可以用表达式*(p+0),即*p来引用,对于数组元素a[1],可以用表达式*(p+1)来引用,在这里,p+1的值就是数组元素a[1]的地址,对此地址使用“间接访问运算符”:*(p+1)就代表存储单元a[1],注意:一对圆括

温馨提示

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

评论

0/150

提交评论