c语言计算1*2*3+3*4*5...+99*100*101的值,下面的for语句中,如果把a+=2改成a+2,就会发生错误,为什么?

#include <stdio.h>
#include <stdlib.h>
void main ()
{
int a=1,b=0;
for (; a<=99; a+=2)
b= b+a*(a+1)*(a+2);
printf("%d\n",b);
system("pause");
}

a+=2等价于a=a+2,执行后a的值会增加2,而a+2只会返回一个a+2的计算结果,不会影响a的值。
所以,如果把a+=2改写成a+2,a的值不发生变化,就会陷入死循环。来自:求助得到的回答
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-02-05
a+=2等价于a=a+2

执行a+=2后,a的值会增加2

而改成a+2只会返回一个a+2的计算结果,不会影响a的值。

所以

如果把a+=2改写成a+2

a的值不发生变化

结果就是————————陷入死循环。追问

a+=2是怎么变成a=a+2

追答

你可以看看语法规定

C语言上的“+=” 操作符等价于后面的

至于是怎么变的,那是编译器的事儿了

参考资料:http://www.docin.com/p-313731773.html

第2个回答  2013-02-05
因为这句话应该是条执行语句,你就a+2,a根本没变,最后死循环越界,所以报错
第3个回答  2013-02-05
因为a+=2等价于a=a+2所以改成a+2的话,那么循环条件永远不会变,于是就产生了错误。
第4个回答  2013-02-05
a+=2意思是 a=a+2;a+2只是计算了,却没有赋值追问

a+=2是怎么变成a=a+2

追答

这是个简化写法啊,步长是1的情况还可以写成 a++;这里的意思也是 a=a+1,步长不是1时就用 "+=" 简化

本回答被提问者采纳

一道C语言题, 计算1*2*3+3*4*5+。。。+99*100*101
for(i=1;i<=99;i+=2)\/\/步长2,各项头数是相接的,{ item=i*(i+1)*(i+2)*1.0;sum+=item;} printf("1*2*3+3*4*5+...+99*100*101=%.0lf\\n",sum);return0;}

C语言编程计算1*2*3+3*4*5+...+99*100*101的值
int sum=0;int i=1, j=2, k=3;while(i<100){ sum+=i*j*k;i+=2;j+=2;k+=2;} printf("The sum is:%d\\n", sum);}

用C语言解决1*2*3+3*4*5+5*6*7+……99*100*101(具体程序)
int a = 0, b = 1, c = 2, d = 3;\/\/结果a,初始值b,c,d int e,f,g,h;\/\/过程值e,f,g,h while (b<=99){ e = b * c * d;f=b+2;g=c+2;h = d + 2;b = f;c = g;d = h;a+=e;} Console.WriteLine("1*2*3+3*4*5+5*6*7+……+99*100*101...

用C编辑程序计算1*2*3+3*4*4+。。。+99*100*101的值
void main(){ int m=0,i=0;long sum=0;for(i=1;i<=50;i++)\/\/其中50 是由2×i-1=99得到的 { m=2*i-1;\/\/第一个乘积项 sum=sum+m*(m+1)*(m+2);} printf("%ld\\n",sum);}

编程计算1×2×3+3×4×5+···+99×100×101的值
\/\/C语言:include<stdio.h> void main(){ int i;int res=0;for(i=1;i<101;i+=2){ res+=i*(i+1)*(i+2);} printf("%d\\n",res);} 是啊,确实少了一个加号.呵呵!而且res也没有初始化, 好久没用C语言了... 有些不太习惯啊....

python编写程序,输出1*2*3+3*4*5+5*6*7+...+99*100*101的值?
s = 0 for i in range(1,100):s = s + i*(i+1)*(i+2)print(s)S = 25497450

编程计算:1X2X3+3X4X5……+99X100XI01
C语言编写的程序,计算1X2X3+3X4X5……+99X100XI01的值。include <stdio.h>int main() { int sum = 0; for (int i = 1; i < 101; i+=2) { sum += i * (i+1) * (i+2);} printf("1X2X3+3X4X5……+99X100XI01=%d", sum); return 0;} ...

1*2*3+3*4*5+5*6*7+.99*100*101最后等于多少?
用循环实现下面效果,求出最终的值 1*2*3+3*4*5+5*6*7+...99*100*101 sum = 0 for(i=0; i<=99; i++){ sum += i*(i+1)*(i+2) } 1×2+2×3+3×4+4×5+5×6+6×7+...10×11等于多少 方法一:使用公式 平方和1²+2²+...+n² =...

...WHILE 语句编程计算1*2+2*3+3*4+...+99*100的值 谢谢...急急急急...
int sum=0;\/\/总记 int a=1;\/\/变量1;int b=2;\/\/变量2;for(a=1;a<=99;a++){ sum+=a*b;b++;} Response.Write(sum.ToString());\/\/写了个for循环的,看的懂,对你应该有点帮助

请用上述方法计算1乘2+2乘3+3乘4+...+100乘101的值
*……*(n+k)\/(k+1)对此,我们不难用归纳法去证明 所以 1+2+3+……+n=n*(n+1)\/2 1*2+2*3+3*4+...+n(n+1)=n(n+1)(n+2)\/3 1*2*3+2*3*4+...+n(n+1)(n+2)=n(n+1)(n+2)(n+3)\/4 所以1*2+2*3+3*4+...100*101=100*101*102\/3=343400 ...

相似回答