对C语言中循环结构的认识

来源 :考试周刊 | 被引量 : 0次 | 上传用户:zx154028
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要: 循环结构是结构化程序设计中的三种基本结构之一,也是程序设计的基础,它和顺序结构、选择结构共同作为各种复杂程序的基本构造单元。但是,对于初学者来说,循环结构与人类日常的思维习惯不同,较难掌握。本文用几个实例阐述了在《C语言程序设计》课程中循环结构的教学方法。
  关键词: 循环结构 C语言 程序设计
  
  引言
  顺序、选择、循环是结构化程序设计的三种基本结构,所以在高级语言程序设计课程中,掌握这三种结构是学好程序设计的基础。循环结构是这三者中最复杂的一种,几乎所有的程序都离不开循环,因此,熟练掌握循环结构是程序设计的最基本的要求。在C语言中,循环结构主要是由for和while、do-while语句实现的,其中for语句的应用更为普遍一些。for语句的用法对于有程序设计经验的学生来说轻而易举,但是对于那些没有经验的初学者来说难度却不小。本文从初学者的角度,阐述了C语言中循环结构几种典型应用的实现方法。
  一、用循环结构实现几何图形
  输出简单的几何图形,是循环结构的典型应用之一。对于这一类型的题目,初学者往往直接采用一条或若干条输出语句printf完成,这样虽然可以完成题目要求,但是很显然缺乏灵活性,不符合程序设计的思想。按照正常的程序设计思想,应该先分析图形的构成,找出其中的规律:如图1中的实心三角形,每一行由若干个空格、星号和一个回车换行符构成,将行号、空格数和星号数分别设为i、m和n,则可形成表1:
  *
  ***
  *****
  *******
  *********
  
  
  由表1可以得出,行号i与空格数m、星号数n有如下的数学关系:
  m=5-i,n=2×i-1
  则实心三角形的构成规律可以描述为:第i行由(5-i)个空格和(2×i-1)个星号和一个回车符构成。把行号i作为for语句的循环变量,则此程序中的循环部分如下:
  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”);
  }
  采用上面的方法,可以使学生很容易编写出类似的程序,其中关键在于让学生找出图形中行号与每一行的空格数及星号数的关系。
  二、循环结构在数组中的应用
  在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循环的语句。
  
  三、循环结构中的效率问题
  
  程序设计的初学者往往以完成题目要求的功能为目的,程序的执行效率是最容易忽略的一个问题。在循环结构中,具体表现为循环体的执行次数。例如,一个经典的素数判定问题。在数学中素数的定义为:素数即指那些大于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的算术平方根,这样可以大大减少循环体的执行次数,提高程序的效率。
  程序的执行效率是编程中时刻需要考虑的问题,也是程序设计中的基本要求。这需要许多算法方面的知识,对于初学者来说,要求可能过高,但是我们在讲授过程中要注意向学生灌输这种思想,从学习之初就要打下良好的基础,尤其是类似上面例子中这样显而易见的情况,可以提醒学生在编制完一道程序以后,检验一下,是否还有可优化的地方,这对以后进一步学习高级编程都是必要的。
  如何让一名初学者尽快摆脱日常的思维定式,更加透彻地理解和掌握程序设计中的基本思想,领会程序设计的精髓,是高级语言程序设计这门课程的讲授过程中应该时刻注意的问题。希望本文能在这方面起到一点作用。
  
  参考文献:
  [1]谭浩强.C语言程序设计(第二版)[M].北京:清华大学出版社,1999.
  [2]苏运霖译.计算机程序设计艺术第1卷.基本算法[M].北京:国防工业出版社,2002.
