算法既然不止一种,就有必要对算法进行优化。
【例25.2】优化打印9*9乘法表的例子。
#include <stdio.h> int main () { int i=0 , j=0 ; for (i=1 ; i<10 ; ++i ) { for (j=1 ; j<10 ; ++j ) { if (j<i ) printf ("%d*%d=%d\t" , j , i ,i*j ); } printf ("\n" ); } printf ("\n" ); return 0 ; }
输出乘法表如下。
1*2=2 1*3=3 2*3=6 1*4=4 2*4=8 3*4=12 1*5=5 2*5=10 3*5=15 4*5=20 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72
第2个for循环语句可以优化,它既要判别j<=10,又要判别j<=i,增加了循环次数。可以取消if语句,修改for循环语句的条件为“j<=i”即第2个循环语句简化为:
for (j=1 ; j<=i ; ++j ) printf ("%d*%d=%d\t" , j , i ,i*j );
即可。一个程序写完后,要对程序进行研究,看看有无可以优化的地方,尽量在现有的基础上予以优化。