C C++程序设计 第2版 教学课件 ppt 作者 陈卫卫 电子教案 C第2章PPT-2

上传人:E**** 文档编号:89188213 上传时间:2019-05-21 格式:PPT 页数:51 大小:286.50KB
返回 下载 相关 举报
C C++程序设计 第2版  教学课件 ppt 作者 陈卫卫 电子教案 C第2章PPT-2_第1页
第1页 / 共51页
C C++程序设计 第2版  教学课件 ppt 作者 陈卫卫 电子教案 C第2章PPT-2_第2页
第2页 / 共51页
C C++程序设计 第2版  教学课件 ppt 作者 陈卫卫 电子教案 C第2章PPT-2_第3页
第3页 / 共51页
C C++程序设计 第2版  教学课件 ppt 作者 陈卫卫 电子教案 C第2章PPT-2_第4页
第4页 / 共51页
C C++程序设计 第2版  教学课件 ppt 作者 陈卫卫 电子教案 C第2章PPT-2_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《C C++程序设计 第2版 教学课件 ppt 作者 陈卫卫 电子教案 C第2章PPT-2》由会员分享,可在线阅读,更多相关《C C++程序设计 第2版 教学课件 ppt 作者 陈卫卫 电子教案 C第2章PPT-2(51页珍藏版)》请在金锄头文库上搜索。

1、第2章 分支和循环,主要内容 2.1 分支结构 2.2 循环结构 2.3 循环程序设计示例,2.2 循环结构,三种循环语句 while(最简单,好用) for语句(最灵活多变,功能最强大) do-while语句(不常用),2.2.1 while语句,一般格式 while (E) S; E:判别表达式 S:“一条”语句(循环体) 通常是复合语句,执行步骤: 计算判别表达式E的值 若为0,则退出while语句(结束循环) 若不为0,则执行循环体一次 再次计算判别表达式E的值(重复),例2-8 编程求1到100之间所有整数倒数的和,算法设计思路和描述 采用累加法 使用变量n做计数器,变量sum做“累

2、加器” 第1步,定初值n=1,sum=0。 第2步,如果n=100,继续下一步;否则转第4步 第2-1步,作一次累加:sum=sum+1/n 第2-2步,计数器增1:n=n+1 第3步,返回第2步(循环处理) 第4步,输出sum的值,结束,例2-8 编程求1到100之间所有整数倒数的和,#include void main( ) double n=1, sum=0; /sum=0,准备循环累加 while(n=100) sum=sum+1/n; /累加 n=n+1; /计数器增1 printf(“1/1+1/2+1/3+1/100=%-12.6fn“,sum); ,累加模式先清0,再循环累加,

3、例2-8 编程求1到100之间所有整数倒数的和,#include void main( ) double n=1, sum=0; /sum=0,准备循环累加 while(n=100) sum=sum+1/n; /累加 n=n+1; /计数器增1 printf(“1/1+1/2+1/3+1/100=%-12.6fn“,sum); ,例2-8 编程求1到100之间所有整数倒数的和,#include void main( ) int n=1; double sum=0; /sum=0,准备循环累加 while(n=100) sum=sum+1.0/n; /累加 n=n+1; /计数器增1 print

4、f(“1/1+1/2+1/3+1/100=%-12.6fn“,sum); ,例2-9 输入一批学生某门功课的考试成绩(0100分) 当输入不在0100范围内,则表示输入结束 统计总人数、 不及格的人数、平均成绩,算法的自然语言描述 使用总人数计数器n、不及格人数计数器m 分数总和累加器sum 第1步,定初值n=0,m=0,sum=0 第2步,读入第一个分数x 第3步,当0x100时执行第3-13-4步的循环体 (否则转第4步) 第3-1步,总分累加,sum+=x 第3-2步,总人数累加,n+ 第3-3步,若x60,则不及格人数累加,m+ 第3-4步,读后续分数 第4步,输出计算结果,结束,例2

5、-9 输入一批学生某门功课的考试成绩(0100分) 当输入不在0100范围内,则表示输入结束 统计总人数、 不及格的人数、平均成绩,#include void main( ) float sum=0; /总分累加器清零 int x, n=0, m=0; /计数器清零 printf(“请输入学生成绩,以负数或大于100结束!n“); scanf(“%d“, /读第二、第三、个分数 ,例2-9 输入一批学生某门功课的考试成绩(0100分) 当输入不在0100范围内,则表示输入结束 统计总人数、 不及格的人数、平均成绩,/以下是输出数据程序段 if(!n)printf(“输入数据有误!n“); el

6、se printf(“总人数为:%d, 平均成绩为:%-6.2fn“,n,sum/n); if(!m)printf(“没有不及格的。n“); else printf(“ 共有%d人不及格。n“,m); ,使用while要注意几点:,1)E中涉及到的变量在进入循环前必先赋值(因为,先计算E,再判断),2)体内必须有修改E值的语句,且最终要使E的值为0;否则死循环,3)若进入循环前E的值为0,则循环体一次也不执行 while语句的循环体执行次数:0到多次,2.2.2 for语句,一般格式: for(E1;E2;E3)S; E1,E2,E3是用分号隔开的表达式 S是一条语句(循环体),通常是复合语句

7、,for(E1;E2;E3)S;,E1:初始表达式 主要作用:为E2设置循环初始条件 E2:判别表达式 E3:后置表达式 E2与E3配合控制循环的执行,执行流程:,1)计算初始表达式E1的值 2)计算判别表达式E2的值 3)若E2的值为非0,则执行一次循环体, 接着计算后置表达式E3的值 4)转步骤2 直到判别表达式E2的值为0,终止循环,for(E1;E2;E3)S; “翻译”成while语句,E1; while (E2) S; /for的循环体 E3; ,while(E)S; “翻译”成for语句,for ( ; E ; ) S;,E1和E3皆为空 但分号不能少,用for语句求1到100之

