蓝桥杯刷题
一.空间
二.排序
三.成绩分析
四.蛇形填数
五.跑步锻炼(较难)
蓝桥杯题库
一.空间
这道题很简单,要弄清单位间的转换和如何输出就可以啦
#include <stdio.h>
int main()
{
printf("%.0f",256/(32/4/2/1024.0000/1024));
return 0;
}
记住除的数里面一定要至少一个带小数点哟,不然会直接为0
二.排序
这道题看似很困难,实际上只要看到它的限制条件(最短,最小),其实就能发现规律啦
(1,0)两个元素需要冒泡一次,(2,1,0)三个元素需要冒泡三次,(3,2,1,0)四个元素需要冒泡5次,所以我们可以看出对于这种完全乱序的数组,我们最多需要排序n(n-1)/2次
#include<stdio.h>
int main()
{
//这里需要排105次至少得15个字符
//而15个字符如果完全乱序最多可排105次
//那么我们就以最小代价移动,也就是j向前移动5位
printf("jonmlkihgfedcba");
}
ps:字典序最小就是首元素最小
三.成绩分析
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,i,score[10000],max=0,min=100;
float aver=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&score[i]);
aver+=score[i];
if(max<score[i])
{
max=score[i];
}
if(min>score[i])
{
min=score[i];
}
}
aver=aver/n;
printf("%d\n%d\n%.2f\n",max,min,aver);
return 0;
}
这道题比较简单,没什么好说的
四.蛇形填数
这样其实可以看出其实是1+4+8+16,如果去掉第一个数其实就是等差数列,这样可以算出到第20个数时其实+4*19,利用等差公式可以得出第20个数是761
#include<stdio.h>
int main()
{
printf("761");
return 0;
}
五.跑步锻炼(较难)
这道题我是从年,月,日分别考虑的。
1.年是从2000年开始到2020年
3.月份用一个数组存起来
4.天数从第一天到这个月的最后一天
#include <stdio.h>
int main()
{
int i=0,day=0,sum=0,n=6;//因为是从星期6开始,所以n设为6,n为星期几
int month[13]=//这里月份从一开始,较好计算
{0,31,28,31,30,31,30,31,31,30,31,30,31};
int year=0;
for(year=2000;year<=2020;year++)//年份
{
if((year%4==0&&year%100!=0)||(year%400==0))//判断闰年
{
month[2]=29;//该2月的天数
}
else
{
month[2]=28;
}
for(i=1;i<=12;i++)//从第一月到第12月
{
for(day=1;day<=month[i];day++)//每一天
{
if(n==8)//达到星期8时,就改为星期一
{
n=1;
}
if(n==1||day==1)//如果是星期一或者每月第一天,就多跑1km
{
sum++;
}
n++;
sum++;//每天跑1km
if(year==2020&&i==10&&day==1)//判断是否是目的时间
{
printf("%d",sum);
}
}
}
}
return 0;
}