当前位置:
文档之家› C语言程序设计(5循环结构)
C语言程序设计(5循环结构)
C语言程序设计
第五章 循环结构
循环是指使用一定条件对同一个程序段重复执行若干次。 循环结构又称重复结构,可以完成重复性、规律性的操作。
for while
4种循环语句
goto
do-while
goto 语句
一般格式:
goto 语句标号
由if ……goto 构成循环 例4-1: main() {int x=0,y=0; star: if (x<=3) {y=x+1; x=x+1; goto star;}printf(“%d”,y);}分析输出结果。
#include <stdio.h> main() { int p2=1,p1; int n=9; while(n>0) { p1=2*(p2+1); p2=p1; n--; } printf(“the total is %d\n”,p1); }
求n!(n=1~8)
#include <stdio.h> main() { int n=0; long t=1; printf(“ n n! \n”); while(n<8) { n++; t*=n; printf("%d %ld \n",n,t); } }
#include<stdio.h> main() { int n=9; while(n>6) { n--; printf(“%d”,n); } }
main( ) { int n=9; while(n>6) n--; printf(“%d\n”,n); }
876
6
例4-3:用while循环求sum=1+2+3+……+100
例4-2: main() { int count=1; while(count<5) { printf(”good morning!\n”); count+ +; good morning! } good } morning!
good morning! goபைடு நூலகம்d morning!
运行结果: n n! 1 1 2 2 3 6 4 24 5 120 6 720 7 5040 8 40320
do-while语句
一般形式: do
<语句> while(<表达式>);
执行流程:
do
“ ; ”不能少
循环体 真(非0) while expr
假(0)
do~while语句特点和说 明
do <语句> while(<表达式>);
特点:先执行循环体,后判断表达式 说明: 至少执行一次循环体 do~while可转化成while结构
while循环
main() 循环体
{ int x=3; 假(0) expr do 真(非0) { 循环体 printf(“%d”,x=2); }while(x>=0);
for([表达1] ;[表达式2] ;[表达式3]) <语句>
}
例: for语句形式的多样 性
形式1: #include<stdio.h> main( ) { int i=0; for(i=0;i<10;i++) putchar(‘a’+i); } 形式2: #include<stdio.h> main( ) { int i=0; for(;i<10;i++) putchar(‘a’+i); }
while语句
一般形式: while(<表达式>)
<语句>
执行流程:
while 假(0)
循环体:被重 复执行的部分
表达式 循环体
真(非0)
while语句特点和说明
while(<表达式>) <语句>
特点:先判断表达式,后执行循环体 说明: 循环体有可能一次也不执行 循环体可为任意类型语句 下列情况,可退出while循环 条件表达式不成立(为零) 循环体内遇break,return,goto
如何求sum=1*2*3*……*100 ?
循环初值
循环变量增值
#include <stdio.h> 循环条件 main() { int sum=0; int i=1; while(i<=100) { sum+=i; i++; 循环终值 } printf(“sum=%d",sum); 循环体 }
【例5-13】猴子吃桃问题。
do-while与while的区别 main( ) { int i=1,s=0; while(i<1) { s=s+i; i=i+1; } printf("s=%d\n",s); } s=0 main() { int i=1,s=0; do { s=s+i; i=i+1; } while(i<1); printf("s=%d\n",s); }
s=1
for语句
一般形式:
执行流程:
for
for([表达1] ;[表达式2] ;[表达式3]) <语句>
一般应用形式: for(初始化表达式;条件表达式;修正表达式) <语句>
expr1
expr2 循环体 expr3 假(0)
真(非0)
for语句
说明: for语句中expr1, expr2 ,expr3 类型任意,都可省 略,但分号;不可省 for语句可以转换成while结构 表达式1; while(表达式2) { <语句> 表达式3;
迭代法
猴子第一天摘下若干桃子,当即吃掉一半,还不过瘾,又多吃了 一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以 后每天早上都吃掉前一天剩下的一半零一个。到第10天早上再想 吃时,就只剩一个桃子了。问第一天共摘了多少个桃子?
算法分析:
设第n天为xn个,第n+1天为xn+1 则:xn+1= xn/2-1 可得递推公式: xn=(xn+1+1)*2 1≤n≤9 x10=1 n=10 即: x10=1 x9=(x10+1)*2=4 x8=(x9+1)*2 =10 …… x1=(x2+1)*2=1534 倒推
x=x-2; printf(“%d”,x);
1-1
求1+2+3+……100
#include <stdio.h> main() { int sum=0,i; i=1; do{ sum=sum+i; i++; }while(i<=100); printf(”sum=%d\n”,sum); } #include <stdio.h> main() { int sum=0; int i=1; while(i<=100) { sum=sum+i; i++; } printf(“sum=%d",sum); }