8、间所有整数倒数和(多种灵活用法),double n, sum=0; for(n=1;n=100;n+)sum+=1/n; /规矩用法,1)double n,sum; for(n=1,sum=0;n=100;)sum+=1/n+; /初始表达式设置多项初始值,2)double n=1, sum=0; for(;n=100;n+)sum+=1/n; /初始表达式为空(前面已经设置了初始条件),3)double n=1, sum=0; for(;n=100;)sum+=1/n+; /后置表达式为空(其功能放在循环体内),用for语句求1到100之间所有整数倒数和(多种灵活用法),4)double n

9、,sum; for(n=1,sum=0; ;) if(n100)break; else sum+=1/n+; /判别表达式为空(其功能放在循环体内),5)double n,sum; for(n=1,sum=0;n=100;sum+=1/n+); /循环体是空语句(其功能放在后置表达式中),6)double n=1, sum=0; for( ; ; ) if(n100)break; else sum+=1/n+; /三个表达式都空(控制功能分别放在for之前和循环体中),for语句更为特殊的用法,for( ; getchar( )!=n;); /E1,E3和循环体都为空 功能:反复读字符,直到读

10、入换行符为止(甩掉换行符),例2-10 用for循环计算下面公式s的值,算法设计思想 在循环累加时,根据n的奇偶性,确定 加“1/n”还是减“1/n”,#include void main( ) int n=1,m; double s=0; printf(“请输入m的值 m=“); scanf(“%d“, ,2.2.3 do-while语句,一般格式: do S; while(E);,E:判别表达式 S:循环体(一句),执行流程:先执行一次循环体,再计算E的值 若E的值为非0,则再执行一次循环体 如此往复,直到表达式E的值为0,结束循环,用do-while语句求1到100之间所有整数倒数和,d

11、ouble n=1, sum=0; do /循环体是复合语句 sum+=1/n; n+; while(n=100);,double n=1, sum=0; do /循环体是简单语句 sum+=1.0/n+; while(n=100);,while与do-while的主要差别:,1)先判断,后执行;与先执行,后判断 2)要不要先定判别表达式E的初值 3)执行次数(0到多次与1到多次) 共同点:体内必修改E的值 并且最终使E的值变为0,凡do-while能实现的功能,while也一定能够实现; 反之却未必 do-while主要用于初始条件不好确定,并保证循环体至少执行一次的场合,例2-11 输入一

12、串字符(以“&”结束),统计其中 有多少个字母,多少个数字,#include #include /isdigit和isalpha所在头文件 void main( ) int letters=0, digits=0; /用于记录字母个数和数字个数 char ch; do ch=getchar( ); /读字符 if(isdigit(ch)digits+; /是数字 else if(isalpha(ch)letters +; /是字母 while(ch!= ,例2-11 输入一串字符(以“&”结束),统计其中 有多少个字母,多少个数字,do ch=getchar( ); /读字符 if(isdig

13、it(ch)digits+; /是数字 else if(isalpha(ch)letters +; /是字母 while(ch!= /判断是否是结束符,2.2.4 多重循环,例2-12 生成乘法表,算法设计思路 使i和j各自从1变到9 i=1时,j从1变到9,输出第一行的9个等式 i=2时,j从1变到9,输出第二行的9个等式 i=9时,j从1变到9,输出第九行的9个等式,#include void main( ) int i,j; for( i=1;i=9;+i) for( j=1;j=9;+j) printf(“%2d*%d=%2d“ ,i,j,i*j); printf(“n“); ,请考虑

14、如何生成这样两个乘法表,2.2.5 break语句和continue语句,1break语句 最简单的控制语句 用于从switch语句或循环体跳出(提前终止) 增强循环的控制能力,使程序流程灵活多变,break语句用法示例,例如,测试变量n是不是素数的程序段 for(i=2,p=1;i*i=n;i+) if(n%i=0)p=0; break; if(p)printf(“%d 是素数。n“,n); else printf(“%d 不是素数。n“,n);,break语句用法示例,再如,反复读字符直到读入换行符的程序段: for( ; ; ) /无控制循环 ch=getchar( ); /循环读字符

15、if (ch=n)break; /若读到换行符,跳出循环 else putchar(ch); /不是换行符,则输出它 ,break语句跳出循环的图示,不能指望用一条break一下子跳出多重循环,2continue语句,只能用在循环体中 结束循环体的本次执行,提前进入下一轮循环,循环体的尾部,并不终止循环语句,例2-13 连续为整数n输入不同的数值,直到n是素数,若输入的n不大于1,则给出输入错误信息,并要求重新输入数据,采用双重循环结构,外循环负责控制输入n的不同数值 并根据n是否大于1作出相应的处理 内循环负责检测n是不是素数 第1步,读入n 第2步,如果n=1,报错,并跳到第6步; 否则执行下一步 第3步,用循环结构测试n是不是素数 第4步,若测试结果n是素数,则输出n是素数的信息, 算法结束;否则执行下一步 第5步,输出n不是素数的信息 第6步,转第1步,例2-13 连续输入整数n,直到n是素数,若输入的n不大于1,则给出输入错误信息,并要求重新输入数据,#include void main( ) int i,n,p; while(1) /外循环,终止条件设在循环内 printf(“请输入整数n的值,n=“); scanf(“%d“, /作n不是素数标记,终止内循环,例2-13 连续输入整数n,直到n是素数,若输入

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

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

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