任务三++循环型流程设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include <stdio.h> void main() { char c; int alpha,digit,other; alpha=digit=other=0; printf(“请输入一行字符:”) ; while((c=getchar())!=„\n‟) { if(c>=„0‟&&c<=„9‟) digit++; else
Your site here
LOGO
一、实践知识
例3-10【P51】:猴子吃桃问题。
分析:采用逆向思维的方法。由第10天递推到第9天,一次向前推,直到 第1天。 #include <stdio.h> void main() { int day,x; day=9; x=1; while(day>0) { x=x*2+1; day--; } printf(“猴子一共摘了%d个桃子。\n”,x); }
Your site here
LOGO
一、实践知识
例3-4【P46】 :计算:1+1/2+1/4+…+1/50
#include <stdio.h> void main() { float sum=1.0; int i=2; do { sum=sum+1.0/i; i=i+2; } while(i<=50); printf(“%f\n”,sum); }
LOGO
一、实践知识
例3-6【P47】:聪明的 达依尔
分析: 1、变量sum来存储麦子数量。 sum=1+2+22+23+24+ …+263 2、设置变量t表示每个格子中小 麦的数量。则有:t=t*2; 3、sum的初值为0,t的初值为 1,循环加64次,设置循环计 数器变量i.
#include <stdio.h> void main() { double sum=0,t=1; int i; for(i=1;i<=64;i++) { sum=sum+t; t=t*2; } printf(“%.1lf\n”,sum); }
LOGO
任务三 循环型流程设计
教学目的:
1、掌握循环型流程设计方法 2、掌握while、do-while和for的应用 3、掌握break语句和continue语句的使用方法
工作任务:
1、 while、do-while和for程序设计 2、循环的嵌套应用 3、循环的典型应用
Your site here
Your site here
#include <stdio.h> void main() { int i,n,sum=1; i=1; printf(“请输入n:”) ; scanf(“%d”,&n); do { sum=sum*i; i++; } while(i<=n); printf(“%d\n”,sum); }
#include <stdio.h> void main() { int i; for(i=1;i<50;i++) { if(i%5!=0) continue; printf("%4d",i) ; } }
Your site here
LOGO
作业
P59 1、7
Your site here
LOGO
for语句一般应用形式:
for(循环变量赋初值;循环条件;循环变量增值) { 循环体语句; }
说明:
for语句中expr1, expr2 ,expr3 类 型任意,都可省略,但分号;不可 省 无限循环: for(;;) 循环体语句有多条时要用“{}”括 起来 for语句可以转换成while结构
LOGO
二、理论知识【P52】
一般形式 : 执行流程 :
while(表达式) 循环体语句;
while 假(0) expr 真(非0) 循环体
Your site here
LOGO
二、理论知识
特点:先判断表达式,后执行循环体 说明: 循环体有可能一次也不执行 循环体语句有多条时要用“{}”括起来 循环体可为任意类型语句 下列情况,退出while循环 条件表达式不成立(为零) 循环体内遇break,return,goto 无限循环: while(1) 循环体;
Your site here
LOGO
二、理论知识
4、break语句和continue语句
(1)break语句 一般形式: break; 功能:在循环语句和switch语句中,终止并 跳出循环体或开关体 说明: break只能终止并跳出最近一层的结构 break只能用于循环语句和switch语句之 中
Your site here
LOGO
一、实践知识例3-9【源自51】:百鸡百钱问题。分析:用3个变量gj、mj、xj分别表示公鸡数、母鸡数和小鸡数。 则可得出一下方程: gj+ mj+ xj=100 gj*5+mj*3+xj/3=100
#include <stdio.h> void main() { int gj,mj,xj; printf(“百鸡问题\n”); for(gj=1;gj<20;gj++) for(mj=1;mj<25;mj++) for(xj=3;xj<100;xj=xj+3) if(gj+ mj+ xj==100&&gj*5+mj*3+xj/3==100) printf(“公鸡:%d 母鸡:%d 小鸡:%d\n”,gj,mj,xj) ; }
LOGO
一、实践知识
3、 for形式的循环程序设计
例3-5【47】:编程计算: n!
#include <stdio.h> void main() { int i,n,sum=1; printf(“请输入n:”) ; scanf(“%d”,&n); for(i=1;i<=n;i++) sum=sum*i; printf(“%d\n”,sum); }
二、理论知识
1、while语句 2、do-while语句 3、for语句 4、break和continue语句
Your site here
LOGO
一、实践知识
1、 while形式的循环程序设计
例3-1【P42】:编程计算:1+2+3+…+100. 程序分析:初始:p=0,i=1; 循环:p=p+i,i++; 循环条件:i<=100; 流程图:
Your site here
expr1; while(expr2) { 循环体语句; expr3; }
LOGO
一、实践知识
4、 循环的嵌套应用
例3-7【P48】:打印星型矩 阵。
分析: 1、6行,每行5个“*”。所以这里 需要二重循环。 2、内部循环完成一行打印5个“*”, 所以循环5次。 3、外部循环将内部循环执行6次,即 循环6次。 4、采用for语句完成 注意:每行“*”输出完后要换行。 #include <stdio.h> void main() { int i,j,sum=1; i=1; for(i=1;1<=6;i++) { for(j=1;j<=5;j++) putchar(„*‟) ; putchar(„\n‟); } }
Your site here
LOGO
二、理论知识
(1)continue语句
一般形式: continue; 功能:结束本次循环,跳过循环体中尚未执 行的语句,进行下一次是否执行循环体的判 断 说明: break只能用于循环语句之中
Your site here
LOGO
二、理论知识
例3-11[P55]输出50以内能被7整除的数。
Your site here
思考:
1、如果程序中的语句 “sum=sum+1.0/i;”改为 “sum=sum+1/i;”,结果 是否有变化?为什么? 2、如何用while语句实现
LOGO
二、理论知识【P53】
一般形式:
do
循环体语句; while(表达式); 执行流程 :
do
循环体 真(非0)
Your site here
if(c>=„a‟&&c<=„z‟|| c>=„A‟&&c<=„Z‟)
alpha++; else other++; } printf(“字母个数:%d\n”); printf(“数字个数:%d\n”); printf(“其他字符个数:%d\n”); }
(c=getchar())!=„\n‟的功能是从键盘读 入一个字符,并判断输入的字符是否 为回车符‘\n‟
while
假(0)
i<=100
真(非0) p=p+i; i++;
Your site here
LOGO
一、实践知识
#include <stdio.h> main() { int i,sum=0; i=1; while(i<=100) { sum=sum+i; i++; } printf("%d",sum); }
Your site here
LOGO
二、理论知识
例3-11[P55]打印九九乘法表。
#include <stdio.h> void main() { int i,j,result; putchar(„\n‟); //可以没有 for(i=1;i<10;i++) { for(j=1;j<=10;j++) { if(j>i) break; result=i*j; printf("%d*%d=%-3d",i,j,result) ; } putchar('\n'); } }
Your site here
LOGO
一、实践知识
例3-8【P50】:打印九九乘法表。
#include <stdio.h> void main() { int i,j,result; putchar(„\n‟); //可以没有 for(i=1;i<10;i++) { for(j=1;j<=i;j++) { result=i*j; printf("%d*%d=%-3d",i,j,result) ; } putchar('\n'); } 思考:%-3d的作用是什么? }
Your site here
LOGO
一、实践知识
2、 do-while形式的循环程序设计 例3-3【P45】 :编程计算:n!
#include <stdio.h> void main() { int i,n,sum=1; i=1; printf(“请输入n:”) ; scanf(“%d”,&n); do { sum=sum*i; i++; } while(i<=n); printf(“%d\n”,sum); }
循环条件
循环初值
循环终值
循环变量增值
循环体
LOGO
Your site here
一、实践知识
例3-2【P44】:输入一行字符,按字母、数字和其他分成三类,分别 统计各类字符的数目(换行符“\n”不在统计范围内)。 程序分析:字母的条件:c>=„a‟&&c<=„z‟|| c>=„A‟&&c<=„Z‟ 数字的条件: c>=„0‟&&c<=„9‟
LOGO
重点和难点
重点:
(1) while、do-while和for程序设计 。 (2)循环结构程序的设计;
难点:
if语句的嵌套和多分支程序设计 课时:7--9周 讲授方式:任务驱动法,提问法,实例解析法、实验验证法
Your site here
LOGO
教学内容:
一、实践知识
1、while形式的循环程序设计 2、do-while形式的循环程序设计 3、for形式的循环程序设计 4、循环的嵌套应用
Your site here
LOGO
二、理论知识【P53】
for语句
一般形式 : for([expr1] ;[ expr2] ;[ expr3])
循环体语句; for expr1
执行流程 :
假(0) expr2 真(非0) 循环体 expr3
Your site here
LOGO
二、理论知识
while expr 假(0)
Your site here
LOGO
二、理论知识
特点:先执行循环体,后判断表达式 说明: 至少执行一次循环体 循环体语句有多条时要用“{}”括起来 do~while可转化成while结构
循环体 While循环 假(0)
expr
真(非0)
循环体
Your site here