c语言程序设计教程(二)ppt

上传人:tia****nde 文档编号:70631321 上传时间:2019-01-17 格式:PPT 页数:291 大小:825.81KB
返回 下载 相关 举报
c语言程序设计教程(二)ppt_第1页
第1页 / 共291页
c语言程序设计教程(二)ppt_第2页
第2页 / 共291页
c语言程序设计教程(二)ppt_第3页
第3页 / 共291页
c语言程序设计教程(二)ppt_第4页
第4页 / 共291页
c语言程序设计教程(二)ppt_第5页
第5页 / 共291页
点击查看更多>>
资源描述

《c语言程序设计教程(二)ppt》由会员分享,可在线阅读,更多相关《c语言程序设计教程(二)ppt(291页珍藏版)》请在金锄头文库上搜索。

1、C语言程序设计教程(二),第5章 循环结构 第6章 数组 第7章 函数,第5章 循环结构,循环结构与顺序结构、选择结构一起构成了解决各种复杂程序设计的基础,它主要用于处理那些需要重复执行的操作。相对于程序设计的三种结构,循环结构是最难掌握的,同时,它也是最重要的。C语言中构成循环结构的语句有三类:while循环,do-while循环和for循环。 通过本章学习,应掌握三类循环结构及其综合应用,强化循环的程序设计思想。,5.1 问题的提出,在许多问题中需要用到循环结构,我们先看两个实际问题。第一个问题是打印如图5-1所示图案。另外一个问题是计算从键盘输入n的阶乘(先不考虑溢出问题)。 * * *

2、 * * * * * * 图5-1 菱形图案,5.1 问题的提出(续),看到第一个问题,很多初学者觉得这个问题很简单,只要学习过printf语句,就能写出程序: #include void main() printf(“ * n“); printf(“ * n“); printf(“ * n“); printf(“ * n“) printf(“*n“); printf(“ * n“) printf(“ * n“); printf(“ * n“); printf(“ * n“); ,5.1 问题的提出(续),很显然,这个程序完全能够完成题目的要求,同时也能看出程序设计员没有利用循环结构,如果再按

3、照相应的规律增加几十行,甚至几百行的话,那么又应该如何写此程序呢? 第二个问题如果再不使用循环结构的话就不能完成了,因为在程序执行之前,程序员本身并不知道用户输入的n的值到底是多少。类似的问题应该如何解决呢?学习完本章的内容后,回头再来看这些问题,如果能熟练掌握循环结构程序设计思想的话,这些问题将迎刃而解。 常用的循环语句包括三类:while循环,do-while循环和for循环。,5.2 while 循环结构,while语句是循环结构结构程序中很常用的语句,该语句通常用于构成“当型”循环结构。,5.2.1 while语句的基本形式,while语句的一般形式为: while (表达式) 循环体

4、语句; 其执行过程为:先计算表达式的值,如果表达式的值为“真”(非0),则执行循环体语句,同时修改相应的变量后,再计算表达式,重复该过程,直到表达式的值为“假”(0)时退出循环。,5.2.2 while语句的应用,例5-1编程实现:从键盘输入n,计算n!(本例不考虑溢出问题)。 分析:先从键盘输入n,先判断n是否大于0,若小于0则提示用户正确输入,若等于0或1,则输出结果为1,若大于1则利用公式计算n!的值,然后输出即可。 程序代码如下: #include void main() int n; int i=1,sum=1; printf(“Please input a number: “);

