我目前正在课堂上学习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 回答
你的
return (diffhrs, diffmin)
语句没有做任何特别有用的事情 - 它只丢弃diffhrs
并返回diffmin
(在the comma operator in C上读取) .更改:
至:
欢迎来编程:)
你忘了打电话给你的功能 . 因此,您正在显示未初始化的变量 . 这可能会显示一些垃圾值,甚至可能导致崩溃 . 见this question .
在声明时初始化变量是一种很好的做法 . 喜欢:
尝试调用您的函数 . 他们可能需要一些调整 . 试试看 . 这是学习的方式 .
此外,您似乎试图通过引用传递参数 . 你应该做一些小改动 .
定义这样的函数:
在显示出发时间之前调用该功能,如下所示:
您可以通过引用here了解有关函数和传递参数的更多信息 .