蓝桥杯比赛 NOC竞赛C++项目,选择题真题和模拟题汇总答案解析

梁老师
梁老师 北京小升初老师~

0 人点赞了该文章 · 71 浏览





图片

题目来源:第10届蓝桥杯青少年组C++选拔赛

1、下面哪个密码最安全 D

A. 111111 B. 123456  C. qwerty D. Z2a8Q1

2、如果今天是星期六,再过60天是星期几?A

A. 星期三  B. 星期四 C. 星期五  D. 星期六

390100之间有几个素数?B

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

4、下列几个32IP地址中,书写错误的是( C 

A. 162.105.128.2 B. 192.168.0.1

C. 256.256.129.1 D. 10.0.0.1

5、下列4种不同进制表示的数中,数值最小的是( D 

A. 八进制52 B. 十进制数44

C. 十六进制2F D. 二进制101000

题目来源:第11届蓝桥杯青少年组C++国赛

6在数组中,数组名表示(A.

A.数组第1个元素的首地址 B.数组第2个元素的首地址

C.数组所有元素的首地址 D.数组最后1个元素的首地址

7下列叙述中正确的是(A.

A.顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的

B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结构

C.顺序存储结构能存储有序表,链式存储结构不能存储有序表

D.链式存储结构比顺序存储结构节省存储空间

8下列排序方法中,最坏情况下比较次数最少的是(D.

A.冒泡排序 B.简单的选择排序

C.直接插入排序 D.堆排序

9下列表达式正确的是( .

A. 9++ B. (x+y)++

C. c+++c+++c++     D.++(a-b--)

解析: C。 9是一个常量,常量不能自增自减,而( x+y )和下面的( a -b )都是作为一种只读内存区存在的,所以都不能进行自增自减操作。

10针对以下代码,判断下列说法哪个是正确的(C.

const char str1[]="abc"

const char str2[] ='abc"

const char *p1 ='abc"

const char *p2 ='abc"

A. str1str2地址不同,P1P2地址相同

B. str1str2地址相同,P1P2地址相同

C. str1str2地址不同,P1P2地址不同

D. str1str2地址相同,P1P2地址不同

题目来源:第11届蓝桥杯青少年组C++

11结构化程序所要求的基本结构不包括( B )。

A顺序结构

BGOTO()跳转

C选择(分支)结构

D重复(循环结构)

12若定义int a=2b=2,下列表达式中值不为4的是( A 

A.a*++b

B.a*b++

C.a+b

D.a*b

13在下列选项中,不能输出100个整数的是(  D )。

图片

14下列叙述中正确的是( B )。

A. 线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的

B. 线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构

C. 线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构

D. 上述三种说法都不对

解析:链式存储结构每个节点由数据域和指针域组成,顺序存储结构中只有元素本身,显然链式存储更多。

15小蓝打羽毛球实行积分赛制,获胜积5分,打平积2分,失败扣1分。已知小蓝在20场积分赛后积61分且有3场比赛打平,那么小蓝的胜率为:( C ) 

A. 48%

B. 55%

C. 60%

D. 75%

// 3平 12胜 5

二元一次解方程: 胜利  y失败    一式 x+y=20-3      二式 5*x-y=55    一式+二式 6*x=72   x=12       12/20  =0.6   

题目来源:第12届蓝桥杯青少年组C++选拔

16表达式6-1的值是(A)。

A.整数5 B.字符5 C.表达式不合法 D.字符6

17、若二维数组an列,则在a[i][j]前元素个数为(B)。

A.i*n+j-1 B.i*n+j C.j*n+i D.i*n+j+1

18、以下叙述中正确的是(C)。

A.break语句只能用于switch语句体中。

B.continue语句的作用是:使程序的执行流程跳出包含它的所有循环。

C.break语句只能用在循环体内和switch语句体内。

D.在循环体内使用break语句和continue语句的作用相同。

19、按照“先进后出"原则组织数据的结构是( )。

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

20、用012345个数字,能组成多少个没有重复数字的多位偶数?(  

A.144  B.147    C.160    D.163  

解题分析:

解题分析:

五位数 60

个位是零:4*3*2*1*1=24(依次为万位、千位、百位、十位、个位

个位是零:3*3*2*1*2=36(依次为万位、千位、百位、十位、个位

四位数 60

个位是零:4*3*2*1=24(依次为千位、百位、十位、个位

个位不是零:2*3*3*2*1=36(依次为个位、千位、百位、十位、个位

三位数 30

个位是零:4*3

个位不是零:4*3*2

两位数 10

个位是零:4*1

个位不是零:3*2

图片

选择题模拟题部分

部分 C++基础知识

1下列C++标点符号中表示行注释开始的是  C     

A )  #                  B )  ;             C )  //                 D )  }

2下列字符串中可以用作C++标示符的是    A      

A )  _256          B )  class             C )  delete              D )  5char

3下列关于C++函数的描述中正确的是       C         

A )  主函数是程序的入口,它是由用户定义的函数调用

B )  函数是C++中面向对象程序设计框架的基本组成元素

C )  函数在调用前必须先被声明   D )  每个用户定义函数只能被其他函数调用一次

4下列关于C++关键字的说法中正确的是   D    

A )  关键字是用户为程序中各种需要命名的“元素”所起的名字

B )  关键字是对程序中的数据进行操作的一类单词

C )  关键字是在程序中起分割内容和界定范围作用的一类单词

D )  关键字是C++中预先定义并实现一定功能的一类单词

