#include<stdio.h>int main(){ int a,b,sum; sum=a*b; for(a=9;a>=1;a--){ for(b=1;b<=a;b++){ printf("%d*%d=%d ",a,b,sum); } printf("\n"); } return 0; }这段代码的输出乘法表的结果都是错的,可如果把第四行sum=a*b移到第七行printf前就完全正确,这里sum不都是被赋值为两个未知数的乘积么?为什么结果会不一样?
4 回答
![?](http://img1.sycdn.imooc.com/56de4923000101fe06350635-100-100.jpg)
二次元仓鼠
TA贡献4条经验 获得超3个赞
sum=a*b;是赋值运算,但是在第四行这里,a,b还并没有初值呢对不对,所以会报错;
而放到第七行,你在for循环中已经对a,b进行了赋值操作了,所以 sum=a*b;可以进行计算和赋值了
![?](http://img1.sycdn.imooc.com/55c721760001f07d01000100-100-100.jpg)
MRCCAN
TA贡献1条经验 获得超1个赞
如果放在第四行sum=a*b,假设a,b初值为0的话,sum=0,在接下来的程序中未改变sum值,所以sum一直输出是0;
如果是第七行sum=a*b,假设a,b初值为0的话,sum=0,进入循环a=9,b=1,sum被赋值为9,输出9,然后a=9,b=2,sum被赋值为18,以此类推,所以有效。
![?](http://img1.sycdn.imooc.com/56a9ada2000108af01800180-100-100.jpg)
东慕冢_c
TA贡献1条经验 获得超1个赞
在没有定义函数的情况下,代码是需要一行一行运行下来的,只有在for循环中运行sum=a*b;才能将新的a*b赋值给sum。要记住的是,代码运行顺序。代码也不是出现了一定会运行的
- 4 回答
- 1 关注
- 1739 浏览
添加回答
举报
0/150
提交
取消