《C语言及程序设计》实践参考——紧急救援

    xiaoxiao2025-10-29  9

    返回:贺老师课程教学链接

    【项目7-紧急救援】

    洪水突降,人们被困在各个屋顶上。如图所示: 救生船每次将从大本营出发,救了人之后将人送回大本营。已知救生船速度50米/分钟,逐个屋顶救人,每人上船1分钟,下船0.5分钟。以救援大本营为原点,输入每个屋顶的位置坐标和屋顶上的人数,求出所有人都到达大本营并登陆所用的时间。 要求使用结构体表示屋顶的坐标和人数。 [参考解答] 参考解答1:

    #include <stdio.h> #include <math.h> #define NUM 50 //设屋顶数不超过50 #define SPEED 50.0 #define UP 1.0 #define DOWN 0.5 struct Roof { float x, y; //屋顶的位置 int p; //屋顶上的人数 }; int main( ) { struct Roof roofs[NUM]; float totalTime = 0; int i,n; float x,y; int p; scanf("%d", &n); //先输入屋顶数 //用循环输入每个屋顶位置及人数 for(i=0; i<n; i++) { scanf("%f%f%d", &x, &y, &p); roofs[i].x = x; roofs[i].y = y; roofs[i].p = p; } //计算救援时间 for(i=0; i<n; i++) { x = roofs[i].x; y = roofs[i].y; p = roofs[i].p; //累加双程航行时间 totalTime += 2 *sqrt(x*x + y*y)/SPEED; //累加上下船时间 totalTime += p * (UP + DOWN); } //输出救援时间 printf("总时间: %.2f\n", totalTime); return 0; }

    参考解答2:结构体数组稍有不同

    #include <stdio.h> #include <math.h> #define NUM 50 #define SPEED 50.0 #define UP 1.0 #define DOWN 0.5 struct Point { float x, y; }; struct Roof { struct Point loc; //屋顶的位置 int p; //屋顶上的人数 }; int main( ) { struct Roof roofs[NUM]; float totalTime = 0; int i, n; float x,y; int p; scanf("%d", &n); //先输入屋顶数 //用循环输入每个屋顶位置及人数 for(i=0; i<n; i++) { scanf("%f%f%d", &x, &y, &p); roofs[i].loc.x = x; roofs[i].loc.y = y; roofs[i].p = p; } //计算救援时间 for(i=0; i<n; i++) { x = roofs[i].loc.x; y = roofs[i].loc.y; p = roofs[i].p; //累加双程航行时间 totalTime += 2 *sqrt(x*x + y*y)/SPEED; //累加上下船时间 totalTime += p * (UP + DOWN); } //输出救援时间 printf("总时间: %.2f\n", totalTime); return 0; }
    最新回复(0)