c语言 请问大神们这个关于乘法表的问题?

#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不都是被赋值为两个未知数的乘积么?为什么结果会不一样?




慕粉18531160466
浏览 1740回答 4
4回答

黑色旋风

你放在第四行才是赋值为两个未知数的乘积。第5、6行在for循环中都会改变a、b的值,放在第7行才能正确计算每个改变的a、b的乘积。

二次元仓鼠

 sum=a*b;是赋值运算,但是在第四行这里,a,b还并没有初值呢对不对,所以会报错;而放到第七行,你在for循环中已经对a,b进行了赋值操作了,所以 sum=a*b;可以进行计算和赋值了

MRCCAN

如果放在第四行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,以此类推,所以有效。

东慕冢_c

在没有定义函数的情况下,代码是需要一行一行运行下来的,只有在for循环中运行sum=a*b;才能将新的a*b赋值给sum。要记住的是,代码运行顺序。代码也不是出现了一定会运行的
打开App,查看更多内容
随时随地看视频慕课网APP