处理要求计算'y'值的作业,如果给出'n'和'x', 作业:
该行:
P=P*(F+i/2);
在'else {}'里面?!
代码:
//Calculate the value of 'y';
#include<iostream>
using namespace std;
int main()
{
double y, P=1, F=1;
int x, n, i, j;
cout<<"The value of x=";
cin>>x;
cout<<"The value of n=";
cin>>n;
for(i=1;i<=n;i++)
{
if(i==2||i==3)
{
}
else
{
for(j=1;j<=(2*i-1);j++)
{
F=F*j;
}
}
P=P*(F+i/2);
}
y=pow((2*x+3),3)+P;
cout<<"The result for the value of y="<<y<<endl;
return 0;
}
答案 0 :(得分:0)
P=P*(F+i/2); should be inside else
答案 1 :(得分:0)
在else
周期之后,它应该在for
子句中。此外,在计算阶乘之前,您必须每次重新初始化F
到1
。我会这样重写:
for(i=1;i<=n;i++)
{
if((i!=2) && (i!=3))
{
F = 1; // Don't forget this!
for(j=1;j<=(2*i-1);j++)
{
F=F*j;
}
P=P*(F+i/2.0); // Don't forget the 2.0 (or you'll get integer division)
}
}
答案 2 :(得分:0)
P=P*(F+i/2)
确实应该在else分支内。
但还有更多问题:
F
P=P*(F+i/2)
范围内,您正在进行i
的整数除法,当i
为奇数时会产生错误的结果。您还可以通过计算i == 1
的计算来简化循环:
P=1.5; /* For i == 1 */
for(i=4;i<=n;i++)
{
F=1.0;
for(j=1;j<=(2*i-1);j++)
{
F=F*j;
}
P=P*(F+i/2.0);
}
这会删除i==2
和i==3
的特殊情况。