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而已吗? 展开
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而已吗? 展开
5个回答
展开全部
这是c语言的语法啊 sum += double(b) / a 等同于 sum = sum + double(b) / a
右边的sum表示变量sum的地址 因为在等号的左边所以也称作左值
所以是把 sum的值加上 转换成double类型的b和a的商 储存于 sum变量的地址中
明白了吗?
右边的sum表示变量sum的地址 因为在等号的左边所以也称作左值
所以是把 sum的值加上 转换成double类型的b和a的商 储存于 sum变量的地址中
明白了吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
TableDI
2024-07-18 广告
2024-07-18 广告
在Excel中,使用`VLOOKUP`函数进行单一条件查找非常常见,但`VLOOKUP`本身并不直接支持双重条件。然而,你可以通过一些间接方法实现。一种方法是将两个条件合并为一个标识符(例如,通过连接或串联),然后在另一个区域中查找此标识符...
点击进入详情页
本回答由TableDI提供
展开全部
+=的意思就在字面上表示出来了,
inta+=intb表示inta=inta+intb, C语言的简洁
那句代码就是sum = sum + (double(b) / a)
基础还是要打扎实
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都做都是可以的, 不过只要一个就够了.
计算中有一个操作数是浮点就会使用浮点计算指令, 如果两个都是整型就使用整型计算指令, 得不到浮点结果
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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了~
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了~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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();
}
应该对吧我没怎么算
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();
}
应该对吧我没怎么算
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
利用全排列
#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);
}
}
#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);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询