7.4.2 分析C语言循环语句的效率

前面的内容已经详细讲解了在C语言中4种循环语句的基本知识。在此,对上述循环语句进行总结,以帮助读者加深理解。

1.循环语句的比较

对于C语言中的4种循环语句,比较起来体现在以下3点。

(1)这4种循环都可以处理同一个问题,一般可以互相代替。但一般不提倡用goto循环。

(2)在while和do…while循环体中应包括使循环趋于结束的语句,for语句功能最强。

(3)使用while和do…while循环时,循环变量初始化的操作应在while和do…while语句之前完成,而for语句可以在表达式1中实现循环变量的初始化。

2.循环语句的效率总结

对于初学者来说,往往以完成项目要求的功能为目的,程序的执行效率是一个最容易忽略的问题。在循环结构中,具体表现为循环体的执行次数。例如,一个经典的素数判定问题。在数学中素数的定义为:素数指那些大于1,且除了1和它本身外不能被其他任何数整除的数。根据这一定义,初学者很容易编写出如下的程序。

    int isprime(int n){
    int i;
    for(i=2; i<n; i++)
          if(n%i==0) return 0;
    return 1;
    }

上述代码完全可以实现项目要求的功能。但是当对for循环的执行次数进行分析时应该发现,当n不是素数时,没有任何问题;而当n是素数时,循环体就要执行n-2次,而实际上是不需要这么多次的。根据数学的知识,可以将次数降为n/2或n,这样可以大大减少循环体的执行次数,提高程序的效率。

程序的执行效率是在编程中需要时刻考虑的问题,也是程序设计的基本要求。这需要许多算法方面的知识,对于初学者来说,这种要求可能过高,但是从学习之初就要打下良好的基础,尤其是针对类似于上面例子中这样显而易见的情况,可以在编制完一个程序以后,检验一下是否还有可优化的地方,这对以后进一步学习高级编程是很有必要的。