将等式转换为c程序

时间:2015-06-01 05:17:28

标签: c math equation

我想在C程序中转换这个等式来求解方程,但结果总是错误的。我想将所有三个环绕的等式转换为C代码。我已经将代码设置为前两个,但请检查出现了什么问题。

Equations Here

第一个等式的代码

#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;
}

2 个答案:

答案 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);