我的火车代码出了什么问题?

-2 c

#include<stdio.h>
#include<stdlib.h>

#define MINUTES_PER_HOUR 60

int main(void){

    double distance, vel1, vel2;
    double min_to_meet;
    int hr_to_meet;

    printf("enter the distance separating the trains?\n");
    scanf("%1f", &distance);

    printf("what is the speed of train 1?\n");
    scanf("%1f, &vel1");

    printf("what is the speed of train 2?\n");
    scanf("%1f, &vel2");

    hr_to_meet = distance/(vel1 + vel2);
    min_to_meet = hr_to_meet*MINUTES_PER_HOUR;

    printf("it will take %.31f minutes to meet.\n", min_to_meet);

    printf("the first train will travel %.21f miles.\n", vel1*hr_to_meet);
    printf("the second train will travel %.21f miles.\n", vel2*hr_to_meet);
    system("pause");
    return 0;
}    
Run Code Online (Sandbox Code Playgroud)

我一直都是零,因为我的答案可以告诉我什么是错的?

mat*_*975 6

你在呼唤scanf这样的

 scanf("%1f, &vel2");
Run Code Online (Sandbox Code Playgroud)

但我想你想要

 scanf("%lf", &vel2);
         ^  
         ^  
Run Code Online (Sandbox Code Playgroud)

同样地vel1.你还需要

 scanf("%lf", &distance);
         ^
         ^
Run Code Online (Sandbox Code Playgroud)

不是它们之间的细微差别"%lf"(它应该用于扫描double- 你的变量是哪个)和你当前"%1f"用作第一个参数的传递scanf.

您当前调用的方式scanf将导致vel1vel2保持未初始化状态,因为您的引号位于错误的位置.你的报价是在正确的位置,distance但你没有在scanf调用vel1vel21. This makes your calculations forhr_to_meet`错误中进行此操作.