题目来源:第10届蓝桥杯青少年组C++选拔赛
1、下面哪个密码最安全 D
A. 111111 B. 123456 C. qwerty D. Z2a8Q1
2、如果今天是星期六,再过60天是星期几?A
A. 星期三 B. 星期四 C. 星期五 D. 星期六
3、90到100之间有几个素数?B
A. 0 B. 1 C. 2 D. 3
4、下列几个32位IP地址中,书写错误的是( 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、下列表达式正确的是( C ).
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. str1和str2地址不同,P1和P2地址相同
B. str1和str2地址相同,P1和P2地址相同
C. str1和str2地址不同,P1和P2地址不同
D. str1和str2地址相同,P1和P2地址不同
题目来源:第11届蓝桥杯青少年组C++省赛
11、结构化程序所要求的基本结构不包括( B )。
A、顺序结构
B、GOTO()跳转
C、选择(分支)结构
D、重复(循环结构)
12、若定义int a=2,b=2,下列表达式中值不为4的是( A )
A.a*(++b)
B.a*(b++)
C.a+b
D.a*b
13、在下列选项中,不能输出100个整数的是( D )。
14、下列叙述中正确的是( B )。
A. 线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的
B. 线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构
C. 线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构
D. 上述三种说法都不对
解析:B 链式存储结构每个节点由数据域和指针域组成,顺序存储结构中只有元素本身,显然链式存储更多。
15、小蓝打羽毛球实行积分赛制,获胜积5分,打平积2分,失败扣1分。已知小蓝在20场积分赛后积61分且有3场比赛打平,那么小蓝的胜率为:( C )
A. 48%
B. 55%
C. 60%
D. 75%
// 3平 12胜 5负
二元一次解方程: x 胜利 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、若二维数组a有n列,则在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、按照“先进后出"原则组织数据的结构是( B )。
A.队列 B.栈 C.双向链表 D.二叉树
20、用0、1、2、3、4这5个数字,能组成多少个没有重复数字的多位偶数?( C )
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 ) 对象之间的信息传递是通过消息进行的
7、C++对C语言做了很多改进,下列描述中 D 使得C语言发生了质变,即从面向过程变成面向对象
A ) 增加了一些新的运算符 B ) 允许函数重载,并允许设置默认参数
C ) 规定函数说明必须用原型 D ) 引进类和对象的概念
8、下面关于类概念的描述中, D 是错误的
A ) 类是抽象数据类型的实现 B ) 类是具有共同行为的若干对象的统一描述体
C ) 类是创建对象的样板 D ) 类就是C语言中的结构体类型
9、C++语言是以 B 语言为基础逐渐发展而演变而成的一种程序设计语言
A ) Pascal B ) C C ) Basic D ) Simula67
10、C++语言中规定函数的返回值的类型是由 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
A ) _521 B ) computer~1 C ) case D ) 3var
13、面向对象程序设计思想的主要特征中不包括 D
A ) 封装性 B ) 多态性 C ) 继承性 D ) 功能分解,逐步求精
14、下列C++标点符号中表示一条预处理命令开始的是 A
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
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++语言的发展说法错误的是 C
A ) C++语言起源于C语言 B ) C++语言最初被称为“带类的C”
C ) 在1980年C++被命名 D ) 在1983年C++被命名
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; C)char 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、对定义重载函数的下列要求中, D 是错误的
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
38、在C++中,关于下列设置参数默认值的描述中,正确的是 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、在函数的返回值类型与返回值表达式的类型的描述中,错误的是 B
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(1、2,3、2,'+',&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 ) 形参是引用,实参是变量
51、在C++中,函数原型不能标识 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 B)11,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、下面程序的执行结果是 B
#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 ,使下面程序执行结果是13,18,23
#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 ) <<" ,"
68、在C++语言中,局部变量的隐含存储类型是 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