viewDidAppear
我得到的变量c值不正确,不知道为什么。尝试解决包围问题,并尝试避免使用#include <stdio.h>
#include <math.h>
#define M_E 2.71828
double a, b, c;
double d;
void main()
{
scanf("%lf", &a);
scanf("%lf", &b);
for (int i = 1; i <= 40; i++)
{
c = a * pow(M_E,(1/(double)i+1)) + (1/b);
printf("%lf\n", c);
}
}
函数,不知道还有什么可尝试的。
->我需要我的代码来反映以下公式:
pow()
From comment如果我输入a的值为2和b的值为2-我应该得到3.79744 ...但是我得到6.074。
答案 0 :(得分:0)
您的代码给出了预期的结果。您可能期望错误的值。我已经重新排列了c
表达式中的括号,以显示实际情况。
您还应该将pow
替换为exp
函数,因为您实际上是指数函数。在下面的代码中查看如何计算新变量d
。
我还在循环内移动了printf
语句以输出所有值。 <math.h>
标头绝对是必需的,并且您不需要重新定义M_E
,因为它已经在标头中定义了,准确性比您要高得多。
我已编辑代码以满足c = a * e^(1/(i+1)) + (1/b)
的新要求。
#include <stdio.h>
#include <math.h> // This is necessary!!
double a, b, c;
double d;
int main(int argc, char *argv[])
{
scanf("%lf", &a);
scanf("%lf", &b);
for (int i = 1; i <= 40; i++)
{
c = a * pow(M_E, 1/(double)(i + 1)) + (1/b);
d = a * exp(1/(double)(i+1)) + (1/b); //this is equal to c!
printf("%e\n", c); //use %e to print doubles
}
}
答案 1 :(得分:0)
错误出在
1/(double)i+1
应为
1/((double)i+1)
甚至
1.0 / (i + 1)
答案 2 :(得分:0)
公式的编码错误
反映以下公式:a * e ^(1 /(i + 1))+(1 / b)。
加1然后除。
// v------------v
// c = a * pow(M_E,( 1/ (double)i+1 )) + (1/b);
c = a * pow(M_E,( 1/((double)i+1) )) + (1/b);
输出达到OP目标I should be getting 3.79744...。
3.797441
使用更准确的e
,代码可以获得更准确的结果。
#define M_E 2.7182818284590452353602874713527
// output
3.797443