C语言编程数列求和

就是有一个数列:2/1,3/2,5/3,8/5,13/8,21/13……求前29项之和。我在度娘搜到这个答案:#include<stdio.h>voidmain(){in... 就是有一个数列:2/1,3/2,5/3,8/5,13/8,21/13……求前29项之和。我在度娘搜到这个答案:#include<stdio.h>
void main()
{
int a = 1, b = 2, c, i;
double sum = 2;
for( i=1; i<10; i++ )
{
c = a + b, a = b, b = c;
sum += double(b) / a;
}
printf("数列前十项和为:%f\n", sum);
}
但是sum+=double(b)/a看不懂。我把那个加好去掉之后,也能编译成功。但我还是想不明白这个式子怎么表示累加的过程。他不是仅仅定义sum=b/a而已吗?
展开
 我来答
百度网友50cab7a
2013-02-18 · TA获得超过504个赞
知道小有建树答主
回答量:320
采纳率:0%
帮助的人:168万
展开全部
这是c语言的语法啊 sum += double(b) / a 等同于 sum = sum + double(b) / a
右边的sum表示变量sum的地址 因为在等号的左边所以也称作左值
所以是把 sum的值加上 转换成double类型的b和a的商 储存于 sum变量的地址中
明白了吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Spacedoggy
2013-02-18 · TA获得超过192个赞
知道小有建树答主
回答量:214
采纳率:0%
帮助的人:212万
展开全部
+=的意思就在字面上表示出来了,
inta+=intb表示inta=inta+intb, C语言的简洁
那句代码就是sum = sum + (double(b) / a)
基础还是要打扎实
追问
理解了一点。但是这个式子不简便的写法是什么呢?sum=double(b)/a+?还有为什么括号只括起了b而没有像这个样子(b/a)?实再不太好理解,麻烦详细说一下,我是初学者。
追答
b声明为了int类型, a也是int类型, 结果也是整型, 那么程序就不正确了. 这里的语法是C风格的强制类型转换, 可以写作(double)b也可以写作double(b), 目的是迫使编译器以浮点类型对待b, 这样算出来的sum类型也是一个浮点值. 其实不光可以对b做转换, 对a做强制浮点转换或者a和b都做都是可以的, 不过只要一个就够了.
计算中有一个操作数是浮点就会使用浮点计算指令, 如果两个都是整型就使用整型计算指令, 得不到浮点结果
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
惟妙惟肖且清澈丶茱萸5833
2007-07-15 · TA获得超过1790个赞
知道小有建树答主
回答量:1349
采纳率:0%
帮助的人:705万
展开全部
for(a=1,a<11,a++)
for(b=a+1,b<12,b++)
for(c=b+1,a<13,a++)
for(d=c+1,d<14,d++)
for(e=d+1,a<15,e++)
{
printf("m="%d,a+b+c+d+e);
}

给你个思路,代码可能有错,很久没写c了~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
毛笔sky
2007-07-15 · 超过18用户采纳过TA的回答
知道答主
回答量:110
采纳率:0%
帮助的人:0
展开全部
#include<stdio.h>
main()
{
int a,b,c,d,e,m;

for(a=b=c=d=e=1; a<15;a++)
for(;b<15;b++)
for(;c<15;c++)
for(;d<15;d++)
for(;e<15;e++)
{
{
if(a!=b!=c!=d!=!e)
m=a+b+c+d+e;
}
printf("m=%d ",m);
}
getch();
}
应该对吧我没怎么算
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
henterji
2007-07-15 · TA获得超过2973个赞
知道大有可为答主
回答量:1835
采纳率:0%
帮助的人:1851万
展开全部
利用全排列

#include<stdio.h>

void swap(int a[], int x, int y) {
int temp = a[x];
a[x] = a[y];
a[y] = temp;
}

int sum(int array[], int n, int k) {
if (n == k) {
int out[5], i;
for (i = 0; i < 5; i++) {
out[i]=array[i];
}
printf("%d+%d+%d+%d+%d=%d\n",out[0], out[1], out[2], out[3], out[4],out[0] + out[1] + out[2] + out[3] + out[4]);
} else {
int j;
for (j = k; j < n; j++) {
swap(array, k, j);
sum(array, n, k + 1);
swap(array, j, k);
}
}
}

int main(){
int i, j;
for(i=0;i<15-4;i++){
int in[5];
for(j=0;j<5;j++){
in[j]=i+1+j;
}
sum(in, 5, 0);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式