您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第05章单元总结-练习-实训-知识拓展
《C语言程序设计》单元总结单元练习实训指导知识拓展第五章循环结构程序设计班级:姓名:学号:1单元总结提升在本单元中,如何理解循环的本质、如何分析循环的三个要素以及如何描述循环结构语句是核心内容。通过本单元的学习,我们应该知道:1.循环的本质是将程序员从大量重复编写相同代码的工作中解放出来,减少程序源代码的存储空间,提高程序的质量,更提高程序编写的工作效率,但计算机执行程序的工作量并没有减少。2.循环结构的三要素包括:(1)(2)(3)3.循环结构描述语句有三种:、和。其中while和do-while的区别在于。4.循环结构控制语句break的作用是:;循环结构控制语句continue的作用是:。5.在一个循环结构语句中又包含了一个循环结构语句称之为。程序执行时,外层循环每执行一次,内层循环就要完整的执行完,直至内层循环执行结束,再开始执行下一次外层循环。通过本单元的学习,应该掌握C语言循环结构程序设计的思路和基本语句的用法。单元练习一.选择题1.下面描述正确的是()。A.while语句不管条件表达式是否为真,都将执行一次循环体。B.do-while语句构成的循环,一定要有能使while后面表达式的值为0的操作,或在循环体中使用break语句。C.for循环只能用于循环次数确定的情况,且先执行循环体语句,后判断条件表达式。D.break语句的作用是从最近的循环体内跳出来,而continue语句的作用是继续执行循环体中尚未执行的语句。2.对for(表达式1;;表达式3),可理解为()。A.for(表达式1;0;表达式3)B.for(表达式1;1;表达式3)C.语法错误D.仅执行循环一次23.以下程序的功能为()。#includestdio.hvoidmain(){inti,k=0;for(i=1;i10;i+=2)k+=i+1;printf(%d\n,k);}A.计算自然数1~9的累加和B.计算自然数1~10的偶数之和C.计算自然数1~9的奇数之和D.计算自然数1~10的累加和4.以下能正确计算1*2*3*4*5*6*7*8*9*10的程序段是()。A.do{i=1;s=1;B.do{i=1;s=0;s=s*i;s=s*i;i++;i++;}while(i=10);}while(i=10);C.i=1;s=1;D.i=1;s=0;do{do{s=s*i;s=s*i;i++;i++;}while(i=10);}while(i=10);5.有以下程序段intk=0;while(k=1)k++;while循环执行的次数是()。A.无限次B.1次C.语法错误,不能执行D.一次也不执行二.填空题1.若输入字符串:abcde回车,则以下while循环体将执行次。while((ch=getchar())==’e’)printf(*);2.以下程序执行后的输出结果是。#includestdio.hvoidmain(){inti;for(i=0;i3;i++)switch(i){case1:printf(%d,i);case2:printf(%d,i);3default:printf(%d,i);}}3.下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。#includestdio.hvoidmain(){inti,j;for(i=0;;i++){j=i*10+6;if()continue;printf(%d\n,j);}}4.有以下程序#includestdio.hvoidmain(){intx=23;do{printf(%d,x--);}while(!x);}该程序执行的结果为。5.以下程序的功能是计算1-3+5-7+…-99+101的值,请将程序补充完整。#includestdio.hvoidmain(){inti,t=1,s=0;for(i=1;i=101;i+=2){s=s+;;}printf(%d\n,s);}4实训指导【实训目的】1.培养使用while、do-while和for语句编写基本循环结构的程序设计能力。2.理解循环嵌套、二重循环和多重循环的含义及其执行过程。3.培养循环结构程序编写和调试过程中常见的错误分析及解决能力。【实验准备】1.回顾while、do-while和for语句的格式及执行过程。2.阅读教材中的实例,然后预编写各实验题目的程序代码。【实训内容】1.某选秀节目有十个评委,选手的得分为十个评委评分后的平均分,试编程实现评分功能,即输入评委给出的10个分数,输出平均分。(要求:分别用三种循环语句完成)程序预编写程序修正//用while语句完成//用do-while语句完成//用for语句完成52.在某一黑夜一司机碰伤行人之后落荒而逃,经警方调查,有三个目击者。甲说:车牌号的前两位相同;乙说:车牌号的后两位加起来等于6;丙说:车牌号是一个四位数并且能被2整除。根据上述线索,编程找出可能的车牌号。程序预编写程序修正3.输出1900~2008年中所有的润年,要求每行输出四个年号。程序预编写程序修正64.用循环结构输出几何图形:************************************提示:输出简单的几何图形(如图),是循环结构的典型应用之一。对于这一类型的题目,初学者往往直接采用一条或若干条输出语句printf完成,这样虽然可以完成题目要求,但是很显然缺乏灵活性,不符合程序设计的思想。按照正常的程序设计思想,应该先分析图形的构成,找出其中的规律:如图中的实心三角形,每一行由若干个空格、星号和一个回车换行符构成,将行号、空格数和星号数分别设为i、m和n,对于行i,相应的空格数m为6-i,星号数n为2*i-1。程序预编写程序修正5.百元百鸡问题。我国古代数学家张丘键在《算经》中出了一道题:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?这是一个古典数学问题,意思是说用一百个铜钱买了一百只鸡,其中公鸡一只5钱、母鸡一只3钱,小鸡一钱3只,问一百只鸡中公鸡、母鸡、小鸡各多少。提示:设一百只鸡中公鸡、母鸡、小鸡分别为x,y,z,问题化为三元一次方程组:)(100)(1003/35百鸡百钱zyxzyx这里x,y,z为正整数,且z是3的倍数;由于鸡和钱的总数都是100,可以确定x,y,z的取值范围:x的取值范围为1~20y的取值范围为1~33z的取值范围为3~99,步长为3对于这个问题我们可以用穷举的方法,遍历x,y,z的所有可能组合,最后得到问题的解。7程序预编写程序修正8知识拓展浅谈算法复杂度(一)同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。算法的复杂性体现在运行该算法时计算机所需资源的多少上,计算机资源最重要的是时间和空间资源,因此算法复杂度分为时间复杂度和空间复杂度。时间复杂度是指执行算法所需要的计算工作量;而空间复杂度是指执行这个算法所需要的内存空间。本文主要讲述时间复杂度,空间复杂度将在下一单元的知识拓展中讲述。一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。下面通过一个案例来具体感受一下。华为公司曾经为面试者出过这样一个笔试题目:当n值比较大时,编程计算1+2+3+…+n的值(假定结果不会超过长整型变量的范围)。当看到这个题目后,很多面试者毫不犹豫的写出了如下答案:longi,n,sum=0;scanf(“%ld”,&n);for(i=1;i=n;i++)sum+=i;printf(“sum=%ld”,sum);也有一些面试者略做思考之后写出了如下答案:longi,n,sum=0;scanf(“%ld”,&n);sum=(1+n)*n/2;printf(“sum=%ld”,sum);对于第一个答案使用了循环结构解决方案,该方案简单易懂,循环体sum+=i;执行n次后得出答案;第二个答案使用了数学公式解决方案,该方案简单直接,执行一次表达式((long)(1+n)*n/2即可得出答案。大家看过之后,很容易分析出那个答案最优,第一个答案不管怎么“折腾”,其效率也不可能与直接得出结果的第二个答案相比,后者的时间复杂度明显优于前者。所以优秀的程序员需要敏感地将数学等知识用在程序设计中,在程序设计时,应充分考虑算法的质量。算法的时间复杂度直接影响着程序的执行效率,需要在编程中时刻考虑,这也是对程序员的基本要求。但是这需要许多算法方面的知识,对于初学者来说,往往以完成题目要求的功能为目的,程序的执行效率是最容易忽略的一个问题,但是在我们的学习过程中要注意这种思想的培养,从学习之初就打下良好的基础。
本文标题:第05章单元总结-练习-实训-知识拓展
链接地址:https://www.777doc.com/doc-2241081 .html