C 需要使用数组计算级数

C 需要使用数组计算级数,c,arrays,C,Arrays,我有以下任务: 计算x1+x2+..+x20,如果序列x1,x2。。。xn被授予以下规则:x1=1,x2=0.3,x(i)=(i+1)*x(i-2),i=3,4.. 有人能帮忙完成这个任务吗?我不知道如何开始写进步。。。 我试着写下: int main() { int i; double X[20]; for (i=3; i<=19; i++){ X[i]=(i+1)*X[i-2]; } for (i=0; i<=19; i+

我有以下任务:

计算
x1+x2+..+x20,如果序列
x1,x2。。。xn
被授予以下规则:
x1=1,x2=0.3,x(i)=(i+1)*x(i-2),i=3,4..

有人能帮忙完成这个任务吗?我不知道如何开始写进步。。。 我试着写下:

int main()
{
    int i;
    double X[20];
    for (i=3; i<=19; i++){
        X[i]=(i+1)*X[i-2];
    }

    for (i=0; i<=19; i++)
        printf("%7d%13d\n", i, X[i]);

    system ("pause");
}
intmain()
{
int i;
双X[20];

对于(i=3;i您的解决方案经过一些修改后几乎是正确的,请尝试以下方法:

int main(void) {

    int i;
    double result = 1.3;
    double X[20];
    X[0] = 1;
    X[1] = 0.3;

    for (i=2; i<=19; i++){
       X[i]=(i+2)*X[i-2];
       result += X[i];
    }

    printf("%f", result);
    system ("pause");


   return 0;
}
int main(无效){
int i;
双结果=1.3;
双X[20];
X[0]=1;
X[1]=0.3;

对于(i=2;i让我们看看您当前的代码:

int main()
{
    int i;
    double X[20];
    for (i=3; i<=19; i++){
        X[i]=(i+1)*X[i-2];
    }

    for (i=0; i<=19; i++)
        printf("%7d%13d\n", i, X[i]);

    system ("pause");
}
现在,对i=1,…,20求和
xi
。然后,您的代码如下所示:

int main()
{
    double X[20];

    // First two elements of your serie.
    X[0] = 1;
    printf("%7d%13f\n", 1, X[0]);
    X[1] = 0.3;
    double result = X[0] + X[1];
    printf("%7d%13f\n", 2, X[1]);

    // Third element to the 20th element of your serie.
    for (int i=2; i<=19; i++){
        X[i]=(i+2)*X[i-2];
        printf("%7d%13f\n", i+1, X[i]);
        result += X[i];
    }

    printf("\nSum of xi = %f", result);

    system ("pause");
    return 0;
}
intmain()
{
双X[20];
//你职业生涯的前两个要素。
X[0]=1;
printf(“%7d%13f\n”,1,X[0]);
X[1]=0.3;
双结果=X[0]+X[1];
printf(“%7d%13f\n”,2,X[1]);
//第三个元素到第二十个元素。

对于(int i=2;i作为提醒,您需要:
x1=1,x2=0.3,x(i)=(i+1)*x(i-2)
对于[1,20]中的
i
的每个值

计算和不需要存储所有内容,但这是您的选择。因此,从创建数组开始:

double X[21]; // 21 because you start from 1 and not 0.
然后初始化前2个值:

X[1] = 1;
X[2] = 0.3;
现在您可以使用您的循环(最多20个):


for(i=3;i您可能应该在循环之前为前两个赋值。此外,您的循环是否应该从2变为19而不是3?这看起来有点像C/C++而不是C。您有正确的标记吗?我通过以下方式赋值:
X[1]=1;X[2]=0.3;
它的形式是否正确?我不太了解数组,也不知道如何使用数组。奇怪的是,您的代码工作不正确或我不理解。我得到了错误的答案。@SiRaZz我忘记了
printf
中的
%f
。它不是
printf(“%7d%13d\n”,I,X[I]);
,而是
printf(“%7d%13f\n”,i,X[i]);
因为
X[i]
是双精度的,不是整数。谢谢你告诉我。现在应该可以了。
X[1] = 1;
X[2] = 0.3;
for (i=3; i<=20; i++){
    X[i]=(i+1)*X[i-2];
}
double sum = X[1] + X[2];
for (i=3; i<=20; i++){
    X[i]=(i+1)*X[i-2];
    sum += X[i];
}