5、scanf(“%d“,5.2.2 while语句的应用(续),if(n1) while(i=n) sum*=i; i+; printf(“The result of n! is :%dn“,sum); ,5.2.2 while语句的应用(续),运行结果: Please input a number: -4 Error!Enter again: 0 The result of n! is 1 Please input a number: 4 The result of n! is :24,5.2.2 while语句的应用(续),例5-2 编程实现:将从键盘输入的一串字符显示在屏幕上,遇到字符“*

6、”时终止(用while语句实现)。 分析:输入一个字符,判断该字符是否为终止符号“*”,若不是终止符号则继续输入,碰到回车符号开始接收输入,碰到“*”结束输入。 本例不能输出“*”,请读者思考如何设计程序使得能输出“*”。,5.2.2 while语句的应用(续),程序代码如下: #include void main() char c; printf(“Please input a string end with *:n“); c=getchar(); while(c!=*) putchar(c); c=getchar(); ,5.2.2 while语句的应用(续),运行结果: Please i

7、nput a string end with *: -4 56780 -4 56780 Guangxi* Guangxi,5.2.2 while语句的应用(续),例5-3 编程实现:输入某门课程的若干名同学的成绩,以-1作为结束输入的标志,计算该门课程的平均成绩。 分析:先输入一个成绩,若输入-1,直接结束,否则,使用循环结构计算总成绩,同时用计数器记录输入成绩个数,最后利用公式:平均分=总成绩/输入成绩个数,来求取平均成绩。,5.2.2 while语句的应用(续),程序代码如下: #include void main() int n=0; float sum=0,score=0; print

8、f(“Please input the score end with -1: “); scanf(“%f“,5.2.2 while语句的应用(续),if(score=0) while(score!=-1) sum+=score; scanf(“%f“, ,5.2.2 while语句的应用(续),运行结果: Please input the score end with -1: -4 No score! Please input the score end with -1: 90 86 48 84 -1 The average score is 77.00,5.2.2 while语句的应用(续)

9、,注意: (1)循环体若包含一个以上的语句,则要用花括弧把这些语句括起来,以复合语句形式出现,否则,可能与程序要求不符,因为while语句的范围只到while后面的第一个分号处。例5-2中若把 while(c!=*) putchar(c); c=getchar(); 的花括弧去掉,写成: while(c!=*) putchar(c); c=getchar(); 则程序显然不能完成题目要求,并且会陷入死循环。,5.2.2 while语句的应用(续),(2)在循环体中一定要有使循环趋向结束的操作。比如:例5-1的i+和例5-3的n+语句,否则,循环将永不结束,形成死循环。 (3)如果循环表达式的值

10、为“0”或者假,则循环体语句一次也不执行。 例如: while(0) sum*=i; i+; 由于表达式的值为0,循环体语句一次也不执行。,5.2.2 while语句的应用(续),(4)循环表达式的值为“1”或者“永真”的时候,可以通过if语句对循环进行控制。例5-1中的语句: While(i=n) sum*=i; i+; 两个循环体能完成相同的功能,其中的break语句用于跳出循环。break语句的用法参见本章第五节。 (5)while循环语句的循环体中又可以包含循环语句,称为循环语句的嵌套,又称为多重循环,While(8) sum*=i; if(i=n) i+; else break; ,

11、可以写成:,5.3 do-while 循环结构,do-while语句也是循环结构结构程序中比较常用的语句,该语句类似于“直到型”循环结构,但它的循环继续条件与“直到型”相反。,5.3.1 do-while语句的基本形式,while语句的一般形式为: do 循环体语句; while (表达式); 其执行过程为:先执行一次循环体语句,然后计算表达式的值,如果表达式的值“真”(非0),则再次执行循环体,同时修改相应的变量后,再计算表达式,重复该过程,直到表达式的值为“假”(0)时退出循环。,5.3.2 while语句的应用,例5-4 编程实现:从键盘输入正整数n,计算s=1+2+3+n(用while

12、语句实现)。 分析:从键盘输入正整数n,利用公式计算s=1+2+3+n,然后输出s。 程序代码如下:,5.3.2 while语句的应用(续),#include void main() int n; int i=0,s=0; printf(“Please input a positive integer: “); scanf(“%d“, ,5.3.2 while语句的应用(续),运行结果: Please input a positive integer:100 The result is 5050 Please input a positive integer:999 The result is

13、 :499500,5.3.2 while语句的应用(续),例5-5 编程实现:将从键盘输入的一串字符显示在屏幕上,遇到字符“*”时终止(用do-while语句实现). 分析:输入一个字符,判断该字符是否终止符号“*”,不是终止符号则继续输入,碰到回车符号开始接收输入,碰到*结束输入。 程序代码如下:,5.3.2 while语句的应用(续),#include void main() char c; printf(“Please input a string end with *:“); do putchar(c=getchar(); while(c!=*); ,5.3.2 while语句的应用(

14、续),运行结果: Please input a string end with *: Guangxi Guangxi 233234746767hfas* 233234746767hfas*,5.3.2 while语句的应用(续),注意: (1)和while语句类似,do-while循环体内也一定要有改变循环条件的语句,使循环趋向于结束。 (2)为了避免编译系统把do-while语句的while当成while语句中的while语句的开始,do-while的循环体即使只有一个语句,也需要用花括号括起来。例5-5中的do-while循环体部分可以改写成: do putchar(c=getchar()

15、; while(c!=*); 这样的循环体同时能完成和例5-5一样的功能,但是若把花括号去掉,写成: do putchar(c=getchar(); while(c!=*); 则编译系统可能把while(c!=*);部分当成一个while语句进行编译。,5.3.2 while语句的应用(续),3)do-whlie循环先执行循环体语句,后判断表达式,也就是说不管其表达式的值是否总为“假”(0),其循环体语句总能够被执行。 例如: while(0) do printf(“While!n”); printf(“Do-while!n”); while(0); 上例很容易看出while语句和do-while语句的不同之处,while语句执行的时候是没有输出的,但是do-while语句执行的时候就会输出:Do-while!。可以得到结论:在两者有相同循环体的情况下,当while后面的表达式的第一次为“真”时,两个循环体得到的结果相同,否则,二者结果不同。 (4)do-while循环语句的循环体中又可以包含循环语句以实现多重循环。,5.4 for 循环结构,在三类循环结构语句中,for语句使用最为灵活,不仅可以用于循环次数已

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号