鱼C论坛

 找回密码
 立即注册
查看: 3616|回复: 12

[已解决]自己费力不讨好做的连续自然数相加,然而。。。。。

[复制链接]
发表于 2018-6-2 13:53:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 三千芳华 于 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--
这样循环,但是就是搞不好啊。简单方法我知道
新人,刚学20多天,自己实在搞不明白了
最佳答案
2018-6-2 14:29:13
  1. #include <stdio.h>
  2. int x;
  3. int d_1(int a);


  4. int main()
  5. {
  6.         int d, i = 1;
  7.         printf("请输入想要几个连续自然数相加\n");
  8.         scanf("%d", &x);
  9.         d = x;
  10.         x = 0;
  11.         for(; i <= d; i++)
  12.         {
  13.                 //x = x + d_1(d);
  14.                 //x += i;
  15.                 x += d_1(i);
  16.         }
  17.         printf("%d", x);
  18. }

  19. int d_1(int a)
  20. {
  21.         return a;

  22.         int d;
  23.         d = x;
  24.         if(d == x)
  25.         {
  26.                 d = d - 1;
  27.                 d--;
  28.         }
  29.         else d--;
  30.         return d;
  31. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-6-2 14:04:39 | 显示全部楼层
给你个代码参考吧

  1. #include <stdio.h>

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

  7.         long sum = 0;
  8.         for(int i = 1; i <= n; ++i)
  9.         {
  10.                 sum += i;
  11.         }
  12.         printf("sum: %d\n", sum);

  13.         return 0;
  14. }
复制代码


你要的是这个吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-2 14:14:30 From FishC Mobile | 显示全部楼层
人造人 发表于 2018-6-2 14:04
给你个代码参考吧



谢谢你啦,但是我想知道我那个搞法怎么才能正常运转
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-2 14:28:12 | 显示全部楼层
  1. #include <stdio.h>
  2. int x;
  3. int d_1(int a);


  4. int main()
  5. {
  6.         int d, i = 1;
  7.         printf("请输入想要几个连续自然数相加\n");
  8.         scanf("%d", &x);
  9.         d = x;
  10.         x = 0;
  11.         for(; i <= d; i++)
  12.         {
  13.                 //x = x + d_1(d);
  14.                 x += i;
  15.         }
  16.         printf("%d", x);
  17. }

  18. int d_1(int a)
  19. {
  20.         int d;
  21.         d = x;
  22.         if(d == x)
  23.         {
  24.                 d = d - 1;
  25.                 d--;
  26.         }
  27.         else d--;
  28.         return d;
  29. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-2 14:29:13 | 显示全部楼层    本楼为最佳答案   
  1. #include <stdio.h>
  2. int x;
  3. int d_1(int a);


  4. int main()
  5. {
  6.         int d, i = 1;
  7.         printf("请输入想要几个连续自然数相加\n");
  8.         scanf("%d", &x);
  9.         d = x;
  10.         x = 0;
  11.         for(; i <= d; i++)
  12.         {
  13.                 //x = x + d_1(d);
  14.                 //x += i;
  15.                 x += d_1(i);
  16.         }
  17.         printf("%d", x);
  18. }

  19. int d_1(int a)
  20. {
  21.         return a;

  22.         int d;
  23.         d = x;
  24.         if(d == x)
  25.         {
  26.                 d = d - 1;
  27.                 d--;
  28.         }
  29.         else d--;
  30.         return d;
  31. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-2 14:48:09 From FishC Mobile | 显示全部楼层
人造人 发表于 2018-6-2 14:29

哦哦哦,谢谢大佬,等我研究研究
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-2 14:56:34 From FishC Mobile | 显示全部楼层

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-6-2 14:57:55 From FishC Mobile | 显示全部楼层
人造人 发表于 2018-6-2 14:29

请问一下,那个return a是干什么的啊?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-2 15:08:13 | 显示全部楼层
三千芳华 发表于 2018-6-2 14:57
请问一下,那个return a是干什么的啊?

把 a 返回
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-2 15:19:29 From FishC Mobile | 显示全部楼层
人造人 发表于 2018-6-2 15:08
把 a 返回

抱歉我没提问清楚。那个返回a的用意是什么?他在自定义函数最前面啊,不就是啥都没有就返回了嘛
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

对,啥都没有做就返回
因为,什么都不需要做
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-2 15:24:00 | 显示全部楼层
//x += i;
x += d_1(i);

就是让d_1这个函数调用的结果变成 i
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-2 15:27:36 From FishC Mobile | 显示全部楼层
人造人 发表于 2018-6-2 15:24
//x += i;
x += d_1(i);


哦哦,是这样啊,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-21 12:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表