c语言双重性,C语言双重循环应用初探

【摘要】循环结构是结构化程序设计中的三大基本控制结构之一,也是程序员学习程序设计时最为难以理解的部分。在C语言中,循环结构主要是由for语句和while语句以及do-while语句实现,其中for语句的应用更为普遍一些。在三种循环结构的学习中,我发现for的学习是最为困难的,尤其是for循环在多重循环中的应用。本文以C语言中for循环应用为例讲解多重循环的学习思路和方法。

【关键字】多重循环,for循环,执行效率

在结构化程序设计中循环结构是最复杂的一种结构,在几乎所有的程序应用中都离不开循环结构。为了在教学中让同学们更好地掌握循环的使用方法,经过探索研究,笔者探索了循环结构的典型应用――几何图形的打印输出。在程序设计的初级阶段,我们在学习中会经常遇见这一类型的题目。对此,我们可以有多种策略予以实现。首先,我们可以简单地采用一条或若干条标准输出函数printf来完成,这种设计思路可以完成题目的要求但是过于缺乏灵活性,不符合循环程序设计的本意。按照循环程序的设计思路,我们首先应分析图形的整体构成,找出其中的规律,注意,找规律是解决循环类问题的关键。例如我们要实现如图1中所示的空心凌形,每一行由若干个空格、星号和一个回车换行符构成。相对而言,这是一个较为复杂的图形设计题目,之所以我拿到这里来进行分析,一方面体现for循环的应用,另一方面介绍多重循环结构应用的算法思路。具体解决思路如下:首先,从宏观上把这个图形分割成上、下两个部分,这样便于我们模块化的思路来进行设计。然后,分别计算出上、下半部分行号、空格和星号数,根据上、下半图形(如图2和图3所示)的分解我们可以得出下面两个表(如表1和表2所示):

通过对表1的分析,我们可以得出行数、空格数以及星号数的变化规律。我们分别用i表示行号、j控制外部空格数和星号数变化、k控制菱形内部空格数。从而得出如下的数学关系:上三角形的构成规律为:第i行由(4-i)个外部空格和(2*i-3)个内部空格和1~2个星号和一个换行构成。把行号i作为外部for语句的循环变量,把j作为每行外部空格数循环控制变量,把k作为每行内部空格数循环控制变量,从而得出实现上三角形部分的程序段为:

for(i=1;i

{

for(j=1;j

printf(" ");//用循环方式控制外部空格的输出,输出空格数分别3,2,1

printf("*");//每次循环输出外部空格后,输出左边的星号

for(k=1;k

printf(" ");//用循环方式控制内部空格的输出,输出空格数分别1,3,5

if(i>1)

printf("*");//在输出内部空格后输出右边的星号

printf("\n");//每输出一行,就要换行

}

通过对表2的分析,我们可以得出行数、空格数以及星号数的变化规律。我们分别用m控制行号、n控制外部空格数和星号数变化、p控制菱形内部空格数。从而得出如下的数学关系:下三角形的构成规律可以描述为:第m行由(4-m)个外部空格和(2*m-3)个内部空格和1~2个星号和一个换行构成。把行号m作为外部for语句的循环变量,把n作为每行外部空格数循环控制变量,把p作为每行内部空格数循环控制变量,从而得出实现下三角形部分的程序段为:

for(m=3;m>=1;m--) //控制输出的总行数,总共包含3行

{

for(n=1;n

printf(" "); //用循环方式控制外部空格的输出,输出空格数分别1,2,3

printf("*"); //每次循环输出空格后,输出左边的星号

for(p=1;p

printf(" ");//用循环方式控制内部空格的输出,输出空格数分别3,1

if(m>1)

printf("*");//在输出内部空格后输出右边的星号

printf("\n");//每输出一行,就要换行

}

最后,我们只需要把两段程序段放入到C源程序的main函数中,通过编译运行即可得到我们想要的菱形图案。

通过案例分析我们可以得出,循环结构的应用里,找规律是非常重要的一环,理清循环变量的变化规律,找准循环体,控制好循环变量的变化就基本能解决较为复杂的循环程序设计。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值