第05章单元总结-练习-实训-知识拓展.doc_第1页
第05章单元总结-练习-实训-知识拓展.doc_第2页
第05章单元总结-练习-实训-知识拓展.doc_第3页
第05章单元总结-练习-实训-知识拓展.doc_第4页
第05章单元总结-练习-实训-知识拓展.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论