1 引言
2 用循环结构输出几何图形
| 
 | 
表1 实心三角形的构成表
| 行号i | 空格数m | 星号数n | 
| 1 | 4 | 1 | 
| 2 | 3 | 3 | 
| 3 | 2 | 5 | 
| 4 | 1 | 7 | 
| 5 | 0 | 9 | 
| for(i=1;i<=5;i++) { /*输出(5-i)个空格;*/ for(m=1;m<=5-i;m++)    printf(“ ”); /*输出(2*i-1)个星号;*/ for(n=1;n<=2*i-1;n++)    printf(“*”); /*输出回车符;*/ printf(“\n”); } 程序段1 实心三角形的主要程序 | 
3 数组中循环结构的应用
在C语言中,for语句经常与数组相结合,用于实现数组元素的赋值、输入与输出。对于初学者来说,更习惯于用顺序结构的语句来实现(如图2左)。我们将图2左的几条语句作比较,可以看出在这5条语句中,不同的只有数组下标,那么就可以将这5条语句合并成一条for语句,将数组下标换成for语句的循环变量i,而i的值从0增加到 4。按照for语句的基本语法规则可以很容易的写出图2右的for语句。

同样,对于下面这个输出二维数组元素的例子,也可以用上述办法实现,不过转换过程比上例要复杂一些:经过对比图3左侧方框中顺序结构的12条语句,可以发现也是只有数组下标在变化,但是由于是二维数组,行下标和列下标同时都在变化,很显然不能直接用一条简单的for语句来实现(不是绝对不可以实现,后面将会看到)。但是我们可以把这12条语句细分一下,3条语句为一组,而在同一组中的语句只有列下标在变化,这时可以采用上例中的方法,将列下标都用循环变量j来代替,得到图3右上的形式。再次对比图3右上的4条for语句,不同的是行下标,同样用新的循环变量i来代替,合并后得到图3右下最终二重for循环的语句。
 
    
在上例中,常规的思路都采用二重for循环与二维数组相结合来实现对数组元素的访问,实际上也可以使用一重for循环来实现:无论如何变化,我们可以先确定的是,输出语句printf肯定要执行12次,如果用一重for循环,那么循环变量i的值就要从0递增到11。再分析数组行下标m和列下标n与循环变量i之间的关系,很显然:i=m*3+n,按照整数除法的思想,行下标m恰好是循环变量i整除3后的商,而列下标n恰好是循环变量i整除3后的余数,即:
4 循环结构中的效率问题
| int isprime(int n) { int i; for(i=2;i<n;i++)     if(n%i==0) return 0; return 1; } 程序段2 判断素数的程序段 | 
 
  
 











