程序要求:写一个函数,使给定的一个3*3的二维整型数组转置,即行列互换。
在初步写程序时,在fanzhuan()函数中的内嵌for循环的编写上,我把j的条件写成了j=0;j<3;j++;运行程序之后,我发现,数组的值并没有改变,但是程序并没有报出语法错误的语句,说明只有可能是功能上的错误导致。查错之初,在fanzhuan()函数的纠错上,推导不够深入,认为是a[0][0]和自己互换而导致的错误,但是即使是没有意义的互换也不应该有功能上的错误。在请教我小马哥之后,一语惊醒梦中人,一切只是因为我推导不够深入,确实在i=0的时候,a[0][1]和a[1][0]发生了互换的动作,但是在i=1的时候a[1][0]和a[0][1]又重新互换回来,这样的反变换使得程序在运行时发生两次互换,然而最终输出的数组结果没有改变。
所以,在程序编写之初,不应该急于写出成型的程序,拥有一个细致的算法更加重要。如果算法出现了错误,我们将陷入一种惯性思维、恶心循环,自己很难再去检查出错误。