蓝桥等考C++组别
十七
级
第一部分:选择题
1、
C++ L17 (
15
分)
假定有代码
:
class Box // 矩形盒
{
private:
int width; // 宽
int height;// 高
public:
void set_
s
ize(int x, int y)
{
width = x;
height = y;
}
int get_
a
rea() // 计算面积
{
return width * height;
}
} box1;
int main()
{
box1.set_size(3, 5);
_
____________________
return 0;
}
要输出
box1
的面积,
以上代码
下划线处应填写( )。
A
.
cout << Box.get_area(box1);
B. cout << box1.width * box1.height;
C.
cout << box1.get_area();
D.
cout << Box.get_area();
正确答案:C
2
、C++ L17 (
15
分)
执行以下代码,输入“
I love C++
”,输出的是( )。
string s1;
cin >> s1;
for (int i = 0; i < s1.size(); i++)
{
s1[i] = tolower(s1[i]);
}
cout << s1 << endl;
A
.
i love c++
B.
i love C++
C
.
I
D.
i
正确答案:
D
3
、C++ L17 (20分)
执行以下代码,输出结果是( )。
string s = "Hello,xiaol
an
!";
string f = "l";
int p1 = s.rfind(f, 5);
cout << p1;
A
. 3
B. 4
C. 10
D. 11
正确答案:A
第二部分:编程题
4、
C++ L17
单词的个数(
2
0分)
题目名称:
单词的个数
题目描述:
给出一个包含若干个单词的字符串,
请
编写程序计算出字符串中包含的单词个数。
例如:
输入
的
字符串为
:
I
love
music
包含3个单词,故输出
3
。
输入:
仅1行,包含若干个单词,单词之间
以
一个空格隔开,总长度不超过
500
。
题目数据保证单词全部由英文字母组成。
输出:
一个整数,表示输入
的
字符串中包含的单词个数。
输入样例:
I
love
music
输出样例:
3
参考程序:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s;
int cnt = 0;
while (cin >> s)
{
cnt++;
}
cout << cnt;
return 0;
}
测试数据:
1.in
I love music
1.out
3
2.in
fpxuqhfxpnddvvl tl joayjwdmxm nhqmngqdpejbxgcbclr hrknvxdxeqijabmmb
2.out
5
余下略
5、
C++ L17
命名法转换(
3
0分)
题目名称:
命名法转换
题目描述:
帕斯卡命名法指当标识符是由两个或两个以上单词连在一起构成时,每个单词只有首字母大写,其它字母都是小写。
例如:G
ate
Width、
RoadLength
、UserName、T
otalCost
、User
Balance
下划线命名法是将多个单词使用下划线来连接(单词都为小写字母)。
例如:
g
ate_width
、ro
ad_length
、
user
_
name
、t
otal_cost
、u
ser_balance
现在给定若干个符合帕斯卡命名法的标识符,请你
按照以下规则
编写程序将它们转换成符合下划线命名法的名称。
规则:
在
帕斯卡命名标识符
中所有大写字母前加一个下划线(除首字母);
再将
帕斯卡命名标识符
中所有大写字母转为小写字母。
例如:G
ate
Width转换为g
ate_width
,
RoadLength
转换为ro
ad_length
,UserName转换为
user
_
name
,T
otalCost
转换为t
otal_cost
,User
Balance
转换为u
ser_balance
输入:
一个字符串,包含若干个标识符,标识符之间
以
一个空格隔开,总长度不超过
500
。
题目数据保证符合:
标识符仅包含英文字母
组成标识符的单词数量不小于2,单词长度介于2
~10
之间
标识符数量不超过5
0
输出:
一个字符串,表示将所有给定的标识符转换为下划线命名法的结果。相邻两个标识符之间以一个空格分隔。
输入样例:
G
ate
Width
RoadLength
输出样例:
g
ate_width
ro
ad_length
参考程序:
#include<iostream>
#include<string>
using namespace std;
string P2U(string s);
int main()
{
string s, res;
while(cin >> s)
{
res = P2U(s);
cout << res << ' ';
}
return 0;
}
string P2U(string s)
{
string r = tolower(s[0]);
for (int i = 1; i < s.size(); i++)
{
if (s[i] >= 'A' && s[i] <= 'Z')
{
r += "_";
r += tolower(s[i]);
}
else
{
r += s[i];
}
}
return r;
}
测试数据:
1.in
GateWidth RoadLength
1.out
gate_width road_length
2.in
MxBn DlCz SeBb OicTetQvd TvoZxdJfz
2.out
mx_bn dl_cz se_bb oic_tet_qvd tvo_zxd_jfz
余下略
蓝桥杯青少组C++组别17级编程练习真题(第5套,共6套)