Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 质量间引力_C_Function_Pointers_Double - Fatal编程技术网

C 质量间引力

C 质量间引力,c,function,pointers,double,C,Function,Pointers,Double,为什么我的程序一直在计算相同的力?我正确地使用了这个公式,但是我不确定为什么我一直得到127达因的力。任何帮助都将不胜感激 #include <stdio.h> #include <math.h> const double gravity_constant = 6.673; void force_calculate(double a, double b, double c, double d); void input(double *a, double *b, doubl

为什么我的程序一直在计算相同的力?我正确地使用了这个公式,但是我不确定为什么我一直得到127达因的力。任何帮助都将不胜感激

#include <stdio.h>
#include <math.h>
const double gravity_constant = 6.673;
void force_calculate(double a, double b, double c, double d);
void input(double *a, double *b, double *c);
void display(double a, double b, double c, double d);
int main(int argc, char * argv[])
{
    double mass_1 = 0;
    double mass_2 = 0;
    double distance = 0;
    double force = 0;

    input(&mass_1, &mass_2, &distance);
    force = force_calculate(mass_1, mass_2, distance, force);
    display(mass_1, mass_2, distance, force);

    return 0;
}

void force_calculate(double a, double b, double c, double d)
{
    d = (gravity_constant*a*b)/(c*c);
    return;
}
void input(double *a, double *b, double *c)
{
    printf("What is the first mass in grams?\n");
    scanf("%lf", a);
    printf("What is the second mass in grams?\n");
    scanf("%lf", b);
    printf("What is the distance between the two masses in centimeters\n");
    scanf("%lf", c);
}
void display(double a, double b, double c, double d)
{
    printf("%fg is the first mass\n", a);
    printf("%fg is the second mass\n", b);
    printf("%fcm is the distance between the two masses\n", c);
    printf("%f is the force in dynes between both masses\n", d);
    return;
}
#包括
#包括
常数双重力_常数=6.673;
孔隙力_计算(双a、双b、双c、双d);
无效输入(双*a、双*b、双*c);
无效显示(双a、双b、双c、双d);
int main(int argc,char*argv[])
{
双质量_1=0;
双质量_2=0;
双倍距离=0;
双力=0;
输入(&mass_1,&mass_2,&distance);
力=力(质量1,质量2,距离,力);
显示(质量1、质量2、距离、力);
返回0;
}
空隙力_计算(双a、双b、双c、双d)
{
d=(重力常数*a*b)/(c*c);
回来
}
无效输入(双*a、双*b、双*c)
{
printf(“以克为单位的第一个质量是多少?\n”);
scanf(“%lf”,a);
printf(“以克为单位的第二质量是多少?\n”);
扫描频率(“%lf”,b);
printf(“以厘米为单位的两个质量之间的距离是多少”);
扫描频率(“%lf”,c);
}
无效显示(双a、双b、双c、双d)
{
printf(“%fg是第一个质量\n”,a);
printf(“%fg是第二个质量\n”,b);
printf(“%fcm是两个质量之间的距离\n”,c);
printf(“%f是两个质量之间的力,单位为达因\n”,d);
回来
}
第一种方法:

通过引用传递
force
。将
force
的定义更改为

void force_calculate(double a, double b, double c, double *d)
{
    *d = (gravity_constant*a*b)/(c*c);
}
这样称呼它

force_calculate(mass_1, mass_2, distance, &force);
第二种方法:

您只需从
force\u calculate

double force_calculate(double a, double b, double c, double d)
{
    d = (gravity_constant*a*b)/(c*c);
    return d;
}
第一种方法:

通过引用传递
force
。将
force
的定义更改为

void force_calculate(double a, double b, double c, double *d)
{
    *d = (gravity_constant*a*b)/(c*c);
}
这样称呼它

force_calculate(mass_1, mass_2, distance, &force);
第二种方法:

您只需从
force\u calculate

double force_calculate(double a, double b, double c, double d)
{
    d = (gravity_constant*a*b)/(c*c);
    return d;
}

您应该返回该值,以便可以对其进行赋值(同时确保其类型正确)。此外,您可以在此处取消使用力,因为这是计算的结果

force = force_calculate(mass_1, mass_2, distance);
...
double force_calculate(double a, double b, double c)
{
 return (gravity_constant*a*b)/(c*c);
}

您应该返回该值,以便可以对其进行赋值(同时确保其类型正确)。此外,您可以在此处取消使用力,因为这是计算的结果

force = force_calculate(mass_1, mass_2, distance);
...
double force_calculate(double a, double b, double c)
{
 return (gravity_constant*a*b)/(c*c);
}

问题是
force\u calculate()
函数的返回类型是
void
,您正在
main()
中将其分配给
force
您的函数定义应该是

void force_calculate(double a, double b, double c, double *d)
{
    *d = (gravity_constant*a*b)/(c*c);
}
force_calculate(mass_1, mass_2, distance, &force);  
不要忘记更改其功能原型。函数调用应该是

void force_calculate(double a, double b, double c, double *d)
{
    *d = (gravity_constant*a*b)/(c*c);
}
force_calculate(mass_1, mass_2, distance, &force);  

问题是
force\u calculate()
函数的返回类型是
void
,您正在
main()
中将其分配给
force
您的函数定义应该是

void force_calculate(double a, double b, double c, double *d)
{
    *d = (gravity_constant*a*b)/(c*c);
}
force_calculate(mass_1, mass_2, distance, &force);  
不要忘记更改其功能原型。函数调用应该是

void force_calculate(double a, double b, double c, double *d)
{
    *d = (gravity_constant*a*b)/(c*c);
}
force_calculate(mass_1, mass_2, distance, &force);  

