前几天遇到一个C语言的问题如下”要求定义一个3x4的二维数组,输出每一行的最大值中的最小值“,思索了一下代码如下:
做完后老师说还没有别的方法?想了半天老师最后给出了代码如下:
很显然代码二的代码比代码一的精简的多,但是思维难度加大,分析代码一的代码是由于每次max储存新值时都要释放原来的值,但是最后还要用储存的值比大小输出最小,所以定义一个一维数组去存储这组值,但是代码过于繁琐,特别是几个for循环,仔细分析这个过程可以看出来,每次比出每行的最大值时都要和min比较后处理,而定义的数组b[M]明显起个中间值的作用,所以完全可以不用这个数组,直接把max的值存入min,此时又出现一个问题!到底什么时候该存储?什么时候该比较呢?这时循环变量i起到了至关重要的作用,控制这个过程的进行。
从这个问题可以看出来,对于相同的问题的过程思考的深入与否直接影响代码的质量,不能说是代码一不好,代码一的思维过程简单,代码二的思考要深入一些,代码无所谓好坏只是不同的思维方式决定了代码的不同,当然不可否认的是代码二确实比代码一漂亮!