C 质量间引力
为什么我的程序一直在计算相同的力?我正确地使用了这个公式,但是我不确定为什么我一直得到127达因的力。任何帮助都将不胜感激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
#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)