5每个C++程序都必须有且仅有一个   B     

A )  预处理命令           B )  主函数          C )  函数              D )  语句

6下面关于对象概念的描述中,    A   是错误的

A )  对象就是C语言中的结构变量       B )  对象代表着正在创建的系统中的一个实体

C )  对象是一个状态和操作(或方法)的封装体  D )  对象之间的信息传递是通过消息进行的

7C++C语言做了很多改进,下列描述中  D     使得C语言发生了质变,即从面向过程变成面向对象

A )  增加了一些新的运算符       B )  允许函数重载,并允许设置默认参数   

C )  规定函数说明必须用原型     D )  引进类和对象的概念

8下面关于类概念的描述中,   D   是错误的

A )  类是抽象数据类型的实现       B )  类是具有共同行为的若干对象的统一描述体

C )  类是创建对象的样板           D )  类就是C语言中的结构体类型

9C++语言是以 B  语言为基础逐渐发展而演变而成的一种程序设计语言

A )  Pascal            B )  C             C )  Basic       D )  Simula67

10C++语言中规定函数的返回值的类型是由 D    

A )  return语句中的表达式类型所决定的  B )  调用该函数式的主调用函数类型所决定的

C )  调用该函数式系统临时确定的       D )  在定义该函数式所指的数据类型所决定的

11、下列关于C++C语言关系的描述中错误的是 C        

A )  C++C语言的超集                       B )  C++C语言进行了扩充

C )  C++C语言都是面向对象的程序设计语言   D )  C++包含C语言的全部语法特征

12、下列字符串中可以用做C++标示符的是       

A )   _521       B )  computer~1    C )  case       D )  3var

13、面向对象程序设计思想的主要特征中不包括         

A )  封装性        B )  多态性     C )  继承性          D )  功能分解,逐步求精

14下列C++标点符号中表示一条预处理命令开始的是             

A )  #      B )  //          C )  }     D )  

15下列关于C++类的描述中错误的是      C        

A )  类与类之间可以通过一些手段进行通信和联络

B )  类用于描述事物的属性和对事物的操作

C )  类与类之间必须是平等的关系,而不能组成层次关系

D )  类与类之间可以通过封装而具有明确的独立性

16下列C++标点符号中表示一条语句结束的是      A        

A )      B )  //      C )  #     D )  {

17下列C++标点符号中表示复合语句结束的标记符是     C         

A )  #           B )  //         C )  }          D )  

18下列C++标点符号中表示复合语句开始的标记符是             

A )  {        B )  //        C )  }         D )  

19下列关键字中,      B   即在C语言中使用,又在C++语言中使用

A )  inline      B )  break       C )  private      D )  public

20下列字符串中不可以用作C++标示符的是      C        

A )  _521            B )  computer123      C )  int          D )  flower

21下列不正确的选项是      D        

A )  C++语言是一种面向对象的程序设计语言,它支持面向对象思想中的3个主要特征

B )  标点符号是在程序中起分割内容和界定范围作用的一类单词

C )  iostream是一个标准的头文件,定义了一些输入输出流对象

D )  类与类之间不可以进行通信和联络

22下列不正确的选项是      B        

A )  封装是一种信息隐藏技术

B )  标识符是由字母、数字、下划线组成的字符串,必须以数字或下划线开头

C )  编译是由源程序文件转换到目标文件的过程

D )  一个C++程序可以认为是函数串

23下列与流程控制有关的关键字是      A        

A )  goto          B )  static        C )  int          D )  sizeof

24下列正确的选项是       A       

A )  继承是创建一个具有别的类的属性和行为的新类的能力

B )  C语言支持面向对象的程序设计