其他文献
《语文课程标准》指出:“语文是最重要的交际工具,是人类文化的重要组成部分。工具性与人文性的统一,是语文课程的基本特点。”语文课程要关注每一个儿童的成长,发展儿童丰富的内心世界和主体人格,体现以育人为本的现代教育价值取向,培养他们对生活的积极态度和参与社会的能力,成为有爱心、有责任心、有良好的行为习惯和个性品质的人。  一、挖掘教材内容——敢于表达  在传统的课堂教学中,教师是凌驾于学生之上的“先闻
摘 要: LED具有节能、维护成本低、显色性能良好等优点,适合应用于道路照明中,但其存在的光学设计、光通量、散热等问题尚待解决。  关键词: 大功率LED路灯 道路照明 可靠性    路灯是城市照明的重要组成部分,传统的路灯常采用高压钠灯。由于高压钠灯整体上光效低,造成了能源的巨大浪费,因此,开发高效、节能、寿命长、显色指数高、环保的新型路灯对城市照明节能具有十分重要的意义。  LED(发光二极管
摘 要: 高技能人才是我国人才队伍的重要组成部分,是推动技术创新和实现科技成果转化的重要力量。要让学生成为中高端制造业生产、管理一线的技术人员,将知识创新成果应用于工程、生产第一线,进行技术创新、工艺创新、生产组织形式创新,没有一定的文化知识基础、一定的学习能力是不行的。高技能人才队伍建设,必须严把进口和出口关,让有学习基础、学习能力的进来,让德才兼备的出去。  关键词: 高技能人才 进口 出口 
[摘 要]马克思主义新闻观是指导我国新闻传播活动的理论基础,自觉坚持马克思主义新闻观,是当代党报新闻工作者的政治责任。如何基于马克思主义新闻观的研究视角,理性看待新闻专业性以及实现新闻公共性,成为我国新闻理论面临的重要挑战。本文通过研究实践新闻专业性,实践新闻公共性,探究把握新闻专业性的方法,维护新闻公共性的方法,以期在实践中不断完善和发展马克思主义新闻观。  [关键词]实践;专业性;实现;公共性
近几年中高考一直以话题作文、材料作文形式居多,放宽了对文体的要求,同时也形成一种错觉,似乎作文标准也有所降低,认为只要巧妙,只要煽情有文采就可以拿到高分,实则大大不然。试看年年《考试说明》,作文发展等级第一条就是:“深刻,要透过现象看本质,揭示问题产生的原因,观点具有启发作用。”可见,思想永远是文章的精魂。中、高考从未放松对学生拥有思想、拥有个性的要求。这一点反而应该是我们作文训练的重中之重。可我
摘 要: 在努力构建社会主义和谐社会的新形势下,高职院校如何坚持“育人为本,德育为先”的教育方针,如何在实际工作中贯彻16号文件精神,本文从学校、教师、学生等角度探讨做好大学生德育工作、促进毕业生就业、加速高职教育健康发展的命题。  关键词: 思想政治教育 以人为本 道德教育    2010年是国家教育部[2006]16号文件《关于全面提高高等职业教育教学质量的若干意见》颁布五周年,高职院校以邓小
摘 要: 当前的数学课堂教学中,很多学生处于畏惧、厌恶听课的状态;教师总抱怨学生差,课堂上不配合,总是教师“一言堂”,学生与教师易出现敌对状态。本文作者通过实践与尝试,试图寻找课堂教学中提高学生学习积极性的方法与途径,让学生和教师能在轻松愉快的环境下学习与工作,让学生享受学习数学的乐趣。  关键词: 中专数学 课堂教学 提高 学习积极性    一、课题研究的背景    1.从学生的学习状况看。  
教学六年级“分数四则混合运算”之前,学生已经学习了整数、小数四则混合运算,对于整数、小数四则混合运算的运算顺序已经掌握了。这次学习分数四则混合运算应该不是一件困难的事情,如果仅仅满足学会分数四则混合运算的计算方法肯定是不够的。如何将今天所学的知识与以前学过的知识联系在一起,真正理解并建构小学阶段所学的四则混合运算的计算方法,这应该是本节课的教学关键所在。在教学这一节课时,我进行了以下两次不同的尝试
数学是人们在生活、劳动和学习中必不可少的工具,能够帮助人们处理数据,进行计算、推理和证明。数学模型能有效地描述自然现象、社会现象,也为一切重大技术发展提供基础,进而更好地应用自然现象改造社会,为人们服务。全日制义务教育《数学课程标准(实验稿)》明确指出:义务教育阶段的教学课程,其基本出发点是促进学生全面、持续、和谐地发展,它不仅要考虑数学自身的特点,而且应遵循学生学习数学的心理规律,强调从学生已有
摘 要: 班主任要以身作则,成为学生的楷模,赢得学生的信任。在建立良好的班风和学风的基础上,发挥班委会的骨干作用,以生为本,实行人性化管理。  关键词: 班主任工作 班级 科学管理    班主任是班级工作的领导者、组织者和协调者,也是沟通学校教育、家庭教育、社会教育的桥梁。班主任工作直接影响每个学生的全面发展。因此,做好班主任工作是极其重要的。笔者担任高中班主任多年,下面就如何做好班主任工作谈一点