c加加高级语言循环结构,高级C语言循环结构程序设计.ppt

1,高级语言程序设计,孟宇龙计算机科学与技术学院mengyulong@,2,第5章循环结构程序设计,本章需要掌握的内容掌握3种基本循环。掌握多重循环。掌握continue和break的使用。编写循环结构程序。,3,5.1引言,什么是循环?为什么要使用循环?,问题1:,问题2:求学生平均成绩分数相加后除以课数,在许多问题中需要用到循环控制。循环结构是结构化程序设计的基本结构之一,它和顺序结构、选择结构共同作为各种复杂程序的基本构造单元。,4,goto语句以及用goto语句构成循环,goto语句为无条件转向语句,它的一般形式为goto语句标号;语句标号用标识符表示,它的定名规则与变量名相同,即由字母、数字和下划线组成,其第一个字符必须为字母或下划线。例如:gotolabel_1;合法;goto123;不合法。,5,一般来说,goto语句可以有两种用途:(1)与if语句一起构成循环结构;(2)从循环体中跳转到循环体外。但是这种用法不符合结构化原则,一般不宜采用,只有在不得已时(例如能大大提高效率)才使用。,6,goto语句举例,用if语句和goto语句构成循环,求1到100的和。,voidmain(){inti,sum=0;i=1;loop:if(i<=100){sum=sum+i;i++;gotoloop;}printf("%d\n",sum);},结构化程序设计方法主张限制使用goto语句,因为滥用goto语句将使程序流程无规律、可读性差。,7,8,5.2循环的实现方法,三种:while、do…while、for每种循环都需要下面的元素:循环变量循环体循环的判断条件,9,5.2.1while循环,while语句用来实现“当型”循环结构。一般形式:while(表达式)循环体语句;,10,求1到100的和(while循环),#includevoidmain(){inti,sum=0;i=1;while(i<=100){sum=sum+i;i++;}printf("%d\n",sum);},11,例5.1从键盘输入一组学生成绩,若输入的成绩大于或等于0,将其累加到总成绩上,若成绩小于0,停止输入,然后计算并输出平均成绩。,12,5.2.2for循环,一般形式,for([expr1];[expr2];[expr3])循环体语句;,13,,for(循环变量赋初值;循环条件;循环变量增值){循环体语句;},for语句等价于下列语句:表达式1;while(表达式2){语句;表达式3;},14,例5.2求1到100的和(for循环),#includevoidmain(){inti,sum=0;for(i=1;i<=100;i++)sum=sum+i;printf("%d\n",sum);},15,例5.3从键盘输入10个整型数据,找出其中最大数和最小数。,16,for语句的说明,(1)for语句的一般形式中的“表达式1”可以省略。for(;i<=100;i++)sum=sum+i;(2)表达式2省略,即不判断循环条件。for(i=1;;i++)sum=sum+i;(3)表达式3也可以省略。for(i=1;i<=100;){sum=sum+i;i++;},17,for语句的说明,(4)可以只有表达式2,即只给循环条件。for(;i<=100;)while(i<=100){{sum=sum+i;相当于sum=sum+i;i++;i++;}}(5)3个表达式都可省略。for(;;)语句;相当于while(1)语句;,18,for语句的说明,(6)表达式1可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式。for(sum=0;i<=100;i++)sum=sum+i;for(sum=0,i=1;i<=100;i++)sum=sum+i;for(i=0,j=100;i<=j;i++,j--)k=i+j;,19,for语句的说明,(7)表达式一般是关系表达式(如i<=100)或逻辑表达式(如ab,再计算a和b的余数,执行②;④b是最大公约数。求解最大公约数是一个循环过程,循环条件是余数r不为0;循环体包含三个操作:b=>a,r=>b,计算a和b的余数。数据结构定义三个变量。变量a、b分别存储两个原始数据,变量r存储余数。,5.4程序举例,#include"stdio.h"voidmain(){inta,b,r;scanf("%d%d",},图5.20例5.10运行结果,5.4程序举例,,例5.11打印输出Fibonacci数列的前20项,每行输出5个数据。Fibonacci数列的通项如下:,问题分析:循环体可分为三部分:计算、输出、为下一次循环做准备。计算主要是根据前两项计算当前项。输出部分首先输出当前项,然后控制换行操作。如果当前计算、输出的是第i项,其前两项分别是第i-1项和i-2项;当进入一下次循环时,计算、输出的是第i+1项,它的前两项分别是第i项和第i-1项,在计算第i+1项前,应先将第i项和第i-1项的值存入表示前两项的变量中,这是计算、输出第i+1项前的准备工作。,5.4程序举例,#includevoidmain(){doublex1,x0,f,f1;x1=1.5;do{x0=x1;f=((2*x0-4)*x0+3)*x0-6;f1=(6*x0-8)*x0+3;x1=x0-f/f1;}while(fabs(x1-x0)>=1e-5);printf("Therootofequationis5.2f\n",x1);},图5.25例5.12运行结果,5.4程序举例,例5.13打印输出下面的图形,行数由键盘输入(行数<=9)。,1121123211234321123454321……,先分析图形的特点:①图形的行数(n),②每的字符数,③每字符的起始位置。本例图形有n行,第i行有2*i-1个字符,第i行字符的起始位置是n-i+1(即每行前有n-i个空格)。每行字符的变化有规律:12…i…21。,因此:本例的外层循环体可由4部分构成:①输出空格,②输出字符1、2、…、i,③输出字符i-1、i-2、…、1,④输出换行符。其中前3部分使用循环控制完成。,5.4程序举例,图5.26例5.13框图,图5.27例5.13运行结果,#includevoidmain(){inti,j,n;scanf("%d",}},,

展开阅读全文

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值