首页 » C语言解惑 » C语言解惑全文在线阅读

《C语言解惑》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=21*3=3    2*3=61*4=4    2*4=8    3*4=121*5=5    2*5=10   3*5=15    4*5=201*6=6    2*6=12   3*6=18    4*6=24    5*6=301*7=7    2*7=14   3*7=21    4*7=28    5*7=35    6*7=421*8=8    2*8=16   3*8=24    4*8=32    5*8=40    6*8=48    7*8=561*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);  

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