您的位置:首页 > 职场人生

黑马程序员-第五届蓝桥杯校内选拔试题和 答案

2014-03-07 17:54 204 查看
/*
一、坡度问题

有一段均匀的上坡路,长度刚好是1公里。某辆汽车从坡下开到坡顶,车上的气压表显示,海拔高度减少了49米。 求这段坡路的平均坡度(用度表示,尽量精确)

以下代码片段实现了该功能,请填写划线部分缺失的代码。
double length = 1000; //坡长
double height = 49; //高度差
double seta = asin(height/length) * ________________ ; //填空
printf("%f\n", seta); //输出坡度
*/

/*本试题的解析思考

asin :sin 是正弦函数 asin 是反正弦函数, a 表示 anti

sin30度=0.5

#include <stdio.h>
#include <math.h>
int main()
{
printf("%.6lf\n", 3.14159265/6);
printf("%.6lf\n", asin(0.5));
return 0;
}


角度与弧度进行相互的转换

所以 本题目的答案、应该是

180/3.14159265;

/*
二、堆煤球

小明的爷爷很怀旧,冬天来了他还是要自己做煤球。并且,爷爷把煤球堆放得十分整齐有规律:最上边一层只有1个煤球。
第二层4个煤球摆成正方形,再下面9个煤球也是摆成正方形。总之,第 n 层就是边长为 n 的正方形。这样的结构既通风又稳固。

小明数了数,一共有30层,请你帮助计算一下,一共有多少个煤球? ___________
**/

/*
试题分析
层数 煤球总量数
1 1
2 1+4
3 1+4+9
4 1+4+9+16
5 1+7+9+16+25

*/

#include <stdio.h>
#include<math.h>
int main()
{
int n,i,sum=0;
scanf("%d",&n);
for(i=1;i<n;i++)
{
sum+=i*i;
}
printf("%d\n",sum);
return 0;

}


/*
三、射箭成绩

某箭靶上标出的环数很特别,如下图所示,分别是:16,17,23,25,38。某人射了若干支箭,总环数为100,没有脱靶的箭。

如果只知道这些信息,请计算一下,他的箭可能的分布局面一共有几种? __________

很显然,如果一共射了4只箭,并且都在25环上就是可能的一种局面。这里我们假设每支箭都是完全相同的,并且只考虑最终的箭靶上的局面情况,不关心箭射出的顺序。
*/

/*试题分析
如果一共射了4只箭,并且都在25环上就是可能的一种局面。*/

#include <stdio.h>
int main()
{
int a, b, c, d, e, n;
for (a=0; a<10; a++)
for (b=0; b<10; b++)
for (c=0; c<10; c++)
for (d=0; d<10; d++)
for (e=0; e<10; e++)
if (a*16+b*17+c*23+d*25+e*38==100)
printf("%d %d %d %d %d\n", a, b, c, d, e);
return 0;
}


/*
四、回文数字

观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。

本题要求你找到一些5位或6位的十进制数字。满足如下要求:该数字的各个数位之和等于输入的整数。

【输入格式】
一个正整数 n (n介于10和100之间), 表示要求满足的数位和。

【输出格式】
若干行,每行包含一个满足要求的5位或6位整数。
数字按从小到大的顺序排列。
如果没有满足条件的,输出:-1

【样例输入】
44

【样例输出】
99899
499994
589985
598895
679976
688886
697796
769967
778877
787787
796697
859958
868868
877778
886688
895598
949949
958859
967769
976679
985589
994499

【样例输入2】
60

【样例输出2】
-1

【资源约定】
峰值内存消耗 < 64M
CPU消耗 < 1000ms

#include <stdio.h>
int main()
{
int a,b,c,n,flag=0;
scanf("%d",&n);
for(a=1;a<10;a++)
for(b=0;b<10;b++)
for(c=0;c<10;c++)
if((a*2+b+c*2)==n) {
printf("%d%d%d%d%d\n",a,b,c,b,a);
flag=1;
}
for(a=1;a<10;a++)
for(b=0;b<10;b++)
for(c=0;c<10;c++)
if((a*2+b*2+c*2)==n) {
printf("%d%d%d%d%d%d\n",a,b,c,c,b,a);
flag=1;
}
if(!flag) printf("-1\n");
return 0;
}


或者

#include<stdio.h>
int main()
{
int n, a,b,c,d,e,f,flag=0;
//因为六个数最大为54,所以输入的数据大于54的都是不满足条件的
scanf("%d",&n);
if(n>=54)
printf("-1\n");
else
{
//判断五位数中的回文数
for(a=0;a<10;a++)
for(b=0;b<10;b++)
for(c=0;c<10;c++)
for(d=0;d<10;d++)
for(e=0;e<10;e++)
if((a+b+c+d+e)==n)
{
printf("%d%d%d%d%d\n",a,b,c,d,e);
//    flag=1;
}
//判断六位数中的回文数
for(a=0;a<10;a++)
for(b=0;b<10;b++)
for(c=0;c<10;c++)
for(d=0;d<10;d++)
for(e=0;e<10;e++)
for (f=0;f<10;f++)
if((a+b+c+d+e+f)==n)
{
printf("%d%d%d%d%d%d\n",a,b,c,d,e,f);
//flag=1;
}

}

return 0;
}


/*五、邮局
C村住着n户村民,由于交通闭塞,C村的村民只能通过信件与外界交流。为了方便村民们发信,C村打算在C村建设k个邮局,
这样每户村民可以去离自己家最近的邮局发信。
现在给出了m个备选的邮局,请从中选出k个来,使得村民到自己家最近的邮局的距离和最小。其中两点之间的距离定义为两点之间的直线距离。
【输入格式】
输入的第一行包含三个整数n, m, k,分别表示。
接下来n行,每行两个整数x, y,依次表示。
接下来m行,每行包含两个整数x, y,。
在输入中,村民和村民、村民和邮局、邮局和邮局的坐标可能相同,但你应把它们看成不同的村民或邮局。

【输出格式】
输出一行,包含k个整数,从小到大依次表示你选择的备选邮局编号。(备选邮局按输入顺序由1到m编号)

【样例输入】
5 4 2村民的户数、备选的邮局数和要建的邮局数
0 0每户村民家的坐标
2 0依次表示每个备选邮局的坐标
3 1
3 3
1 1
0 1
1 0
2 1
3 2

【样例输出】
2 4

【数据规模和约定】
对于30%的数据,1<=n<=10,1<=m<=10,1<=k<=5;
对于60%的数据,1<=m<=20;
对于100%的数据,1<=n<=50,1<=m<=25,1<=k<=10。

【资源约定】
峰值内存消耗 < 64M
CPU消耗 < 2000ms
*/

这个题的方法太笨了,,求简答的答案
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: