在我的代码中,最后我有一个不会返回任何结果的函数。我认为这可能与我的指针有关。我不确定该怎么做,因为我是编码的新手,所以可以提供任何帮助。
#include <stdio.h>
#include <stdlib.h>
int PrintInstructions(void);
void GetData(float*, float*, float*);
double AccelerationDisplacement(float vi, float t, float a);
void PrintOutput (double result, float vi, float t, float a);
int main(void)
{
int x=PrintInstructions();
float vi,t,a;
double result;
GetData(&vi,&t,&a);
AccelerationDisplacement;
PrintOutput;
return 0;
}
int PrintInstructions(void)
{
printf ("This program determines distance traveled based on the data given, if you wish to quit, enter 'q', if you wish to continue enter any other character:");
char leave;
leave= getchar();
if (leave == 'q' || leave == 'Q')
exit(0);
else
return 1;
}
void GetData (float* vi , float* t, float* a)
{
printf ("Enter the vehicle's initial velocity in m/s:");
scanf ("%f",&vi);
printf ("Enter the time the vehicle travels in seconds:");
scanf ("%f",&t);
printf ("Enter the rate of acceleration in m/s:");
scanf ("%f",&a);
}
double AccelerationDisplacement (float vi, float t, float a)
{
float d=(vi * t)+ (.5 * a) * (t * t);
double result;
d=result;
printf ("Your answer is:", result);
}
答案 0 :(得分:2)
由于我没有enuf rep在问题下直接评论,因此我将其放在此处。正如Retired Ninja所说,
您不需要在scanf中使用多余的&,因为您已经在将指针作为参数传递了(建议您花一些时间来理解scanf中的&表示什么)
AccelerationDisplacement和PrintOutput是函数。因此,当您调用它们时,您需要在它们旁边有()并按照与顶部声明相同的顺序传递相关参数-
AccelerationDisplacement(vi,t,a);
PrintOutput(vi,t,a);
作为不请自来的建议,请学习如何使用gdb之类的工具来调试每一行。这将有助于理解代码的作用。