您定义了
force_calculate
不返回任何内容(void),但在main方法中,您这样调用它:

force = force_calculate(mass_1, mass_2, distance, force);
i、 例如,您返回的是双人间

将强制计算更改为此声明:

double force_calculate(double a, double b, double c);
并将力_计算为该定义:

double force_calculate(double a, double b, double c)
{
    return (gravity_constant*a*b)/(c*c);
}

您定义了
force_calculate
不返回任何内容(void),但在main方法中,您这样调用它:

force = force_calculate(mass_1, mass_2, distance, force);
i、 例如,您返回的是双人间

将强制计算更改为此声明:

double force_calculate(double a, double b, double c);
并将力_计算为该定义:

double force_calculate(double a, double b, double c)
{
    return (gravity_constant*a*b)/(c*c);
}

运行此程序会给我以下运行时错误

d.c:15:11:错误:无效值未被忽略,因为它应该被忽略

我想,这可以解决它

#include <stdio.h>
#include <math.h>
const double gravity_constant = 6.673;
double force_calculate(double a, double b, double c);
void input(double *a, double *b, double *c);
void display(double a, double b, double c, double d);
int main(int argc, char * argv[])
{
    double mass_1 = 0;
    double mass_2 = 0;
    double distance = 0;
    double force = 0;

    input(&mass_1, &mass_2, &distance);
    force = force_calculate(mass_1, mass_2, distance);
    display(mass_1, mass_2, distance, force);

    return 0;
}

double force_calculate(double a, double b, double c)
{
    double force;
    force = (gravity_constant*a*b)/(c*c);
    return force;
}
void input(double *a, double *b, double *c)
{
    printf("What is the first mass in grams?\n");
    scanf("%lf", a);
    printf("What is the second mass in grams?\n");
    scanf("%lf", b);
    printf("What is the distance between the two masses in centimeters\n");
    scanf("%lf", c);
}
void display(double a, double b, double c, double d)
{
    printf("%fg is the first mass\n", a);
    printf("%fg is the second mass\n", b);
    printf("%fcm is the distance between the two masses\n", c);
    printf("%f is the force in dynes between both masses\n", d);
    return;
} 
#包括
#包括
常数双重力_常数=6.673;
双力_计算(双a、双b、双c);
无效输入(双*a、双*b、双*c);
无效显示(双a、双b、双c、双d);
int main(int argc,char*argv[])
{
双质量_1=0;
双质量_2=0;
双倍距离=0;
双力=0;
输入(&mass_1,&mass_2,&distance);
力=力_计算(质量_1,质量_2,距离);
显示(质量1、质量2、距离、力);
返回0;
}
双力计算(双a、双b、双c)
{
双重力量;
力=(重力常数*a*b)/(c*c);
返回力;
}
无效输入(双*a、双*b、双*c)
{
printf(“以克为单位的第一个质量是多少?\n”);
scanf(“%lf”,a);
printf(“以克为单位的第二质量是多少?\n”);
扫描频率(“%lf”,b);
printf(“以厘米为单位的两个质量之间的距离是多少”);
扫描频率(“%lf”,c);
}
无效显示(双a、双b、双c、双d)
{
printf(“%fg是第一个质量\n”,a);
printf(“%fg是第二个质量\n”,b);
printf(“%fcm是两个质量之间的距离\n”,c);
printf(“%f是两个质量之间的力,单位为达因\n”,d);
回来
} 

运行此程序会给我带来以下运行时错误

d.c:15:11:错误:无效值未被忽略,因为它应该被忽略

我想,这可以解决它

#include <stdio.h>
#include <math.h>
const double gravity_constant = 6.673;
double force_calculate(double a, double b, double c);
void input(double *a, double *b, double *c);
void display(double a, double b, double c, double d);
int main(int argc, char * argv[])
{
    double mass_1 = 0;
    double mass_2 = 0;
    double distance = 0;
    double force = 0;

    input(&mass_1, &mass_2, &distance);
    force = force_calculate(mass_1, mass_2, distance);
    display(mass_1, mass_2, distance, force);

    return 0;
}

double force_calculate(double a, double b, double c)
{
    double force;
    force = (gravity_constant*a*b)/(c*c);
    return force;
}
void input(double *a, double *b, double *c)
{
    printf("What is the first mass in grams?\n");
    scanf("%lf", a);
    printf("What is the second mass in grams?\n");
    scanf("%lf", b);
    printf("What is the distance between the two masses in centimeters\n");
    scanf("%lf", c);
}
void display(double a, double b, double c, double d)
{
    printf("%fg is the first mass\n", a);
    printf("%fg is the second mass\n", b);
    printf("%fcm is the distance between the two masses\n", c);
    printf("%f is the force in dynes between both masses\n", d);
    return;
} 
#包括
#包括
常数双重力_常数=6.673;
双力_计算(双a、双b、双c);
无效输入(双*a、双*b、双*c);
无效显示(双a、双b、双c、双d);
int main(int argc,char*argv[])
{
双质量_1=0;
双质量_2=0;
双倍距离=0;
双力=0;
输入(&mass_1,&mass_2,&distance);
力=力_计算(质量_1,质量_2,距离);
显示(质量1、质量2、距离、力);
返回0;
}
双力计算(双a、双b、双c)
{
双重力量;
力=(重力常数*a*b)/(c*c);
返回力;
}
无效输入(双*a、双*b、双*c)
{
printf(“以克为单位的第一个质量是多少?\n”);
scanf(“%lf”,a);
printf(“以克为单位的第二质量是多少?\n”);
扫描频率(“%lf”,b);
printf(“以厘米为单位的两个质量之间的距离是多少”);
扫描频率(“%lf”,c);
}
无效显示(双a、双b、双c、双d)