蓝桥等考C++组别
十二
级
第一部分:选择题
1、C++ L
12
(15分)
函数
f
un的定义如下,它的作用是( )。
bool fun(int x, int y)
{
if(x % y == 0)
return true;
return false;
}
求x和y的所有约数
判断x是不是偶数
判断x是不是质数
判断x能不能被y整除
正确答案:
D
2、C++ L
12
(15分)
下面关于函数的说法,错误的是( )。
程序中
可以只有主函数,但不能只有子函数
函数
必须有确定的返回值
在
函数外部声明的变量是全局变量
函数
的形式参数属于局部变量
正确答案:
B
3、C++ L
12
(20分)
下面哪个函数可以将一个多位数颠倒过来(如:1
23
变成3
21
,假设多位数不包含0)?( )
int fun(int x)
{
int y = 0;
while(x > 0){
y = y * 10 + x % 10;
x /= 10;
}
return y;
}
int fun(int x)
{
int y = 0;
while(x > 0){
x /= 10;
y++;
}
return y;
}
int fun(int x)
{
int y = 0;
while(x > 0){
y += x % 10;
x /= 10;
}
return y;
}
int fun(int x)
{
int y = 0;
while(x > 0){
y += x / 10;
x /= 10;
}
return y;
}
正确答案:A
第二部分:编程题
4、C++ L
12
整数的位数(20分)
题目名称:
整数的位数
题目描述:
输入一个正整数n,输出
它是几位数。
输入:
一个正整数
n(
1<=
n<=
100,00
0)
。
输出:
一
个正整数,为
n的位数
。
输入样例:
13256
输出样例:
5
参考程序:
#include <iostream>
using namespace std;
int Fun(int x)
{
int y = 0;
while(x > 0)
{
x /= 10;
y++;
}
return y;
}
int main(){
int n;
cin >> n;
cout << Fun(n);
return 0;
}
测试数据:
1.in
13256
1.out
5
2.in
23
2.out
2
3.in
9
3.out
1
4.in
980
4.out
3
5.in
1200
5.out
4
5、C++ L
12
石头剪刀布
(30分)
题目名称:
石头剪刀布
题目描述:
小蓝和
两个小朋友玩“石头剪刀布”的游戏
。
一局游戏中,三个人同时出一个手势“石头”、“剪刀”或“布”,这三种手势的胜负关系是“石头”>“剪刀”,“剪刀”>“布”,“布”>“石头”。
如果三个人的手势都相同或都不相同,这局游戏是平局;
只有在两个人手势相同的时候,才能分出胜负,其中:
如果小蓝能赢其余两人中至少一人,小蓝胜利(注意:胜利的可能不止他一个);
如果小蓝不能赢任何人,小蓝失败(失败的可能也不止他一个)。
下图的两个例子,都能分出胜负。
用数字
2代表“石头”,1代表“剪刀”,0代表“布”,输入n局游戏三个人的手势,每局包含3个数字,其中第一个代表小蓝的手势。输出小蓝在这n局中的胜负情况。
输入:
第一行一个正整数
n(n<=
2
0)
,表示游戏的局数;
后面n
行,每行
包含
3
个
数字(只能是2,1或0),代表这一局游戏三个人的手势,每局第一个数字是小蓝的手势。相邻两个数字之间用一个空格隔开。
输出:
一行,包含n个字符,为小蓝在这n局游戏中的胜负情况,“W” 代表胜利,“L”代表失败,“N”代表平局,相邻两个字符之间用一个空格隔开。
输入样例:
8
1 1 1
0 2 1
1 0 0
0 2 2
2 1 2
1 2 2
0 0 2
1 1 0
输出样例:
N N W W W L W W
参考程序:
#include <iostream>
using namespace std;
int n;
int a[
21
][3];
char Fun(int x, int y, int z)
{
if(x != y && x != z && y != z || x == y && x == z && y == z) return 'N'; //平局
else if(x == (y + 1) % 3 || x == (z + 1) % 3) return 'W'; //小蓝赢
else return 'L'; //小蓝输
}
int main(){
cin >> n;
for(int i = 0; i < n; i++)
{
for(int j = 0; j < 3; j++)
{
cin >> a[i][j];
}
}
for(int i = 0; i < n; i++)
{
cout << Fun(a[i][0], a[i][1], a[i][2]) <<" ";
}
return 0;
}
测试数据:
1.in
8
1 1 1
0 2 1
1 0 0
0 2 2
2 1 2
1 2 2
0 0 2
1 1 0
1.out
N N W W W L W W
2.in
9
1 1 0
0 0 0
0 1 0
2 1 2
1 2 1
0 2 1
1 1 1
2 1 2
1 1 0
2.out
W N L W L N N W W
余下略
蓝桥杯青少组C++组别12级编程练习真题(第6套,共8套)