计算机等级 > 二级考试 > C++语言程序设计 > C++模拟试题 > 文章内容

全国计算机二级C++语言程序设计考试精选选择题(4)

2017-6-3编辑:daibenhua

全国计算机二级C++语言程序设计考试精选选择题

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

  A.图元关系

  B.数据流

  C.控制流

  D.调用关系

  2.结构化程序设计的基本原则不包括(  )。

  A.多态性

  B.自顶向下

  C.模块化

  D.逐步求精

  3.软件设计中模块划分应遵循的准则是(  )。

  A.低内聚低耦合

  B.高内聚低耦合

  C.低内聚高耦合

  D.高内聚高耦合

  4.在软件开发中,需求分析阶段产生的主要文档是(  )。

  A.可行性分析报告

  B.软件需求规格说明书

  C.概要设计说明书

  D.集成设计计划

  5.算法的有穷性是指(  )。

  A.算法程序的运行时间是有限的

  B.算法程序所处理的数据量是有限的

  C.算法程序的长度是有限的

  D.算法只能被有限的用户使用

  6.对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是(  )。

  A.快速排序

  B.冒泡排序

  C.直接插入排序

  D.堆排序

  7.下列关于栈的叙述正确的是(  )。

  A.栈按“先进先出”组织数据

  B.栈按“先进后出”组织数据

  C.只能在栈底插入数据

  D.不能删除数据

  8.在数据库设计中,将E—R图转换成关系数据模型的过程属于(  )。

  A.需求分析阶段

  B.概念设计阶段

  C.逻辑设计阶段

  D.物理设计阶段

  9.有3个关系R、S和T如下:

  

  由关系R和S通过运算得到关系T,则所使用的运算为(  )。

  A.并

  B.自然连接

  C.笛卡儿积

  D.交

  10.设有表示学生选课的3张表,学生S(学号、姓名、性别、年龄、身份证号)、课程C(课号、课名)、选课SC(学号、课号、成绩),则表SC的关键字(键或码)为(  )。

  A.课号、成绩

  B.学号、成绩

  C.学号、课号

  D.学号、姓名、成绩

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

  A.C程序中的注释只能出现在程序的开始位置和语句的后面

  B.C程序书写格式严格,要求一行内只能写一个语句

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

  D.用C语言编写的程序只能放在一个程序文件中

  12.下列选项中不合法的标识符是(  )。

  A.print

  B.FOR

  C.&a

  D.-00

  13.下列选项中不属于字符常量的是(  )。

  A.’C’

  B."C"

  C.’\xCC’

  D.’\072’

  14.设变量已正确定义并赋值,以下正确的表达式是(  )。

  A.x=y+5=x+z

  B.int(15.8%5)

  C.x=y+z+5,++y

  D.x=25%5.0

  15.以下定义语句中正确的是(  )。

  A.inta=b=0;

  B.charA=65+1,b=’b’;

  C.floata=1,"b=&a,"c=&b;

  D.doublea=0.0;b=1.1;

  16.有下列程序段:

  charch:intk:

  ch=’a’;k=12;

  printf("%c,%d,",ch,ch,k);

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

  已知字符a的ASCIl十进制代码为97,则执行上述程序段后输出结果是(  )。

  A.因变量类型与格式描述符的类型不匹配输出无定值

  B.输出项与格式描述符个数不符,输出为零值或不定值

  C.a,97,12k=12

  D.a,97,k=12

  17.已知字母A的ASCIl代码值为65,若变量kk为char型,下列不能正确判断出kk中的值为大写字母的表达式是(  )。

  A.kk>=’A’&&kk<=’Z’

  B.!(kk>=’A’‖kk<=’2’)

  C.(kk+32)>=’a’&&(kk+32)<=’2’

  D.isalpha(kk)&&(kk<=91)

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

  19.若变量已正确定义,有下列程序段

  inta=3,b=5,c=7;

  if(a>b)a=b;c=a;

  if(C!=a)C=b;

  printf(”%d,%d,%d\n”,a,b,c);

  其输出的结果是(  )。

  A.程序段有语法错

  B.3,5,3

  C.3,5,5

  D.3,5,7

  20.有下列程序:

  #include

  voidmain(  )

  {

  intx=1,y=0,a=0,b=0;

  switch(x)

  {case1:

  switch(y)

  {

  Case0:a++;break;

  case1:b++break;

  }

  case2:a++;b++;break;

  case3:a++;b++;

  }

  printf(”a=%d,b=%d\n”,a,b);

  }

  程序的运行结果是(  )。

  A.a=1,b=0

  B.a=2,b=2

  C.a=1,b=1

  D.a=2,b=1

  21.有下列程序:

  #include

  voidmain(  )

  {

  intx=8;

  for(;x>0;x--)

  {

  if(x%3){printf("%d,",x--),continue;}

  printf(”%d,”,--x);

  }

  }

  程序的运行结果是(  )。

  A.7,4,2

  B.8,7,5,2

  C.9,7,6,4

  D.8,5,4,2

  22.下列不构成无限循环的语句或语句组是(  )。

  A.n=0;

  do{++n;)while(n<=0);

  B.n=0;

  while(1){n++;)

  C.while(n=1O);{n--;}

  D.for(n=0,i=1;;i++)n+=i

  23.有下列程序:

  #include

  voidmain(  )

  {inta[]={1,2,3,4),y,*p=&a[3];

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

  }

  程序的运行结果是(  )。

  A.y=0

  B.y=1

  C.y=2

  D.y=3

  24.下列错误的定义语句是(  )。

  A.intx[][3]={{0},{1},{1,2,3}};

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

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

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

  25.设有下列程序段:

  chars[20]="Beijing",*P;

  P=S;

  则执行“p=s;”语句后,下列叙述正确的是(  )。

  A.可以用*P表示s[0]

  B.S数组中元素的个数和P所指字符串长度相等

  C.S和P都是指针变量

  D.数组s中的内容和指针变量P中的内容相同

  26.若有定义“inta[2][3];”,下列选项中对a数组元素正确引用的是(  )。

  A.a[2][!1]

  B.a[2][3]

  C.a[0][3]

  D.a[1>2][!1]

  27.有定义语句“chars[10];”,若要从终端给S输入5个字符,错误的输入语句是(  )。

  A.gets(&s0);

  B.scanf("%s",s+1);

  C.gets(s);

  D.scanf("%s",s[1]);

  28.下列叙述中错误的是(  )。

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

  B.预处理命令行的最后不能以分号表示结束

  C.#defineMAX是合法的宏定义命令行

  D.C程序中预处理命令行的处理是在程序执行的过程中进行的

  29.下列结构体类型说明和变量定义中正确的是(  )。

  A.typedefstruct;

  {intn;charC;)REC;

  RECt1,t2;

  B.structREC;

  {intn;charC;}

  RECt1,t2;

  C.typedefstructREC;

  {intn=0;charc=’A’;}t1,t2

  D.struct

  (intn;charc;)REC;

  RECt1,t2

  30.下列叙述中错误的是(  )。

  A.gets函数用于从终端读入字符串

  B.getchar函数用于从磁盘文件读入字符

  C.fputs函数用于把字符串输出到文件

  D.fwrite函数用于以二进制形式输出数据到文件

  31.有下列程序:

  #include

  voidmain(  )

  {

  ints[12]={1,2,3,4,4,3,2,1,1,l,2,3),c[5]=

  {0},i;

  for(i=0;i<12;i++)c[s[i]]++;

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

  printf("\n")

  }

  程序的运行结果是(  )。

  A.1234

  B.2344

  C.4332

  D.1123

  32.有下列程序:

  #include

  voidfun(int*S,intn1,intn2)

  {

  inti,j,t;

  i=n1;j=n2

  while(i--;}

  }

  voidmain(  )

  {

  inta[10]={1,2,3,4,5,6,7,8,9,0),k;

  fun(a,0,3);fun(a,4,9);fun(a,0,9);

  for(k=0;k<10;k++)printf(”%d”,a[k]);printf

  ("\n");

  }

  程序的运行结果是(  )。

  A.0987654321

  B.4321098765

  C.5678901234

  D.0987651234

  33.有下列程序:

  #include

  #include"string.h"

  voidfun(char*s[],intn)

  {

  char*t;inti,j

  for(i=0;ifor(j=i+1;jif(strlen(s[i]>strlen(s[j])){t=s[i];s[i]=s

  [j];s[j]=t;}

  }

  voidmain(  )

  {

  char*ss[]=("bcc","bbcc","xy","aaaacc","aab—

  cc"};

  fun(ss,5);printf("%s,%s\n",ss[O],ss[4]);}

  程序的运行结果是(  )。

  A.xy,aaaacc

  B.aaaacc,xy

  C.bcc,aabcc

  D.aabcc,bcc

  34.有下列程序:

  #include

  intf(intx)

  {

  inty;

  if(x==0‖x==1)return(3);

  y=x*x-f(X-2);

  returny;

  }

  voidmain(  )

  {

  intZ;

  z=f(3);printf("%d\n",z);

  }

  程序的运行结果是(  )。

  A.0

  B.9

  C.6

  D.8

  35.有下列程序:

  #include

  voidfun(char*a,char*b)

  {

  while(*a==’*’)a++;

  while(*b=*a){b++;a++;}

  }

  voidmain(  )

  {

  char*s="*****a*b****",t[80];

  fun(s,t);puts(t)

  }

  程序的运行结果是(  )。

  A.*****a*b

  B.a*b

  C.a*b****

  D.ab

  36.有下列程序:

  #include

  #include”strin9.h”

  typedefstruct{charname[9];charsex;floatscore

  [2];}STU;

  voidf(STUa)

  {

  STUb={"Zha0",’m’,85.0,90.0);inti;

  strcpy(a.name,b.name);

  a.sex=b.sex;

  for(i=0;i<2;i++)a.score[i]=b.score[i];

  }

  voidmain(  )

  {

  STUc={"Qian",’f’,95.0,92.0);

  f(c);

  printf("%s,%c,%2.Of,%2.Of\n",C.name,C.sex,

  C.score[O],C.score[1]);

  }

  程序的运行结果是(  )。

  A.Qian,f,95,92

  B.Qian,m,85,90

  C.Zha0,f,95,92

  D.Zha0,m,85,90

  37.有下列程序:

  #include

  voidmain(  )

  {

  FILE*fp;inta[10]={1,2,3},i,n;

  fp=fopen("dl.dat","w");

  for(i=0;i<3;i++)fprintf(fp,"%d",a[i]);

  fprintf(fp,”\n”);

  fclose(fp);

  fp=open("dl.dat","r")

  fscanf(fp,"%d",&n);

  fclose(fp);

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

  }

  程序的运行结果是(  )。

  A.12300

  B.123

  C.1

  D.321

  38.变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进制表示的形式是11110000,若要求将a的高4位取反,低4位不变,所要执行的运算是(  )。

  A.a*b

  B.a|b

  C.a&b

  D.a<<4

  39.在C语言中,只有在使用时才占用内存单元的变量,其存储类型是(  )。

  A.auto和register

  B.extern和register

  C.auto和static

  D.static和register

  40.设有定义语句int(*f)(int);,则下列叙述正确的是(  )。

  A.f是基类型为int的指针变量

  B.f是指向函数的指针变量,该函数具有一个int类型的形态

  C.f是指向int类型一维数组的指针变量

  D.f是函数名,该函数的返回值是其类型为int类型的地址

  选择题答案与解析

  1.C。【解析】程序流程图是人们对解决问题的方法、思路或算法的一种描述,通常也称为程序框图。其中,带箭头的线段表示控制流,矩形表示加工步骤,菱形表示逻辑条件。

  2.A。【解析】结构化程序设计方法的主要原则可以概括为自顶而下、逐步求精、限制使用GOTO语句。类的特性包括继承和多态性。

  3.B。【解析】模块独立性的两个定性标准是耦合性和内聚性,内聚是一个模块内各个元素彼此紧密程度;耦合是一个软件结构内不同模缺之间互连程度的度量,各模块的内聚性越强,则耦合性越弱。软件设计应该遵循高内聚低耦合的特性。

  4.B。【解析】需求分析是对获取的需求进行分析和综合最终给出系统的解决方案和目标系统的逻辑模型。需求分析的最终结果是生成软件需要规格说明书,可以为用户、分析人员和设计人员之间的交流提供方便,可以直接支持目标确认,又可以作为控制软件开发进程的依据。

  5.A。【解析】算法的有穷性,是指算法必须在有限的时间内做完,即算法必须能在执行有限步骤之后终止。算法的有穷性还应包括实现的执行时间的含义,如果一个算法需要执行千万年,显然失去了实用价值。

  6.D。【解析】首先知道有哪些排序的方法及各种排序方法在最坏情况下需要比较的次数,冒泡排序n(n-1)/2、希尔排序0(n1.5)、简单选择排序n(n-1)/2、堆排序O(nl0g2n)。

  7.B。【解析】栈的特点是后进先出,是限定在表的一端进行插入和删除的线性表,允许进行插入和删除元素的一端称为栈顶,另一端称为栈底。

  8.C。【解析】数据库的设计阶段包括需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、编码阶段、测试阶段、运行阶段和进一步修改阶段,其中E—R图转换成关系数据模型的过程属于逻辑设计阶段。

  9.D。【解析】由题可知,T中的数据既在R中,也在S中,符合这个概念的是“交”运算,D正确。

  10.C。【解析】关键字是指属性或属性的组合,其功能是唯一地标识一个元组或数据,而SC中学号和课号的组合可以对元组进行唯一的标识。

  11.C。【解析】在程序中注释部分对程序的运行结果不产生任何影响,增加了程序的易读性,它可以出现在任意位置,并且书写自由,一行内可以写多个语句,语句可以写在多行上;由于C语言编写的程序有很多的移植性,可以被多个程序文件引用。

  12.C。【解析】标识符的概念只能由数字、字母和下画线组成,并且只能以字母和下画线开头,所以选项C不正确。

  13.B。【解析】字符常量是用一对单引号括起来的,而字符串常量是用双引号括起来的字符序列,所以选项B不正确;选项C中’\xCC’是十六进制表示的转义字符;选项D中’\O72’是八进制表示的转义字符。

  14.C。【解析】在赋值表达式中,赋值符号的左边只能为变量,不能为表达式,右边可以为常量或者是表达武,运算符“%”两边必须是整型数据,所以选项B、D错误。所以选项C正确。

  15.B。【解析】本题考查数据类型的定义,选项A中是要定义变量并且赋初值,但方式不时,必须单独定义其类型。选项C给实型变量赋值时不用双引号,也不能将地址赋予实型变量,在选项D中,C语言允许在一个类型说明符后说明多个相同类型的变量,各变量之间要用逗号隔开,而不是用分号隔开,选项B正确。

  16.D。【解析】printf语句在输出时,格式说明与输出项的个数应该相同。如果格式说明的个数少于输出项的个数(正如本题的情况),则多余的输出项不予输出,如果格式说明个数多于输出项个数,则对于多余的格式项输出不定值或0。故本题选项为D。

  17.B。【解析】选项A用逻辑与运算符来连接关系表达式’A’<=kk并且kk<=’z’,介于’A’与’Z’之间为大写字母。选项C用逻辑与运算符来连接关系表达式(kk+32)>’a’和(kk+32)<=’2’,因为大写’A’与小写’a’,ASCIl码相差32,由表达式可知C正确。选项D调用函数isalpha(),首先判断kk是否为字母,接着通过与运算(kk<=91)来判断kk是否为大写字母;而选项B的表达式给的结果是除了’A’与’z’的大写字母,不符合题意。

  18.B。【解析】逻辑或“‖”运算中,只要有一项为真,表达式的值就为真而逻辑与“&&”运算必须两边都为真时才为真,在选项B中c的值不为2、4、6时,表达式的值也为真。

  19.B。【解析】如果if判断条件成立时就执行其后的相关语句,否则不执行,第一个if条件a>b不成立,故不执行“a=b”,接着执行“c=a”,把a的值赋给c后,此时第二个if条件不成立,故不执行其后语句,最终点c的值为3。

  20.D。【解析】本题考查的是switch…case分支语句,x=1时,首先执行case1进行嵌套判断,y=0时switch(0)成立,执行case0,a自加1,遇到break,退出嵌套,接着执行case2,a自加为2,b自加为1,遇到break,结束循环,此时a=2,b=1,故选项D正确。

  21.D。【解析】x--后缀表示先用x的值再令x减1,--x前缀表示先将x减1,再执行程序,则输出(X--)继续下一次循环,输出“8,”,此时x自减值变为7,执行x--,x=6,x%3=0,后面语句不执行,执行语句“printf("%d,",--x);”,输出“5”,继续for循环中的x--,得到x=5,输出“5”;判断x%3为真,输出“4”,执行两次x--后,x=2,执行“{printf("%d",x--);cotinue;}”后,输出“2”;然后执行两次x--后,x=0,不符合“x>0”,循环结束。

  22.A。【解析】选项B中while(1)永远为真,一直自加下次进入死循环;选项C中while(n=10)同理死循环,没有下限范围;选项D中for循环中i也没有循环限定条件也将进入死循环;只有选项A中while(n<=o)循环判定成立,循环结束。

  23.D。【解析】本题定义一个一维数组和指针,接着将数组第4个元素的地址赋予*P数组下标从0开始,进行--p使指针P指向了数组的第3个元素,通过y=*P将数组第3个元素的值3赋予y,所以选项D正确。

  24.C。【解析】本题考查数组的定义一维数组定义和初始化是允许省略行下标,不允许省略列下标,故选项C错误。

  25.A。【解析】程序定义了字符数组S和字符型指针变量P,并且使P指向数组S的首地址,执行P=S语句后,*P表示s[o];S数组中元素的个数和P所指字符串长度不相等,s数组中包括字符串结束标志“\0”,而P所指字符串不包括“\0”,数组s中的内容和指针变量P中的内容不相同,数组中存放的是字符串,而指针变量P存放的是数组的首地址。

  26.D。【解析】数组的下标从0开始,数组a[2][3]包括元素a[0][0],a[0][1],a[0][2],a[1][0],a[1][1],a[1][2],只有选项D正确,1>2为假,所以是0,!为假也是0,即引用元素a[0][0],其他选项的引用均是下标越界。

  27.D。【解析】选项A调用函数gets使得s数组从s[0]开始得到输入的字符;选项B使得数组从元素s[1]开始得到输入的5个字符;选项C使得数组从s[0]开始得到输入的字符;而选项D的scan[(”%S”,S[1])调用错误,应为scanf(”%s”,&s[1])输入项部分应该是一个地址值。

  28.D。【解析】预处理命令是以“#”开始的语句,每一条预处理命令必须单独占用一行,由于不是C语言的语句,并且命令行的最后不能以分号表示结束,定义格式为“#de-fine标识符字符串”,预处理命令行是系统对源程序进行编译之前进行处理的,不是在程序执行的过程中。

  29.A。【解析】定义结构体类型的一般形式“struct结构体名{成员列表}”,struct结构体名不能加“;”号。

  30.B。【解析】本题考查的是c语言中输入、输出函数的使用,gets和getchar函数用于从标准输入设备键盘读入字符串和字符;fputs用于把字符串输出到文件;fwrite用于以二进制形式输出数据到文件。

  31.C。【解析】本题考查对for循环的使用,首先给两个数组赋值,第一个for循环从0开始循环12次遍历S数组的各个元素,数组将s[]中的元素值作为c[]数组中的下标,然后自加,使相应的值自加,当i=0,c[s[0]]++为c[1]++,其值变为1,当执行i=1,2,…,11后,c[1]、c[2]、c[3]、c[4]分别为4、3、3、2,故选项C正确。

  32.C。【解析】本题定义一个一维数组并赋初值,接着调用fun(),功能是使数组中的元素逆序,当调用fun(a,0,3),将实参传递给形参实现数组a中a[0]至a[3]这4个元素逆序;同理调用fun(a,4,9)是将上步排列好的a数组中a[4]至a[9]这6个元素逆序;调用fun£a,0,9)是将数组中a[o]至a[9]这10个元素再逆序,再用printf()函数输出结果为5678901234,故选项C正确。

  33.A。【解析】在main函数中,定义了一个指向字符串的指针数组,并赋初值,然后调用fun函数,其功能是比较数组中元素的长度,按长度从小到大排序,所以执行fun(ss,5)函数后*ss[]={"xy","bec","bbcc","aaaacc"},所以调用printf函数输出ss[0],ss[4]的值分别勾xy,aaaacc。

  34.C。【解析】本题考查了函数的调用,在f函数中将实参传给X,判断if语句为假。接着执行y=3*3=f(1),再执行f(1)而f(1)满足if条件语句,所以f(1)的值为3,那么代入y=3*3-f(1)=9-3=6,故选项C正确。

  35.C。【解析】在程序的主函数中main定义了一个指向字符串的指针和一个字符数组,然后调用fun(s,t),在fun()中第一个while语句判断*a中的值为“*”时继续扫描,如果不是“*”终止,第二个while循环,将*a中从“a”开始的后续所有字符都赋予*b,也就是t[0]中的内容为“a*b****”,所以此时的运行结果为选项C。

  36.A。【解析】本题考查在结构体中函数的调用,主函数调用f(c)后,实参传向形参,但程序中没有返回语句,故形参不能将值传回实参,实参之间值的传递具有不可逆性,所以printf输出的还是c中实参的值。

  37.B。【解析】本题考查文件的读写和相关操作,fp=fopen("dl.dat","w")以写的方式为输出建立新文本文件.调用printf输出“123”,fp=fopen("dl.dat","r")以只读的方式打开文本文件,不能对文件内容进籀操作,故运行结果为选项B。

  38.A。【解析】如果按题要求,高4位取反,低4位不变,则a为10101101,在选项中操作的结果,选项A中a*b=10101101,选项B中a|b=1111101,选项C中a&b=01010000,选项D中a<<4=11010000,故选项A正确。

  39.A。【解析】动态变量(auto)存储在内存中的动态存储区,只在程序运行中,系统才临时给变量分配内存单元;全局变量(extern)一经定义,系统为其分配固定的内存单元;静态变量(static),编译系统为其分配固定的存储空闻;寄存器变量(register)不保存在内存上,而是直接存储在CPU的寄存器中。

  40.B。【解析】定义语句int(*f)(int)中f是指向函数的指针变量,该函数中也只有一个int型的形参。

全国计算机二级C++语言程序设计考试精选选择题(3)

热点推荐

登录注册
触屏版电脑版网站地图