如何在C中调用void函数

如何在C中调用void函数,c,function,call,void,C,Function,Call,Void,我用四种不同的函数编写了这段代码,它的主要目的是从0-90的角度在表格中显示速度的角度、时间和距离。速度由用户输入。 但是当我调用生成函数的void函数时,我得到一个错误“未定义对`create_table'的引用”,这是我的代码 #include <stdio.h> #include <stdlib.h> #include <math.h> #define G 9.8 /* gravitation acceleration 9.8 m/s^2 */ #

我用四种不同的函数编写了这段代码,它的主要目的是从0-90的角度在表格中显示速度的角度、时间和距离。速度由用户输入。 但是当我调用生成函数的void函数时,我得到一个错误“未定义对`create_table'的引用”,这是我的代码

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

#define G 9.8   /* gravitation acceleration 9.8 m/s^2 */
#define PI 3.141592654

void create_table(double v);
double Projectile_travel_time(double a, double v);
double Projectile_travel_distance(double a, double v);
double degree_to_radian(double d);

int main(void)
{
    int n;
    double velocity;

    printf ("please enter the velocity at which the projectile is launched (m/sec): ");
    n = scanf("%lf" ,&velocity);

    if(n != 1)
    {
        printf("Invlid input. Bye...");
        exit(1);
    }

    while (velocity < 0 )
    {
        printf ("please enter a positive number for velocity: ");
        n = scanf("%lf", &velocity);
        if(n != 1)
        {
            printf("Invlid input. Bye...");
            exit(1);
        }
    }
    create_table(velocity);


    return 0;
}
  void create_table(double v)
    {
        printf("Angle      t      d\n");
        printf("(deg)    (sec)   (m)\n");

        double a,i;
        for( a=0; a<=90; a+=5)
        {
            for(i=0; i<=2; i++)
            {
                double t = Projectile_travel_time(a, v);
                double s = Projectile_travel_distance(a, v);
                printf("%d       %d       %d\n", a, t, s);

            }
        }


    }
    double Projectile_travel_time(double a, double v)
    {
        double t = ((2*v*sin(degree_to_radian(a)))/(G));
        return t;
    }
    double Projectile_travel_distance(double a, double v)
    {
        double d = ((v*v)/G)*sin(2*degree_to_radian(a));
        return d;
    }

    double degree_to_radian(double d)
    {
         double r = d*atan(1) * 4 / 180;
         return r;
    }
#包括
#包括
#包括
#定义G 9.8/*重力加速度9.8 m/s^2*/
#定义PI 3.141592654
void创建_表(双v);
双射弹行程时间(双a,双v);
双弹丸行程距离(双a,双v);
双度到双弧度(双d);
内部主(空)
{
int n;
双速;
printf(“请输入发射弹丸的速度(m/sec):”;
n=扫描频率(“%lf”和速度);
如果(n!=1)
{
printf(“Invlid input.Bye…”);
出口(1);
}
而(速度<0)
{
printf(“请为velocity:”输入一个正数);
n=扫描频率(“%lf”和速度);
如果(n!=1)
{
printf(“Invlid input.Bye…”);
出口(1);
}
}
创建_表(速度);
返回0;
}
void create_表(双v)
{
printf(“角度td\n”);
printf(“(deg)(sec)(m)\n”);
双a,我;

对于(a=0;a您必须将创建的函数保留在主函数之外

您需要将函数定义移出主函数。C不支持


编辑:也就是说,它们是可移植的,但不可移植。

尝试在main()之外实现您的功能

将所有功能定义
create_table
sparket_travel_time
sparket_travel_distance
degree_to_radian
写入主界面外

链接器无法在调用
create\u table
的位置找到
create\u table
的定义

我已经编辑了代码,但现在遇到了另一个问题,我的输出被完全关闭

改变

printf("%d       %d       %d\n", a, t, s);


你可以使用
%7.3f
来对齐所有的值。

你必须在main之外定义函数。谢谢!但是现在我得到了完全错误的数字。你知道我的函数可能有什么问题吗?不,我不认为这是问题,因为velocity只是按照用户输入的内容编写的。顺便说一句,你可以编写一个代码,也许有点问题更具可读性-例如度到弧度为(度/pi)*180#包括内联双到#度(双弧度){返回弧度*(180.0/M#pi);}:)对于pow,您可以使用Math.pow,etcthanks!但现在我得到了完全错误的数字。知道我的函数中可能有什么错误吗?请检查绑定值并尝试在此处粘贴输入值和预期输出值。velocity未初始化,您可以将其用作参数,因为它是一个局部变量,可以包含任何垃圾号。谢谢!但现在我得到了完全错误的数字。你知道我的函数中可能有什么错误吗?试着调试它们,如果你没有发现,问一个新问题,只关注你不理解的部分。谢谢,你知道为什么在for循环中,即使我将a增加5,但一旦我打印a的值,我会得到所有19次0。
printf("%lf       %lf      %lf\n", a, t, s);