求result=1+(1+3)+(1+3+5)+……+(1+3+5+……+n) 可以帮我看看我写的代码哪里有问题吗😭


#include<stdio.h> 
int main(void){
    int lj(int x);
    int n,result,i;
    scanf("%d",&n);
    
    for(i=0;i<=n;i++){
        
    result=result+lj(i);
    }
    printf("%d\n",result);
    
}
int lj(int x)
{
    int i,b;
    int d=0;
    
    for(i=0;i<=x;i++){
        
        b=2*i+1;
        d=d+b;//1+3+5+...+n
    }    

    
    return d;
}

数量有问题呀
你好好数数,第n项是循环n次吗
如果n=3
那么应该算1+(1+3),这到底是几项,按你的代码要循环4次,能对才怪

 
#include<stdio.h> 
int main(void){
    int lj(int x);
    int n,result=0,i;
    scanf("%d",&n);
    
    for(i=1;i<=n;i+=2){
        
    result=result+lj(i);
    }
    printf("%d\n",result);
    
}
int lj(int x)
{
    int i,b;
    int d=0;
    
    for(i=1;i<=x;i+=2){
        d+=i;
    }     
    
    return d;
}

这是在你的代码的基础上改的,其实还可以优化,可以观察到,每一项前半部分都相同,只有最后一项是多出来的

#include<stdio.h> 
int main(void){
    int lj(int x);
    int n,result=0,i,d=0;
    scanf("%d",&n);
    
    for(i=1;i<=n;i+=2){
        d+=i;
    result+=d;
    }
    printf("%d\n",result);
    
}

#include <stdio.h>

int lj(int x);

int main(void) {
    int n, result = 0, i;
    scanf("%d", &n);

    for (i = 0; i <= n; i++) {
        result = result + lj(i);
    }
    printf("%d\n", result);

    return 0;
}

int lj(int x) {
    int i, b;
    int d = 0;

    for (i = 0; i <= x; i++) {
        b = 2 * i + 1;
        d = d + b;  // 1+3+5+...+n
    }

    return d;
}

result=0 //这个要初始化 其他没问题

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7502807
  • 这篇博客也不错, 你可以看下求s=1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的值(c语言学习成果)
  • 以下回答来自chatgpt:

    这个问题是求解数列的问题。代码中使用了一个循环来判断一个数是否能被整除,并记录符合条件的次数。最后输出符合条件的次数。

    以下是给出的代码:

    #include <stdio.h>
    int main()
    {
        int num=0,i;
        for(i=1;i<=1200000;i++)
        {
            if(1200000%i==0)
                num++;
        }
        printf("%d",num);
        return 0;
    }
    

    这段代码的功能是计算1200000有多少个约数。运行结果为96。

    根据参考资料,给出了关于可变参数列表的解释。可变参数列表是定义函数时参数列表中的参数不完全定义,调用函数时可以根据实际情况传入多个参数的函数。所以这段代码和数列求解无关,也不是关于可变参数列表的问题。

    这段代码是实现了对一组单词进行排序并输出的功能。输入一组单词,以'#'作为输入结束的标志。然后对这组单词进行排序,排序的标准是单词的长度,长度短的排在前面。最后将排序后的单词以空格分隔输出。

    根据参考资料,给出了关于线性表顺序存储的定义和操作。线性表顺序存储使用一个数组来存储线性表中的元素,并使用一个整型变量来存储线性表的长度。这段代码实现了创建一个线性表顺序存储结构并输出的功能。

    根据以上分析,可以看出给出的代码和数列求解无关,也和可变参数列表无关。可能是在提问时出现了一些混淆。如果有其他问题需要解答,请提供更为明确的问题描述。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^