C语言程序设计
第5章 循环结构程序设计
第5章 循环结构程序设计主 要 内 容 引例 while语句 do-while语句 for语句 循环的嵌套
C语言程序设计
第5章 循环结构程序设计
引例 编程计算 1+2+...+100根据已有的知识,可以用“1+2+……+100”来求解,但显然很繁琐。 现在换个思路来考虑: 首先设置一个累计器sum,其初值为0,利用sum += n来计算(n依 次取1、2、……、100),只要解决以下3个问题即可: (1)将n的初值置为1; (2)每执行1次“sum += n”后,n增1; (3)当n增到101时,停止计算。此时,sum的值就是1~100的累 计和。 根据已有的知识,单独实现每一步都不难。但是,由于需要经常使用 这种重复计算结构(称为循环结构),C语言提供了3条循环语句来 实现,以简化、并规范循环结构程序设计。在C语言中,可用以下语句实现循环: 用for语句; 用do-while语句; 用while语句。
C语言程序设计
第5章 循环结构程序设计
while语句 一般形式: while(expression) 循环体语句; 执行流程:while 假(0) expr 真(非0) 循环体
C语言程序设计
第5章 循环结构程序设计
特点:先判断表达式,后执行循环体 说明: 循环体有可能一次也不执行 循环体可为任意类型语句,若包含多条语句, 应使用花括弧括起来,以复合语句形式出现。 下列情况,退出while循环 条件表达式不成立(为零) 循环体内遇break,return,goto 无限循环: while(1) 循环体;
C语言程序设计
第5章 循环结构程序设计
例5.1 用while循环求
in 1
100
循环初值
循环变量增值
#include <stdio.h> main() { int i,sum=0; i=1; while(i<=100) { sum=sum+i; i++; } printf("%d",sum); }
循环条件sum=0+1=1 sum=1+2=3 sum=3+3=6 sum=6+4=10 …… sum=4950+100=5050 循环终值
循环体
C语言程序设计
第5章 循环结构程序设计
例5.2 显示1~10的平方
#include <stdio.h> main() { int i=1; while(i<=10) { printf("%d*%d=%d\n",i,i,i*i); i++; } }
运行结果: 1*1=1 2*2=4 3*3=9 4*4=16 5*5=25 6*6=36 7*7=49 8*8=64 9*9=81 10*10=100
C语言程序设计
第5章 循环结构程序设计
do~while语句 一般形式: do 循环体语句; while(expression); 执行流程:do
循环体 真(非0)while expr 假(0)
C语言程序设计
第5章 循环结构程序设计
特点:先执行循环体,后判断表达式 说明: 至少执行一次循环体 do~while可转化成while结构循环体
While循环假(0) expr 真(非0) 循环体
C语言程序设计
第5章 循环结构程序设计
例5.3 用do~while循环求
in 1
100
#include <stdio.h> main() { int i,sum=0; i=1; do { sum= sum+i; i++; }while(i<=100); printf("%d",sum); }
C语言程序设计
第5章 循环结构程序设计
例 while和do~while比
较
#include <stdio.h> main() { int i,sum=0; scanf("%d",&i); while(i<=100) { sum+=i; i++; } printf("%d",sum); }运行情况: 1 sum=5050 101 sum=0
运行情况:
#include <stdio.h> main() { int i,sum=0; scanf("%d",&i); do { sum+=i; i++; }while(i<=100); printf("%d",sum); }运行情况: 运行情况:
1sum=5050
101sum=101
C语言程序设计
第5章 循环结构程序设计
例题:求n的阶乘n!(n!=1*2* *n)。#include<stdio.h> main() { int i=1, n; long fact=1; /*将累乘器fact初始化为1*/ printf(“Input n: ”); scanf(“%d”, &n); do { fact *= i; /*实现累乘* i++; }while(i<=n); printf("%d ! = %ld\n", n, fact); }
程序运行情况如下: Input n: 5↙ 5 ! = 120
C语言程序设计
第5章 循环结构程序设计
for语句 格式: for(表达式1;表达式2;表达式3) 语句 执行过程:首先计算表达式1的值,给循环变 量赋初值,再测试表达式2的值,若其值非0, 则执行循环体语句,并计算表达式3的值,自 动修改循环变量的值,再测试表达式2的值, 直到表达式2的值为0(假)则退出循环。三个表 达式都可以省略。
C语言程序设计
第5章 循环结构程序设计
for语句 一般形式:
for([expr1] ;[ expr2] ;[ expr3]) 循环体语句;forexpr1 假(0) expr2 真(非0) 循环体 expr3
执行流程:
C语言程序设计
第5章 循环结构程序设计
求for循环求累计和
in 1
100
#include<stdio.h> main() { int i,sum=0; /*将累加器sum初始化为0*/ for(i=1; i<=100; i++) sum += i; /*实现累加*/ printf("sum=%d\n",sum); }程序运行情况如下: sum=5050
C语言程序设计
第5章 循环结构程序设计
求n的阶乘n!(n!=1*2*……*n)。#include<stdio.h> main() { int i, n; long fact=1; /*将累乘器fact初始化为1*/ printf(“Input n: ”); scanf(“%d”, &n);
for(i=1; i<=n; i++) fact *= i; /*实现累乘*/ printf("%d ! = %ld\n", n, fact);}程序运行情况如下: Input n: 5↙ 5 ! = 120
C语言程序设计
第5章 循环结构程序设计
for语句一般应用形式: for(循环变量赋初值;循环条件;循环变量增值) { 循环体语句; } 说明: 例2.12 用for循环求 for语句中expr1, expr2 ,expr3 类型任意,都可省略,但分 号;不可省 无限循环: for(;;) for语句可以转换成while结构 expr1; while(expr2) { 循环体语句; expr3; }
C语言程序设计
第5章 循环结构程序设计
例5.4 #include<stdio.h> main( ) { int i; for(i=0;i<10;i++) putchar(‘a’+i); }
例:#include<stdio.h> main( ) { int i=0; for(;i<10;i++) putchar(‘a’+i); }
例:#include<stdio.h> 例:#include<stdio.h> 运行结果:abcdefghij main( main( ) ) { {intint i=0; i=0; for(;i<10;) for(;i<10;putchar(‘a’+i),i++) ; putchar(‘a’+(i++)); } }
C语言程序设计
第5章 循环结构程序设计
main() { int i,j,k; for(i=0,j=100;i<=j;i++,j--) { k=i+j; printf("%d+%d=%d\n",i,j,k); } } #inc
lude<stdio.h> #include <stdio.h> main() main() { char c; for(;(c=getchar())!='\n';) { int i,c; for(i=0;(c=getchar())!='\n';i+=3) printf("%c ",c); printf("%c ",i+c); } }
C语言程序设计
第5章 循环结构程序设计
例:编写一个程序,输入10个整数,求出其中的最大数 #include<stdio.h> main() { int i, max ,n; printf(“输入10个整数”); scanf(“%d”,&n); max=n; for(i=2;i<=10;i++) { scanf (“%d”,&n);
if(n>max)max=n; } printf(“最大数:%d\n”,max); }
C语言程序设计
第5章 循环结构程序设计
【思考题】 鬼谷算题:今有一物不知其数,三三数之剩二,五五数之剩 三,七七数之剩二.部物几何?
用C语编程实现为: #include <stdio.h> main() {int x; for(x=0;x<100;x++) if (x%3==2&&x%5==3&&x%7==2) printf("this is number is %d\n",x); }解题歌诀: " 三人同行七十稀,五樹梅花廿一枝, 七子團圓月正半,除百零五便得知。
C语言程序设计
第5章 循环结构程序设计
几种循环的比较(1) 循环的控制
循环条件初始化
也可在 for前while (表达式) do 语句 for (表达式1;表达式2;表达式3)
语句
while (表达式)循环控制条件
语句
也可在循环 体内
修改循环条件