C语言FOR循环嵌套问题

  #include "stdio.h"  main()  {int a,b,m;  for(a=5;a>=1;a--)  { m=0;  for(b=a;b<=5;b++)  m=m+a*b;}  printf("%d\n",m);}  A)30  B)15  C)20  D)10 次题目的解法。望详细点,这类型把我高糊涂了

选择(B)15.
详解:首先a=5,进入循环体
{定义m=0;
又一个循环体
{b=5且符合b<=5的条件,则
m=0+5*5=25;
然后继续此循环,
b=6,发现不符合此循环的条件,则结束此循环;

然后a=4,进入循环体
{定义m=0;
又进入下个循环体
{b=4且符合b<=5的条件,则
m=0+4*4=16;
然后继续此循环,
b=5,发现符合此循环的条件b<=5,则
m=16+4*5=36;
然后继续此循环,
b=6,发现不符合此循环的条件,则结束此循环;
}
然后a=3,a=2一样的方法,
当a=1,进入循环体
{定义m=0;
又进入下个循环体
{b=1,发现符合此循环的条件b<=5,则
m=0+1*1=1;
然后继续此循环,
b=2;发现符合此循环的条件b<=5,则
m=1+1*2=3;
然后继续此循环,
b=3;发现符合此循环的条件b<=5,则
m=3+1*3=6;
然后继续此循环,
b=4;发现符合此循环的条件b<=5,则
m=6+1*4=10;
然后继续此循环,
b=5;发现符合此循环的条件b<=5,则
m=10+1*5=15;
然后继续此循环,
b=6,发现不符合此循环的条件,则结束此循环;
}
所以这时输出m=15;
选择B。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-20
很简单,因为内层循环每次M=0,外层循环意义不大,只需要看当a=终值1时内层循环的值就可以了。
当a=1时,a始终为1,而b的值从1到5,最终m=1*1+1*2+1*3+1*4+1*5=15
第2个回答  2012-03-20
顶2楼
第3个回答  2012-03-19
最终结果为15