C )  空白符是一种可以被编译的符号

D )  标示符不宜过长,一般设定为16个字符

25下列关于C++语言的发展说法错误的是             

A )  C++语言起源于C语言        B )  C++语言最初被称为“带类的C

C )  1980C++被命名         D )  1983C++被命名

27、下列表示引用的方法中,    A   是正确的

已知:int k=1000;

A )  int &x=k;      B )  char &y;   C )  int &z=1000;  D )  float &t=&k;

28、下列程序的执行结果为    A   

i nclude<iostream.h>

void mian( )  

{

int n=10;

int* pn=&n;

int* &rn=pn;

(*pn )  ++;

cout<<"n="<<n<<endl;

(*rn )  ++;

cout<<”n=”<<n<<endl;

}

A )   n=11           n=12              B )   n=11              n=11

C )   n=10           n=11              D )   n=11            n=10

29下列引用的定义中,     B     是错误的

A )  int i;   int &j=i;                 B )  int i;    int &j;    j=i;

C )  float i;  float &j=i;               Cchar d;    char &k=d;

30    B  是给对象取了一个别名,他引入了对象的同义词

A )  指针  B )  引用  C )  枚举  D )  结构

31下列表示引用的方法中,   A    是正确的

已知:int m=10;

A )  int &x=m;       B )  int &y=10;      C )  int &z;        D )  float &t=&m;

32下面程序的运行结果是    A    

i nclude<iostream.h>

void fun(int &a,int &b )  

{ int p;

p=a; a=b; b=p;

}

void exchange(int &a,int &b,int &c )  

{

if(a<b )  fun(a,b )  ;

if(a<c )  fun(a,c )  ;

if(b<c )  fun(b,c )  ;

}

int main( )  

{

int a,b,c;

a=12;

b=639;

c=78;

exchange(a,b,c )  ;

cout<<"a="<<a<<",b="<<b<<",c="<<c<<endl;

}

A )  a=639,b=78,c=12     B )  a=12,b=639,c=78    

C )  a=639,b=12,c=78     D )  a=78,b=12,c=639

33下面的程序输出结果为   C    

include<iostream.h>

int main( )  

{

int *ir;

int i;

ir=&i;

i=17;

cout<<"int i="<<i<<endl;

cout<<"int ir="<<*ir<<endl;

}

A )  int i=17      int ir=0        B )  int i=0       int ir=17

C )  int i=17      int ir=17       D )  程序语法错误,没有输出结果

34对定义重载函数的下列要求中,     是错误的

A )  要求参数的个数不同                B )  要求参数中至少有一个类型不同

C )  要求参数个数相同时,参数类型不同  D )  要求函数的返回值不同

35下面函数调用语句中实参的个数是   A    

xxx((v1,v2 )  ,(v3,v4,v5 )  ,v6 )  ;

A )  3         B )  4            C )  5         D )  6

36系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是    D    

A )  参数个数        B )  参数的类型       C )  函数名称        D )  函数的类型

37若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是       D       

A )  extern       B )  register        C )  auto         D )  static

38C++中,关于下列设置参数默认值的描述中,正确的是   C   

A )  不允许设置设置参数的默认值

B )  设置参数默认值只能在定义函数时设置

C )  设置参数默认值时,应该事先设置右边的再设置左边的

D )  设置参数默认值时,应该全部参数都设置

39若有下面函数调用语句:

fun(a+b,(x,y )  ,fun(n+k,d,(a+b )   )   )  ;

在此函数调用语句中实参的个数是  A   

A )  3      B )  4        C )  5      D )  6

40下列对重载函数的描述中,   A   是错误的

A )  重载函数中不允许使用默认参数

B )  重载函数中编译时根据参数表进行选择

C )  不要使用重载函数来描述毫无相干的函数

D )  构造函数重载将会给初始化带来多种方式

41在函数声明时,下列    D   项是不必要的

A )  函数的类型      B )  函数参数类型     C )  函数的名字      D )  返回值表达式

42在函数的返回值类型与返回值表达式的类型的描述中,错误的是        

A )  函数返回值的类型是在定义函数时确定,在函数调用时是不能改变的

B )  函数返回值的类型就是返回值表达式的类型

C )  函数返回值表达式类型与返回值类型不同时,函数表达式类型应转换成返回值类型

D )  函数返回值类型确定了返回值表达式的类型

43下面变量和函数说明:

#i nclude<iostream.h>char ch='*';void sub(int x,int y,char ch,double *z )  { switch(ch )    {   case '+':*z=x+y;break;   case '-':*z=x-y;break;   case '*':*z=x*y;break;   case '/':*z=x/y;break;  }}

