第5章 循环结构程序设计1
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
main() { int n,s; for(n=1;n<=10;n+=2) printf("n=%d\n",n); printf("n=%d\n",n); }
循环体
共 34页 第 21 页
输出结果: n=1 n=3 n=5 n=7 n=9
§ for循环
例 5-8: 输入一批非零整数,以0为结束符,输出其中最大值 #include "stdio.h" main() { int i,max,n; printf("input ten numbers :"); scanf("%d",&n); max=n; for (i=2;i<=10;i++) { scanf("%d",&n); if(n>max) max=n; } printf("max=%d\n",max); getch(); }
共 34页
第 7 页
§ while循环
例: 从键盘上输入一个整数n,求n!,利用while语句编程实现。 main() { int n,i,s; printf("\n Enter n:"); scanf("%d",&n); i=1; s=1; while (i<=n) { s=s*i; i++; } printf("\n n!=%d",s); }
什么是循环? 为什么要使用循环?
n 1 问题2:求学生平均成绩。(分数相加后除以课数)
问题3:找出整数[1~1000]中能同时被3和7整除的数。 循环是有规律的重复操作。将复杂问题分解为简单的操作过 程,程序只对简单过程描述,这些过程的多次重复就可完成对问 题的求解。 if--goto 循环 while循环 for循环 do while循环 先判断后循环 (当型循环) 先循环后判断 (直到型循环)
Y
第 14 页
§ do-while循环
3、 while与do while的比较 输入:12 输出: main() s=12 输入:12 输出: s=0
main() {int s=0,x; scanf("%d",&x); do 循环至少 {s=s+x; 执行一次 x++;} while(x<=10); printf("s=%d\n",s); }
共 34页
第 6 页
§ while循环
例5-2: 编写一个程序,从键盘输入的字符中统计数字字符的个数, 按回车键结束输入。
#include "stdio.h" main() { int n=0; char c; c=getchar(); while(c!='\n') { if(c>='0'&& c<='9') n++; c=getchar(); } printf("n=%d\n",n); getchar(); }
{int s=0,x; scanf("%d",&x); while (x<=10) {s=s+x; 循环没有 被执行 x++;} printf("s=%d\n",s); }
共 34页
第 15 页
§ for循环
for语句
1. 格式 :
初值表达式1 条件表达式2 增量表达式3
for (表达式1;表达式2;表达式3) { 循环体语句 }
共 34页
第 9 页
§ while循环
number初值为 0, 条件为number<=1
main( ) 1.number为0,满足条件 { int number=0; number为0,然后自增为1 while(number<=1) 输出number 1 { number++; 2.number为1,满足条件 printf(“%d\n”,number); number为1,然后自增为2 } } 结果: 1 2
输出number 2 3.number为2,不满足条件
共 34页
第 10 页
§ while循环
main( ) { int number=0; 循环进行了多少次? while(number++<=1) 输出的值? printf(“*%d\n”,number); @ printf(“**%d\n”,number); } #
§ while循环
例5-1: 编写一个程序,用while语句实现1~100的求和。 100
s n
n 1
x
main ( ) { int s,n ; s=0 ; n=1; while(n<=100) { s=s+n ; n++; } printf(“%d\n”, s); }
增量在for 之外完成 n的初值在 for(初值;判断;增量) 语句; for之前完成 for(初值;判断;增量) for语句的形式: {复合语句;} for(初值;判断;增量); 求累加和
共 34页 第 19 页
§ for循环 main() { int n=1,s=0,x; scanf("%d",&x); while(n<=x) loop:if(n<=x) for(;n<=x;) {s=s+n; 循环结束 n++; goto loop;} } printf("s=%d\n",s); } for(;n<=x;) 10 While(n<=x) if-goto
共 34页 第 13 页
§do-while循环
main() { int n=1,s=0,x; scanf("%d",&x); do {s=s+n; n++;} while (n<=x); printf("s=%d\n",s); }
开始 初始化n,s 输入x
s=s+n
结束
n++
输出s
N
n<=x
共 34页
例5-12 P73
共 34页 第 25 页
§ 几种转移控制语句
例1:找出100~300间第一个能被17整除的数。
main() { int i; for (i=100;i<=300;i++) { if(i%17==0) { printf ("%d\n",i); break; } } }
开始
s=55 初始化n,s,x 100 输入x s=5050 255 s=32640 N n<=x Y s=s+n 输出s
结束
n++
共 34页 第 20 页
§ for循环
特点:先判断后循环
以下程序的输出结果
输出结果: main() n=11 { int n,s; ; for(n=1;n<=10;n+=2); printf("n=%d\n",n); } 无循环体
共 34页 第 24 页
§3.3 几种转移控制语句
一、break语句
break语句格式 break;
break语句的功能
1 . 在 switch 语 句 中 结 束 case 子 句 , 使 控 制 转 到 switch语句之外。 2.在循环结构中,break语句使流程转向该循环体的 外层继续运行。强制结束一层循环,向外退出一层 循环
共 34页
第 22 页
§ 几种循环的比较
1 、C中的三种循环语句while( ) ,do-while( ), for( ) 都可由表达式控制重复执行一个循环体,都可以用来 解决同一个问题,一般情况下,可以相互代替。
2 、三种循环各有特点:
1) 当循环次数及条件在程序运行中才能确定时,选用 while( )或do-while( )语句 两者区别:while( ) 顶部测试,可能一次也不执行 do-while( )底部测试,至少执行一次
不可用
共 34页 第 18 页
§ 用for语句设计循环结构(续)
2.表达式1和表达式3可是与初值、增量无关的逗号表达式
for (s=0,n=1;n<=100;s=s+n, printf(“ %d” ,s)) n++; for (s=0;n<100;s=s+n,n++) {printf(“ %d” ,s);}
计算表达式2并判断,0 时跳出循环,非0 时执行循环; 当表达式2非0,执行循环体语句,计算表达式3增量; 自动转到第二步(计算表达式2)…...继续执行。
2. 功能 : 计算表达式1初值;
变量的初值 循环条件
main( ) { int n, s; for(n=1 ; n<=100 ;n++) s=s+n; printf(“%d\n”,s); }
共 34页 第 17 页
§ for循环
1.表达式1,表达式2和表达式3均可缺省 3.说明 分号始终不能缺省! 缺省e1, n 应在循环之前赋初值 缺省e2, 造成死循环,不可使用! 缺省e3, n增量应在循环体内进行 缺省e1,e2,e3 死循环 缺省e1,e3
for (;n<100;n++) for (n=0;;n++) for (n=0;n<100;) for (; ;) for (;n<100;)
共 34页 第 8 页
§ while循环
3.说明:
(1)While 循环的特点是:先判断,后执行。或表达式的 值一开始就为假,则循环体一次也不执行。 (2)当循环体中语句多于一条时,用{ },否则,循环只对 一个;起作用. (3)循环体内部必须有实现对循环变量增值的语句,否则 ,易出现“死循环”. (4) 条件表达式要有括号,后面不加分号. (5) 注意条件的边界值.
条件表达 式执行次 数 1 2 3 条件表达 式中变量 的值 0 1 2 执行哪个 printf语 句 @ @ #
输出的 number 的值 1 2 3
结果 : *1 *2 **3
共 34页
第 11 页
§ do-while循环
do -while循环
1. 格式:do
循环体语句 while(表达式); 2. 功能:先执行循环体,再判断表达式的值,若为非零 ,重复执行循环体语句,再判断…….直到表达式的 值为零,退出循环体 即:执行--测试---执行--测试-循环体
共 34页 第 3 页
§ 循环结构
循 环 的 基 本 要 素 循环变量的初始值 循环进入条件 循环体 循环变量的增值
入口 出口 先判断后循环
循环变量的初值 满足条件则执行循环体 重复执行的语句 循环变量的改变,进一步测 试条件
循环体
二、循环结构
条件 Y 循环体
N
Y
条件
N 先循环后判断
变量的增量 循环体
共 34页
第 16 页
§ for 循环
例1: 利用for语句编程实现n!。 main() { int n,i,s; printf("\n Enter n:"); scanf("%d",&n); for (i=1,s=1;i<=n;i++) s=s*i; printf("\n n!=%d",s); }
共 34页 第 4 页
§ while循环 while百度文库环
1. 格式:while(表达式) 循环体语句 2. 功能:先判断表达式的值,若为非零,重复执行循环 体语句,再判断…直到表达式的值为零,退出循环体 。 即:测试---执行--测试--执行--
while (条件) {语句组}
共 34页
第 5 页
2013-6-27
1
第一节 while语句
第二节 do-while语句
第三节 for语句
第四节 break语句和continue语句 第五节 循环结构的嵌套 第六节 goto语句 第七节 循环结构程序设计应用
共 34页 第 2 页
循环结构
一、循环问题 100 问题1: 求1+2+3+…+100的和。 y n
Y 条件
do 语句 while (条件);
共 34页 第 12 页
§ do-while循环
例5-4 利用do-while语句编程实现n!。 main() { int n,i; long s; printf("Enter n:"); scanf("%d",&n); i=1; s=1; do { s=s*i; i++; } while (i<=n); printf("n!=%ld",s); }
共 34页 第 23 页
§几种循环的比较(完)
(2) 如果初值,条件明显,循环次数已给出,选用 for( )语句,功能最强。
main() (3) 出现“死循环”的几种情况 { int I=0,j=5; for( ; ; ) while(j<10) for( ….; 非零常数表达式;……) { j=I*2; while(非零常数表达式) printf(“%d”,j); do ..while(非零常数表达式) } 结果为: ?