25.2 应对算法进行优化

算法既然不止一种,就有必要对算法进行优化。

【例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
);
  

即可。一个程序写完后,要对程序进行研究,看看有无可以优化的地方,尽量在现有的基础上予以优化。

《C语言解惑》