下面合法的函数调用语句是 B         

A )   sub(10,20,ch,y )  ;                           

 B )   sub(12,32,'+',&z )  ;   

C )   sub(sub(1,2,'+',&y )  ,sub(3,4,'+',&x )  ,'-',&y )  ;  

D )   sub(a,b,&x,ch )  ;

44下列程序的输出结果是      B    

#include<iostream.h>void sub1(char a,char b )  { char c; c=a; a=b; b=c;}void sub2(char *a,char b )  { char c; c=*a; *a=b; b=c;}void sub3(char *a,char *b )  { char c; c=*a; *a=*b; *b=c;}int main( )  { char a,b; a='A'; b='B'; sub1(a,b )  ; putchar(a )  ; putchar(b )  ; a='A'; b='B'; sub2(&a,b )  ; putchar(a )  ; putchar(b )  ; a='A'; b='B'; sub3(&a,&b )  ; putchar(a )  ; putchar(b )  ; putchar('\n' )  ;}

A )  ABABAB     B )  ABBBBA        C )  ABBABA     D )  ABABBA

45下面程序的正确执行结果为   D  

#include<iostream.h>int f(int )  ;int main( )  { int a=2,i; for(i=0;i<3;i++ )   cout<<f(a )  <<" "; cout<<endl;}int f(int a )  { int b=0; static int c=3; b++; c++; return (a+b+c )  ;}

A )  7 7 7      B )  7 10 13      C )  7 9 11      D )  7 8 9

46下面程序的正确执行结果为      C  

#i nclude<iostream.h>void fun(char * *m )  { m++; cout<<*m<<endl;}int main( )  { static char *a[]={"MORNING","AFTERNOON","EVENING"}; char * *n; n=a; fun(n )  ;}

A )  为空      B )  MORNING      C )  AFTERNOON       D )  EVENING

47下面程序的输出结果      B   

#i nclude<iostream.h>int fun(char *s )  { char *p=s; while(*p!='\0' )    p++; return (p-s )  ;}int main( )  { cout<<fun("ABCDEF" )  <<endl;}

A )  3    B )  6    C )  8    D )  0

48当一个函数无返回值时,函数的类型应定义为      A        

A )  void     B )  任意     C )  int    D )  

49下面叙述中不正确的是      D      

A )  在函数中,通过return语句传回函数值

B )  在函数中,可以有多条return语句

C )  主函数名main( )  后面的一对圆括号中也可以带有形参

D )  调用函数必须在一条独立的语句中完成

50下列   D   的调用方式是引用调用

A )  形参是指针,实参是地址值      B )  形参和实参都是变量

C )  形参是数组,实参是变量        D )  形参是引用,实参是变量

51C++中,函数原型不能标识     D    

A )  函数的返回类型   B )  函数参数的个数    C )  函数参数类型   D )  函数的功能

52下列标识符中,      C       是文件级作用域的

A )  函数形参    B )  语句标号      C )  外部静态类标识符      D )  自动类标识符

53在传值调用中,要求      C        

A )  形参和实参类型任意,个数相等        B )  实参和形参类型都完全一致,个数相等

C )  实参和形参对应的类型一致,个数相等   D )  实参和形参对应的类型一致个数任意

54有一个int型变量,在程序中频繁使用,最好定义它为       A       

A )  register    B )  auto     C )  extern     D )  static

55考虑下面的函数原型:void testDefaulParam(int a,int b=7,char z='*' )  ;

下面函数调用中不合法的 C        

A )  testDefaulParam(5 )  ;       B )  testDefaulParam(5,8 )  ;

C )  testDefaulParam(5,'#' )  ;      D )  testDefaulParam(0,0,'*' )  ;

56采用函数重载的目的在于       D       

A )  实现共享    B )  减少空间     C )  提高速度     D )  使用方便,提高可靠性

57要求通过函数来实现一种不太复杂的功能,并且要加快执行速度,选

  A   

A )  内联函数    B )  重载函数   C )  递归函数     D )  嵌套函数

58下面程序的输出结果是       D       

#i nclude<iostream.h>void fun(int i )  ;int main( )  { int n=2; fun(n )  ; return 0;}void fun(int i )  { static int x=1; int y=1; if(i>0 )   {  ++x;  ++y;  cout<<x<<' '<<y<<' ';  fun(i-1 )  ; }}

A )  语法错误,不能输出正确结果      B )  2 2 2 2   C )  2 2 3 3    D )  2 2 3 2

