资源描述:
《第05讲循环结构程序设计ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、5.1while语句5.2do-while语句5.3for语句5.4循环的嵌套5.5break、continue和goto语句5.6程序举例第5讲循环结构程序设计1C语言有while、do-while、for三种循环结构语句。前两个称为条件循环,即根据条件来决定是否继续循环;后一个称为计数循环,即根据设定的执行次数来执行循环。25.1while语句及其循环结构while语句和格式及执行过程:格式:while(表达式)语句执行过程:先计算表达式之值,若为非0(即条件成立),执行后面的语句(称之为循环体)
2、之后,再计算表达式之值进行判断,如此多次重复执行循环体;若表达式之值为0(即条件不成立),跳出循环体语句,继续向下执行。while语句的流程图表达式语句(循环体)Y(非0)N(0)while(表达式)语句例1求1—100之间所有整数的和i<=100sum+=i;/*累加*/i+=1;/*计数器加1*/Y(非0)N(0)i=1;sum=0;printf("i=%d,sum=%d",i,sum);求1—100之间整数和的程序main(){inti=1,sum=0;while(i<=100){sum+=
3、i;i+=1;}printf("i=%d,sum=%d",i,sum);}这是一个while语句想一想,语句sum+=i;和语句i+=1;能否改变位置?为什么?想一想,如果在while语句之前对变量sum赋初值为1,是否可以?程序的哪些地方应作相应的改动?求1—100之间整数和的程序运行过程main(){inti=1,sum=0;while(i<=100){sum+=i;i+=1;}printf("i=%d,sum=%d",i,sum);}这是一个while语句程序执行的过程和结果如下:i=1
4、01,sum=5050注意:循环结束后,变量i的值一定大于100。想想这样的一段循环语句的执行结果:i=1;while(i<=100)putchar(‘*’);i++;这个循环永远不会结束,因为循环控制变量i没有在循环体内被改变,i++;不属于循环体。应该改为:i=1;while(i<=100){putchar(‘*’);i++;}循环语句中一定要注意表达式的值是否能在循环执行过程中被改变,以免造成死循环。题目1:任意输入一个自然数,把它反序输出。(如:原数为123,输出321)。分析:此题不确定循环
5、执行的次数,也不涉及一个规律变化的变量,一般用while或do-while来编写。又由于第一次就要判断输入的是否是自然数,通常用while来实现。算法步骤如下:1.定义整型变量a用于存储输入的自然数,定义t初值为0用于存放a的反序数,定义i用于依次存放求出的a的每一位的数值。2.输入一个自然数赋值给变量a3.若a>0,执行第4步,否则执行第7步4.i=a%105.t=t*10+i6.a=a/10,并返回第3步7.输出t程序:#includemain(){longa,i,t=0;sca
6、nf(“%ld”,&a);while(a>0){i=a%10;//取出最低位t=t*10+i;//左移a=a/10;//舍掉最低位}printf(“%ld”,t);}题目2:求两个整数的最大公约数和最小公倍数,例如24与16辗转相除法求最大公约数的具体步骤如下:1.例如m=24,n=16,定义变量r存放m与n的余数2.r=m%n3.判断r是否为0,如果r为0,则n就是m与n的最大公约数,转第6步;否则,转第4步;4.m=n;n=r;5.r=m%n;转到第3步;6.输出最大公约数n;7.最小公倍数=
7、m*n/最大公约数;请试着写出源代码!最大公约数的相关题目:34-2;83-2题目3:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位,例如s=7654321,t则为7531。2-2;4-2;52-2;53-1;54-1;54-2;55-1题目4:求一个无符号数字w的低n-1位。16-3;与题目1思路相近。(1)分离数字;(2)按原来的顺序组合;(3)最高位不组合即可!5.2do-while语句及其循环结构do—while语句和格式及执行过程:格式:
8、do语句while(表达式);执行过程:先执行语句(称之为循环体),然后计算表达式之值,若为非0(即条件成立),再执行语句(循环体)后计算表达式之值,如此多次重复执行循环体并判断条件;若表达式之值为0(即条件不成立),结束循环,继续向下执行。do—while语句的流程图表达式语句(循环体)Y(非0)N(0)注意:while循环语句与do-while循环语句的区别。这是一个do-while语句用do-while语句求100以内正整数的和main(){in