自己费力不讨好做的连续自然数相加,然而。。。。。
本帖最后由 三千芳华 于 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:} 给你个代码参考吧
#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:04
给你个代码参考吧
{:10_266:}谢谢你啦,但是我想知道我那个搞法怎么才能正常运转{:10_254:} #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;
}
#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:29
哦哦哦,谢谢大佬,等我研究研究{:10_257:}
人造人 发表于 2018-6-2 14:29
请问一下,那个return a是干什么的啊? 三千芳华 发表于 2018-6-2 14:57
请问一下,那个return a是干什么的啊?
把 a 返回
人造人 发表于 2018-6-2 15:08
把 a 返回
抱歉我没提问清楚。那个返回a的用意是什么?他在自定义函数最前面啊,不就是啥都没有就返回了嘛 三千芳华 发表于 2018-6-2 15:19
抱歉我没提问清楚。那个返回a的用意是什么?他在自定义函数最前面啊,不就是啥都没有就返回了嘛
对,啥都没有做就返回
因为,什么都不需要做
//x += i;
x += d_1(i);
就是让d_1这个函数调用的结果变成 i
人造人 发表于 2018-6-2 15:24
//x += i;
x += d_1(i);
哦哦,是这样啊,谢谢{:10_257:}
页:
[1]