我想在C程序中转换这个等式来求解方程,但结果总是错误的。我想将所有三个环绕的等式转换为C代码。我已经将代码设置为前两个,但请检查出现了什么问题。
第一个等式的代码
#include <stdio.h>
#include <math.h>
int main()
{
/* Define temporary variables */
double r1,r2,u;
double upper,lower,value,result;
printf("Enter coefficients r1");
scanf("%f",&r1);
printf("Enter coefficients r2 ");
scanf("%f,&r2);
printf("Enter coefficients u ");
scanf("%f",&u);
/* Assign the value we will find the cosh of */
value = r1*r2;
/* Calculate the Hyperbolic Cosine of value */
upper = acos(value);
lower = sqrt((u*u)+1) - u;
result = upper/lower;
/* Display the result of the calculation */
printf("The spinner rotaiton angle is %f",result );
return 0;
}
第二个等式的代码
#include <stdio.h>
#include <math.h>
#include<stdlib.h>
int main()
{
/* Define temporary variables */
double r,w,u;
double a1,result;
printf("Enter coefficients R");
scanf("%f",&r);
printf("Enter coefficients w angular velocity ");
scanf("%f,&w);
printf("Enter coefficients u cofficient of friction");
scanf("%f",&u);
a1 = sqrt((u*u)+1) - u;
a2 = a1*a1;
a3 = sqrt (1 + a2);
result = r * w * a3;
/* Display the result of the calculation */
printf("The departure velocity is %f",result);
scanf(%f);
return 0;
}
答案 0 :(得分:4)
行
scanf("%f",&r1);
scanf("%f",&w);
scanf("%f",&u);
使用错误的格式说明符来阅读double
s。
需要
scanf("%lf",&r1); // Use %lf instead of %f
scanf("%lf",&w);
scanf("%lf",&u);
此外,最好检查IO操作的返回值并打印输入数据以确保正确读取值。
if ( scanf("%lf",&r1) != 1 )
{
// Deal with the error.
}
printf("The value of r1: %lf\n", lf);
另外,你有
/* Calculate the Hyperbolic Cosine of value */
upper = acos(value);
目前尚不清楚评论是否正确或代码是否正确。您指向的链接表示您应该使用反双曲余弦值acosh
。
upper = acosh(value);
答案 1 :(得分:1)
声明
/* Calculate the Hyperbolic Cosine of value */
upper = acos(value);
会给你弧余弦值value
,公式需要反双曲余弦值。
将其更改为:upper = acosh(value);
由于acosh()
函数计算value
的反余弦(余弦的反双曲线)的双曲线。
接收值为:
scanf("%lf",&r1);
scanf("%lf",&w);
scanf("%lf",&u);