2014蓝桥杯c语言本科b组预赛试题
2014 蓝桥杯 C/C+语言本科 B 组预赛试题 1 20142014 蓝桥杯蓝桥杯 C/C+C/C+语言本科语言本科 B B 组预赛试题(完整)组预赛试题(完整) 1.1.啤酒和饮料啤酒和饮料 啤酒每罐 2.3 元,饮料每罐 1.9 元。小明买了若干啤酒和饮料,一共花了 82.3 元。 我们还知道他买的啤酒比饮料的数量少,请你计算他买了几罐啤酒。 注意:答案是一个整数。请通过浏览器提交答案。 不要书写任何多余的内容(例如:写了饮料的数量,添加说明文字等)。 2.2.切面条切面条 一根高筋拉面,中间切一刀,可以得到 2 根面条。 如果先对折 1 次,中间切一刀,可以得到 3 根面条。 如果连续对折 2 次,中间切一刀,可以得到 5 根面条。 那么,连续对折 10 次,中间切一刀,会得到多少面条呢? 答案是个整数, 请通过浏览器提交答案。 不要填写任何多余的内容。 3.3.李白打酒李白打酒 2014 蓝桥杯 C/C+语言本科 B 组预赛试题 2 话说大诗人李白,一生好饮。幸好他从不开车。 一天,他提着酒壶,从家里出来,酒壶中有酒 2 斗。他边走边唱: 无事街上走,提壶去打酒。 逢店加一倍,遇花喝一斗。 这一路上,他一共遇到店 5 次,遇到花 10 次,已知最后一次遇到的是花,他正好把酒喝光了。 请你计算李白遇到店和花的次序, 可以把遇店记为 a, 遇花记为 b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。 注意:通过浏览器提交答案。答案是个整数。不要书写任何多余的内容。 4.4.史丰收速算史丰收速算 史丰收速算法的革命性贡献是:从高位算起,预测进位。不需要九九表,彻底颠覆了传统手算! 速算的核心基础是:1 位数乘以多位数的乘法。 其中,乘以 7 是最复杂的,就以它为例。 因为,1/7 是个循环小数:0.142857.,如果多位数超过 142857.,就要进 1 同理,2/7, 3/7, . 6/7 也都是类似的循环小数,多位数超过 n/7,就要进 n 2014 蓝桥杯 C/C+语言本科 B 组预赛试题 3 下面的程序模拟了史丰收速算法中乘以 7 的运算过程。 乘以 7 的个位规律是:偶数乘以 2,奇数乘以 2 再加 5,都只取个位。 乘以 7 的进位规律是: 满 142857. 进 1, 满 285714. 进 2, 满 428571. 进 3, 满 571428. 进 4, 满 714285. 进 5, 满 857142. 进 6 请分析程序流程,填写划线部分缺少的代码。 /计算个位 int ge_wei(int a) if(a % 2 = 0) return (a * 2) % 10; else return (a * 2 + 5) % 10; /计算进位 int jin_wei(char* p) 2014 蓝桥杯 C/C+语言本科 B 组预赛试题 4 char* level = “142857“, “285714“, “428571“, “571428“, “714285“, “857142“ ; char buf7; buf6 = '0' strncpy(buf,p,6); int i; for(i=5; i>=0; i-) int r = strcmp(leveli, buf); if(r 0) printf(“%d“, head); char* p = s; while(*p) int a = (*p-'0'); int x = (ge_wei(a) + jin_wei(p+1) % 10; printf(“%d“,x); p+; printf(“n“); int main() f(“428571428571“); 2014 蓝桥杯 C/C+语言本科 B 组预赛试题 6 f(“34553834937543“); return 0; 注意:通过浏览器提交答案。只填写缺少的内容,不要填写任何多余的内容(例如:说明性文字) 5. 5. 打印图形打印图形 2014 蓝桥杯 C/C+语言本科 B 组预赛试题 7 小明开动脑筋,编写了如下的程序,实现该图形的打印。 #define N 70 void f(char aN, int rank, int row, int col) if(rank=1) arowcol = '*' return; int w = 1; 2014 蓝桥杯 C/C+语言本科 B 组预赛试题 8 int i; for(i=0; i, 不能通过工程设置而省略常用头文件。 提交时,注意选择所期望的编译器类型。 9. 9. 地宫取宝地宫取宝 X 国王有一个地宫宝库。是 n x m 个格子的矩阵。每个格子放一件宝贝。每个宝贝贴着价值标签。 地宫的入口在左上角,出口在右下角。 小明被带到地宫的入口,国王要求他只能向右或向下行走。 走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿)。 当小明走到出口时,如果他手中的宝贝恰好是 k 件,则这些宝贝2014 蓝桥杯 C/C+语言本科 B 组预赛试题 13 就可以送给小明。 请你帮小明算一算,在给定的局面下,他有多少种不同的行动方案能获得这 k 件宝贝。 【数据格式】 输入一行 3 个整数,用空格分开:n m k (1, 不能通过工程设置而省略常用头文件。 提交时,注意选择所期望的编译器类型。 10. 10. 小朋友排队小朋友排队 n 个小朋友站成一排。现在要把他们按身高从低到高的顺序排列,但是每次只能交换位置相邻的两个小朋友。 每个小朋友都有一个不高兴的程度。开始的时候,所有小朋友的不高兴程度都是 0。 如果某个小朋友第一次被要求交换,则他的不高兴程度增加 1,如2014 蓝桥杯 C/C+语言本科 B 组预赛试题 15 果第二次要求他交换, 则他的不高兴程度增加 2 (即不高兴程度为 3) ,依次类推。 当要求某个小朋友第 k 次交换时, 他的不高兴程度增加 k。 请问,要让所有小朋友按从低到高排队,他们的不高兴程度之和最小是多少。 如果有两个小朋友身高一样, 则他们谁站在谁前面是没有关系的。 【数据格式】 输入的第一行包含一个整数 n,表示小朋友的个数。 第二行包含 n 个整数 H1 H2 Hn,分别表示每个小朋友的身高。 输出一行, 包含一个整数, 表示小朋友的不高兴程度和的最小值。 例如,输入: 3 3 2 1 程序应该输出: 9 【样例说明】 首先交换身高为 3 和 2 的小朋友,再交换身高为 3 和1 的小朋友,再交换身高为 2 和 1 的小朋友,每个小朋友的不高兴程度都是 3,总和为 9。 【数据规模与约定】 对于 10%的数据, 1, 不能通过工程设置而省略常用头文件。 提交时,注意选择所期望的编译器类型。