C语言实现这道题“假设地球的坐标是x0,y0,z0,jhljx总共访问了n个星球,n个星球的坐标为x,y,z。 每次访问他都从地球出发,然后访问一个星球,再返回地球。 接着再从地球出发,去访问下一个星球,再返回地球。。。。 在飞行过程中,飞船每飞行1光年需要耗油k升。 请问在这n次飞行中,飞船耗油最多的一次是哪一次,这次飞行消耗了多少油。 (假设飞船都能够到达星球,不考虑没油的情况)。 输入 输入多组数据。 每组数据共(n+3)行。第一行为地球的坐标x0,y0,z0。(x0,y0,z0均为整数,且-1000<=x0,y0,z0<=1000) 第二行为访问的星球个数n。(1<=n<=100) 下面从第三行到第(n+2)行为jhljx要访问的星球的坐标x,y,z。(x,y,z均为整数,且-1000<=x0,y0,z0<=1000) 第(n+3)行为飞船每飞行1光年消耗的油量k。(k为整数,且1<=k<=100) 输出 输出飞船在这n次旅行中,耗油最多的一次飞行和这次飞行消耗的油量,两个数之间用空格隔开,油量的结果保留6位小数。 如果有多次飞行都满足耗油量最大,请输出序号最少的那一次。”
时间: 2023-06-01 22:06:48 浏览: 181
这道题可以使用C语言来解决。以下是参考代码:
#include <stdio.h>
#include <math.h>
int main() {
int i, j, n;
double x0, y0, z0, x, y, z, k, max_fuel = 0, fuel;
int max_index = 0;
scanf("%lf %lf %lf", &x0, &y0, &z0);
while(scanf("%d", &n) != EOF) {
for(i=1; i<=n; i++) {
scanf("%lf %lf %lf", &x, &y, &z);
fuel = k * (fabs(x0-x) + fabs(y0-y) + fabs(z0-z));
if(fuel > max_fuel) {
max_fuel = fuel;
max_index = i;
}
}
scanf("%lf", &k);
printf("%d %.6lf\n", max_index, max_fuel);
max_fuel = 0;
max_index = 0;
}
return 0;
}
代码说明:先输入地球的坐标,然后进入一个循环,不断读入要访问的星球个数n,再依次读入每个星球的坐标,计算出这次旅行消耗的油量,并与当前最大油量比较,如果比当前最大油量大,则更新最大油量和最大油量发生的旅行次数。最后读入每次旅行消耗的油量k,输出最大油量发生的旅行次数和油量。循环结束后程序终止。
阅读全文