c语言。我写了一个小程序,但运行却和我想象的有小出入,很奇怪c语言为什么会这样!! 以下是具体疑问: 20
如图所示,这是程序源代码:图中的阴影部分我明明定义的a最大不能超过9,b不能超过4,但一运行就成这样:为什么会变成10*5=36啊??按理说应该运行成9*4=36才对嘛,...
如图所示,这是程序源代码:
图中的阴影部分我明明定义的a最大不能超过9,b不能超过4,但一运行就成这样:
为什么会变成10*5=36啊??按理说应该运行成9*4=36才对嘛,跪求大侠解我迷惑。谢谢!! 展开
图中的阴影部分我明明定义的a最大不能超过9,b不能超过4,但一运行就成这样:
为什么会变成10*5=36啊??按理说应该运行成9*4=36才对嘛,跪求大侠解我迷惑。谢谢!! 展开
2个回答
展开全部
当a=9 b=3的时候
执行 c=a*b=27
a=9 b=4
c=36
然后b++ b=5不满足 跳出内层循环
执行外层循环的 a++ a=10 不满足 跳出外层循环
结果就是36
你把<改成<= 结果就是50了
执行 c=a*b=27
a=9 b=4
c=36
然后b++ b=5不满足 跳出内层循环
执行外层循环的 a++ a=10 不满足 跳出外层循环
结果就是36
你把<改成<= 结果就是50了
追答
呵呵 因为这个时候a=11 b=6
for(a=1;a<=10;a++)
for(b=1;b<=5;b++)
c=a*b;
等同于
for(a=1;a<=10;)
{
for(b=1;b<=5;)
{
c=a*b;
b++;
}
a++;
}
因为最后退出的时候 都执行了a++ ,b++
所以printf("%d*%d=%-3d",--a,--b,c);
就可以了
满意请采纳啊
展开全部
你应该知道
for(a=1;a<10;a++)
{...}
等同于
a=1
while(a<10)
{ ...
a++;
}
所以循环结束时a的值是10
同理,for(b=1;b<5;b++)循环结束时b的值也是5而不是4
所以就那样了……
for(a=1;a<10;a++)
{...}
等同于
a=1
while(a<10)
{ ...
a++;
}
所以循环结束时a的值是10
同理,for(b=1;b<5;b++)循环结束时b的值也是5而不是4
所以就那样了……
更多追问追答
追问
如果循环结束时a的值是10,b的值是5的话,那运行的结果应该是10*5=50啊??怎么会是36呢?
追答
你再去看书上的for语句循环执行顺序
你这个程序被换成while循环是这样:
while(a<10)
{
while(b<5)
{
c=a*b
b++;
}
a++;
}
最后a=10;b=5但c=36
for循环的执行顺序是这样的
for(初值表达式;循环条件表达式;更新表达式)
{循环体};
(1)求解初值表达式。
(2)判断循环条件表达式,如果值为真(非0),则执行for语句循环体内部的语句,然后执行第3步;如果值为假(0),则跳出循环,执行第(5)步。
(3)求解更新表达式。
(4)跳回第(2)步重复执行。
(5)循环结束,执行for循环体后面的语句。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询