59下面程序的输出结果为      B  

#i nclude<iostream.h>void prt(int *x,int *y,int *z )  { cout<<+ + *x<<","<<+ + *y<<","<<*(z++ )  <<endl;}int a=10;int c=20;int b=40;int main( )  { prt(&a,&b,&c )  ; prt(&a,&b,&c )  ;}

A )  11,42,31      12,21,41       B11,41,20      12,42,20

C )  11,21,40      11,21,41    D )  11,41,21      12,42,22

60下面程序的正确运行结果为      C 

#i nclude<iostream.h>fun(int a,int b )  { static int m=1,i=2; i+=m+1; m=i+a+b; return(m )  ;}int main( )  { int k=5,m=2,p; p=fun(k,m )  ; cout<<p<<","; p=fun(k,m )  ; cout<<p<<endl;}

A )  11,22    B )  12,23     C )  11,23     D )  10,23

61下面程序的输出结果是       D   

#i nclude<iostream.h>void fun(int *s,int *y )  { static int t=3; *y=s[t]; t--;}int main( )  { int a[]={1,2,3,4}; int i,x=10; for(i=0;i<4;i++ )   {  fun(a,&x )  ;  cout<<x<<","; } cout<<endl;}

A )  1,2,3,4    B )  0,0,0,0     C )  4,4,4,4   D )  4,3,2,1

62下面程序的输出结果是      A  

#i nclude<iostream.h>int fun(char *s )  { char *p=s; while(*p!='\0' )    p++; return (p-s )  ;}int main( )  { cout<<fun("ABCDEFGHIJKLMNIPQRST" )  <<endl;}

A )  20    B )  6     C )  19    D )  0

63下面程序的输出结果是      C   

#i nclude<iostream.h>int x=10;void fun(int c )  ;int main( )  { fun(x )  ; cout<<"x="<<x<<endl;}void fun(int x )  { x=1;}

A )  x=0   B )  x=1   C )  x=10    D )  语法错误,不能输出正确结果

64下面程序的执行结果是          

#include<iostream.h>int main( ) {  void swap( );  extern int a, b;  a = 3;  b = 10;  swap( );  cout << "a=" << a << ",b=" << endl;}int a, b;void swap( ) {  int temp;  temp = a;  a = b;  b = temp;}

A )  a=3,b=10   B )  a=10,b=3  C )  a=temp,b=temp   D )  语法错误,不能输出正确结果

65下列程序的输出结果是      A        

#include<iostream.h>void f( )  { static int i=15; i++; cout<<"i="<<i<<endl;}int main( )  { for(int k=0;k<2;k++ )    f( )  ;}

A )  i=16     i=17   B )  i=16     i=15   C )  i=15     i=16   D )  i=15     i=17

66在横线处填上适当的语句   C    ,使下面程序执行结果是131823

#include<iostream.h>int add(int x,int y=8 )  ;int main( )  {                   ; cout<<add(a )  <<","; cout<<add(a,add(a )   )  <<","; cout<<add(a,add(a,add(a )   )   )  <<endl;}int add(int a,int b )  { int s=a+b; return s;}

A )  int a=3   B )  int b=3   C )  int a=5   D )  int b=5

67在横线处填上适当的语句 A ,使下面的程序的执行结果是19 24 30 37 45

#include<iostream.h>int fun(int a )  { static int x=10; int y=1; x+=a; a++; y++; return(x+y+a )  ;}int main( )  { int i=3; while(i<8 )                 ; cout<<endl;}

A )  cout<<fun(i++ )  <<" "        B )  cout<<fun(i )  <<" "

C )  cout<<fun(i++ )  <<" ,"        D )  cout<<fun(i )  <<" ,"

68C++语言中,局部变量的隐含存储类型是   D    

A )  auto   B )  static   C )  extern   D )  无存储类型

69下面程序的输出结果为       D     

#include<iostream.h>int fun(char *s )  ;int main( )  { cout<<fun("hello" )  ; return 0;}int fun(char *s )  { char *t=s; while(*t!='\0' )    t++; return(t-s )  ;}

A )  语法错,不能输出正确结果   B )  0   C )  6   D )  5

图片


添加 家长论坛微信 



发布于 2024-04-26 20:25

免责声明:

本文由 梁老师 原创发布于 家长帮 ,著作权归作者所有。

登录一下,更多精彩内容等你发现,贡献精彩回答,参与评论互动

登录! 还没有账号?去注册

暂无评论

广告
All Rights Reserved Powered BY WeCenter V4.1.0 © 2025 京ICP备20005761号-2