蓝桥杯预赛题目与答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

蓝桥杯预赛题目1

第一题

标题:啤酒和饮料

啤酒每罐2.3元,饮料每罐1.9元。小明买了若干啤酒和饮料,一共花了82.3元。

我们还知道他买的啤酒比饮料的数量少,请你计算他买了几罐啤酒。

注意:答案是一个整数。请通过浏览器提交答案。

不要书写任何多余的内容(例如:写了饮料的数量,添加说明文字等)。

#include

void main() { int pj,yl; //啤酒与饮料double sum=82.3; for(pj=0; pj<=20; pj++) { yl=(int)((sum-pj*2.3)/1.9); if(pj*2.3+yl*1.9==sum) { printf("pj=%d,yl=%d\n",pj,yl); //pj=11 yl=30 } } }

第二题

标题:切面条

一根高筋拉面,中间切一刀,可以得到2根面条。

如果先对折1次,中间切一刀,可以得到3根面条。

如果连续对折2次,中间切一刀,可以得到5根面条。

那么,连续对折10次,中间切一刀,会得到多少面条呢?

答案是个整数,请通过浏览器提交答案。不要填写任何多余的内容。#include void main()

{ int qie(int n); int g(int n); int sum=0; //面条总数int n=10; sum=qie(n); printf("%d\n",sum); }

int qie(int n) //折叠n次以后,切一刀后的面条数{ int g(int n); if(n==1) { return 3; } else { return g(n-1)+ qie(n-1); //g(n)是有所有面条都有折痕一边的面条数} }

int g(int n) { if(n==1) { return 2; } else { return g(n-1)*2; } }-----1025

第三题

标题:李白打酒

话说大诗人李白,一生好饮。幸好他从不开车。

一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:

无事街上走,提壶去打酒。

逢店加一倍,遇花喝一斗。

这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。

请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。

注意:通过浏览器提交答案。答案是个整数。不要书写任何多余的内容。

#include

void main() { char order[16]; //遇到花的次序int n; //用二进制表示可能遇到的花与店的情况int i,num; int jiu; //酒的斗数int counta; //遇到店的次数int countb; //遇到花的次数int count=0; //满足条件的个数order[15]='\0'; for(n=31; n<=7936; n++) { //根据已经判断,最后两次遇到的必定是花;第13次之前酒的数为2斗。order[14]='b'; order[13]='b'; jiu=2; counta=0; countb=0; num=n; for(i=0; i<=12; i++) { if(num%2==0) //遇到的是花{ jiu=jiu-1; order[i]='b';

counta++; if(counta>8) { break; } } else //遇到的是店{ jiu=jiu*2; order[i]='a'; countb++; if(countb>5) { break; } } num=num/2; } if(countb==5 && jiu==2) { count++; printf("%s\n",order); } } printf("%d\n",count); }

方法2:

#include

int count=0; char order[16];

void main() { order[15]='\0'; order[14]='b'; order[13]='b';

void fun(int num, int flower, int store, int jiu); fun(0,0,0,2); printf("%d\n",count); } void fun(int num, int flower, int store, int jiu) { if(jiu<0 || store>5 || flower>10) { return; } else if(num==13 && store==5 && jiu==2) { count++;

printf("%s\n",order); return; } else if(num<13) { order[num]='b';//遇到花fun(num+1,flower+1,store,jiu-1); order[num]='a'; //遇到店fun(num+1,flower,store+1,jiu*2); } }

第四题

标题:史丰收速算

史丰收速算法的革命性贡献是:从高位算起,预测进位。不需要九九表,彻底颠覆了传统手算!

速算的核心基础是:1位数乘以多位数的乘法。

其中,乘以7是最复杂的,就以它为例。

因为,1/7 是个循环小数:0.142857...,如果多位数超过142857...,就要进1

同理,2/7, 3/7, ... 6/7 也都是类似的循环小数,多位数超过n/7,就要进n

下面的程序模拟了史丰收速算法中乘以7的运算过程。

乘以7 的个位规律是:偶数乘以2,奇数乘以2再加5,都只取个位。

乘以7 的进位规律是:

满142857 (1)

满285714 (2)

满428571 (3)

满571428 (4)

满714285 (5)

满857142... 进6

请分析程序流程,填写划线部分缺少的代码。

241876844562801

//计算个位

int ge_wei(int a)

{

if(a % 2 == 0)

return (a * 2) % 10;

else

return (a * 2 + 5) % 10;

}

//计算进位

int jin_wei(char* p)

相关文档
最新文档