首页 文章

C编程,自上而下,出发时间

提问于
浏览
0

我目前正在课堂上学习C语言中的自上而下的编程,而且我不知道怎么会真正掌握它 .

我一直试图通过这个编程练习来学习它,你必须根据它们的到达时间(以km / hr和km的距离计算)来计算何时应该离开,但是我做了一些非常非常错误的事情,因为输出大约四百万 - 总是 .

我正在使用C语言中的问题解决和程序设计,相关章节是3.5 . 谁能告诉我我做错了什么?还有人可以解释形式参数如何以ELI5方式工作吗?

#include <stdio.h>
#define MINUTES_IN_HOUR 60

int find_dprt_time(int diffhrs, int diffmin, int arvl_time, int trvl_time);
double find_trvl_time(int trvl_time, int distance, int speed, double result);

int main()
{
     double distance;
     int time,
         speed,
         diffmin,
         diffhrs;

     printf("Enter the time you need to arrive in military time:\n");
     scanf("%d",&time);
     printf("Enter the distance to your destination in kilometers:\n");
     scanf("%lf",&distance);
     printf("Enter the speed you plan to average in km/hr:\n");
     scanf("%d",&speed);

     printf("Your departure time is %d%d.\n",diffhrs,diffmin);

     return 0;
}

int find_dprt_time(int diffhrs, int diffmin, int arvl_time, int trvl_time)
{

     diffhrs = arvl_time / 100 - trvl_time / 100;
     diffmin = arvl_time % 100 - trvl_time % 100;

     return (diffhrs, diffmin);
}

double find_trvl_time(int trvl_time, int distance, int speed, double result)
{

     result = distance / speed;
     trvl_time = MINUTES_IN_HOUR * result;

     return (trvl_time);
}

2 回答

  • 0

    你的 return (diffhrs, diffmin) 语句没有做任何特别有用的事情 - 它只丢弃 diffhrs 并返回 diffmin (在the comma operator in C上读取) .

    更改:

    return (diffhrs, diffmin);
    

    至:

    return diffhrs * 100 + diffmin;
    
  • 0

    欢迎来编程:)

    你忘了打电话给你的功能 . 因此,您正在显示未初始化的变量 . 这可能会显示一些垃圾值,甚至可能导致崩溃 . 见this question .

    在声明时初始化变量是一种很好的做法 . 喜欢:

    int diffhrs = 0;
    int diffmin = 0;
    

    尝试调用您的函数 . 他们可能需要一些调整 . 试试看 . 这是学习的方式 .

    此外,您似乎试图通过引用传递参数 . 你应该做一些小改动 .

    定义这样的函数:

    int find_dprt_time(int *diffhrs, int *diffmin, int arvl_time, int trvl_time)
    {
        *diffhrs = arvl_time / 100 - trvl_time / 100;
        *diffmin = arvl_time % 100 - trvl_time % 100;
    }
    

    在显示出发时间之前调用该功能,如下所示:

    find_dprt_time(&diffhrs, &diffmin, time, travel_time);
    

    您可以通过引用here了解有关函数和传递参数的更多信息 .

相关问题