蓝桥杯C语言本科B组预赛试题
-
蓝桥杯
C
语言本科
B<
/p>
组预赛试题
———
—————————————————————————————
作者:
—————————————
———————————————————
日期
:
2014
蓝桥杯
C/C++
语言本科
B
组预赛试题
(完整)
1.
啤酒和饮料
啤酒每罐
2.3
元,饮料每罐
1.9
元。小
明买了若干啤酒和饮料
,
一
共花了
p>
82.
3元。
我们还知道他买的啤酒比饮料的数量少
,
请你计算他买了几罐啤
酒。
注意
:
答案是一个整数。请通过浏览器提交答案。
不要书写任何多余的内容
(
例如
:
写了饮料的数量
,
添加说明文字<
/p>
等)。
2.
切面条
一根高筋拉面
,
中间切一刀,可以得到
2
根面条。
如果先对折
< br>1
次,中间切一刀,可以得到
3
根面条。
< br>如果连续对折
2
次
,
中间切一刀,可以得到5根面条。
那么
,
连续
对折
1
0次,中间切一刀
,
会得到多少面条呢?
答案是个整数
,
请通过浏览器提交答案。不要填写任何多余的内容。
3
.李白打酒
话说大诗人李白,一生好饮。幸好他从不开车。
一天
,
他提着酒壶
,
从家里出来
,
酒壶中有酒
2
斗。他边
走边唱:
无事街上走,提壶去打酒。
逢店加一倍,遇花喝一斗。
这一路上
,
他一共遇到店
5
次,遇到花
p>
10
次,已知最后一次遇到
的是花
,
他正好把酒喝光了。
请
你计算李白遇到店和花的次序
,
可以把遇店记为
a
,遇花记为
b
。
则
:
b
a
b
aa
bba
bbabbbb
就是合理的次序。像这样的答案一共有
多少呢
?
请你计算出所有可能方案的个数
(
包含题目给出的
)
。
注意:通过浏览器提交答案。
答案是个整数。不
要书写任何多余的
内容。
4.
史丰收速算
史丰收速算法的革命性贡献是
:从高位算起,预测进位。不需要
九九表,彻底颠覆了传统手算!
速算的核心基础是
:1
位数乘以多位数的乘法。
其中
,
乘以7是最复杂的,就以它为例。
因为
,1
/
7
是个循环小数:
< br>0
.
142
8
< br>5
7
...
,如果多位数超过<
/p>
14
2
857
...
,就要进1
同理,
2/7
,
3
/
7,
.
..
6
/
7
也都
是类似的循环小数
,
多位数
超过
n/7
,就要进n
下面的程序模拟了史丰收速算法中乘以7的运算过程。
乘以
7
的个位规律是
:
偶数乘以
2,
奇数乘以2再加<
/p>
5
,都只取个
位。
乘以
7
的进位规律是:
满
1
p>
4
2
857..
.
进1
,
满
285714...
进
2,
满
4
2
p>
8
5
7
1.
..
进
3,
满
57<
/p>
1
42
8.
..
进
4,
满
71<
/p>
4
2
8
5.
p>
.
.
进
5,
满
8
57<
/p>
14
2..
.
进
6
请分析程序流程
,
填写划线部分缺少的
代码。
//
计算个位
in
t
<
/p>
g
e
_w
e
p>
i(int
a)
{
if
(
a % 2
==
0
)
return
(
a
*
2) %
1
0;
e
l
se
re
t
urn (a *
2
+
5
)
%
10;
}
//
计算进位
in
t
jin_
we
i(char*
p)
{
char* level[]
=
{
,
5
71
4
28
428
5
,
}
;
char
bu
f
[7
];
bu
f
[
6
]
=
'
\
p>
0
'
;
strnc
p
y
(b
u
f
,p,6);
int
i
;
f
or
(i=5;
i>=
0
;
i
--)
{
int
r
=
strcm
p
(le
v
e
l[
< br>i], buf
)
;
if(
r
<0)
retu
r
n
i+1;
w
hi
le
(r
==0){
p
+=
6
;
strncpy(bu
f,
p,
6
)
;
r =
s
trc
m
p
(l
evel[i],
b
uf);
i
f
(r<0) return
i
+1
;
_
______
__
______
_
_______
__
____
_
;
/
/填空
}
}
re
turn
0;
}
//
多位数乘以
7
v
o
id
f(cha
r
*
s
)
{
i
n
t
head =
jin_wei
(
s);
if
(
h<
/p>
e
ad >
0
) pri
n
t
f
(
%
d
"
,
head
);
ch
a
r*
p
=
s
;
whi
l
e
(
*
p)
{
i
nt
a
=
p>
(*p-
'
0
'<
/p>
)
;
i
nt x = (ge
_
wei
(
a
)
+
j
in_wei
(
p+1))
%
10;
printf(
%
d
p++;
}
< br>p
ri
nt
f(
}
i
nt
mai
n(
)
{
< br>f(
8
571428571
"<
/p>
)
;
f
(
3
p>
8
3
4937543
"
);
re
< br>tu
r
n
0;
}
注
意
:
通过浏览器提交答案。只填写缺少的内容
< br>,
不要填写任何多余的
内容(例如
:
说明性文字)
5
.
打印图形
小明开动脑筋,编写了如下的程序
,
实现该图形的打印。
#
de
f
in
e
N 70
v
oi
d
f
(cha
r
a
[][
N
]
,
in
t
rank, i
n
t
row
,
i
n
t col)
{
< br>if(ran
k
=
=
1
)
{
a[row][co
l
]
=
'*';
r
e
tu<
/p>
r
n;
}
int w = 1;