三千芳华 发表于 2018-6-2 13:53:57

自己费力不讨好做的连续自然数相加,然而。。。。。

本帖最后由 三千芳华 于 2018-6-2 13:55 编辑

#include <stdio.h>
int x;
int d_1(int a);
scanf("%d",&x);

int main()
{
        int d,i=1;
        printf("请输入想要几个连续自然数相加\n");
        d=x;
        for(;i<x;i++)
        {
                x=x+d_1(d);
        }
        printf("%d",x);
}

int d_1(int a)
{
        int d;
        d=x;
        if(d==x)
        {
                d=d-1;
                d--;
       }
       else d--;
       return d;
}

大致思想是第一步执行x=x+(d-1)
               第二步执行d=x
               三步(d-1)--
在执行x=x+(d-1)
最后执行d--
这样循环,但是就是搞不好啊。简单方法我知道{:10_269:}
新人,刚学20多天,自己实在搞不明白了{:10_285:}

人造人 发表于 2018-6-2 14:04:39

给你个代码参考吧

#include <stdio.h>

int main(void)
{
        int n;
        printf("请输入想要几个连续自然数相加: ");
        scanf("%d", &n);

        long sum = 0;
        for(int i = 1; i <= n; ++i)
        {
                sum += i;
        }
        printf("sum: %d\n", sum);

        return 0;
}


你要的是这个吗?

三千芳华 发表于 2018-6-2 14:14:30

人造人 发表于 2018-6-2 14:04
给你个代码参考吧




{:10_266:}谢谢你啦,但是我想知道我那个搞法怎么才能正常运转{:10_254:}

人造人 发表于 2018-6-2 14:28:12

#include <stdio.h>
int x;
int d_1(int a);


int main()
{
        int d, i = 1;
        printf("请输入想要几个连续自然数相加\n");
        scanf("%d", &x);
        d = x;
        x = 0;
        for(; i <= d; i++)
        {
                //x = x + d_1(d);
                x += i;
        }
        printf("%d", x);
}

int d_1(int a)
{
        int d;
        d = x;
        if(d == x)
        {
                d = d - 1;
                d--;
        }
        else d--;
        return d;
}

人造人 发表于 2018-6-2 14:29:13

#include <stdio.h>
int x;
int d_1(int a);


int main()
{
        int d, i = 1;
        printf("请输入想要几个连续自然数相加\n");
        scanf("%d", &x);
        d = x;
        x = 0;
        for(; i <= d; i++)
        {
                //x = x + d_1(d);
                //x += i;
                x += d_1(i);
        }
        printf("%d", x);
}

int d_1(int a)
{
        return a;

        int d;
        d = x;
        if(d == x)
        {
                d = d - 1;
                d--;
        }
        else d--;
        return d;
}

三千芳华 发表于 2018-6-2 14:48:09

人造人 发表于 2018-6-2 14:29


哦哦哦,谢谢大佬,等我研究研究{:10_257:}

三千芳华 发表于 2018-6-2 14:56:34


三千芳华 发表于 2018-6-2 14:57:55

人造人 发表于 2018-6-2 14:29


请问一下,那个return a是干什么的啊?

人造人 发表于 2018-6-2 15:08:13

三千芳华 发表于 2018-6-2 14:57
请问一下,那个return a是干什么的啊?

把 a 返回

三千芳华 发表于 2018-6-2 15:19:29

人造人 发表于 2018-6-2 15:08
把 a 返回

抱歉我没提问清楚。那个返回a的用意是什么?他在自定义函数最前面啊,不就是啥都没有就返回了嘛

人造人 发表于 2018-6-2 15:22:48

三千芳华 发表于 2018-6-2 15:19
抱歉我没提问清楚。那个返回a的用意是什么?他在自定义函数最前面啊,不就是啥都没有就返回了嘛

对,啥都没有做就返回
因为,什么都不需要做

人造人 发表于 2018-6-2 15:24:00

//x += i;
x += d_1(i);

就是让d_1这个函数调用的结果变成 i

三千芳华 发表于 2018-6-2 15:27:36

人造人 发表于 2018-6-2 15:24
//x += i;
x += d_1(i);



哦哦,是这样啊,谢谢{:10_257:}
页: [1]
查看完整版本: 自己费力不讨好做的连续自然数相加,然而。。。。。