第五章循环控制 5.循环型程序设计 5.2辅助控制语句 5.3程序举例
第五章 循环控制 5.1 循环型程序设计 5.2 辅助控制语句 5.3 程序举例
5.1循环型程序设计 ★概述 在许多问题中我们都需要使用循环结构使得某一段 程序能循环执行。例如要想计算sin0°~sin90°的函数 值,间隔为1°:又如在对若干个数进行排序时,如 果只用选择结构,势必会使问题非常复杂,程序非常 繁琐。但如果使用了循环结构,你会发现,即使对大 量的数据进行排序,程序的长度也基本保持不变。 C语言可实现循环的语旬 用goto和f构成循环(不合结构化程序设计原则,故不常用) while语句 do~ while语旬 ●for语旬
概述 在许多问题中,我们都需要使用循环结构,使得某一段 程序能循环执行。例如要想计算sin0°~sin90°的函数 值,间隔为1°;又如在对若干个数进行排序时,如 果只用选择结构,势必会使问题非常复杂,程序非常 繁琐。但如果使用了循环结构,你会发现,即使对大 量的数据进行排序,程序的长度也基本保持不变。 C语言可实现循环的语句: ⚫ 用goto 和 if 构成循环(不符合结构化程序设计原则,故不常用) ⚫ while 语句 ⚫ do ~ while 语句 ⚫ for 语句 5.1 循环型程序设计
★whil语旬 令一般形式 whl(表达式) 循环体语句; 令执行流程: while 先计算表达式之值,若为 假() 非0(即条件成立),执行后 面的语旬(称之为循环体)之 真(#0) 后,再计算表达式之值进行判 循环体 断,如此多次重复执行循环体; 若表达式之值为0(即条件不 成立),跳出循环体语旬,继 续向下执行
while语句 ❖一般形式: while(表达式) 循环体语句; ❖执行流程: expr 循环体 假(0) 真(非0) while 先计算表达式之值,若为 非0(即条件成立),执行后 面的语句(称之为循环体)之 后,再计算表达式之值进行判 断,如此多次重复执行循环体; 若表达式之值为0(即条件不 成立),跳出循环体语句,继 续向下执行
心特点:先判断表达式,后执行循环体 令说明: ●循环体有可能一次也不执行 ●循环体可为任意类型语句 ●下列情况。退出 while循环 ◆条件表达式不成立(为零) ◆循环体内遇 break, return,goto ●无限循环: while(1) 循环体;
❖特点:先判断表达式,后执行循环体 ❖说明: ⚫循环体有可能一次也不执行 ⚫循环体可为任意类型语句 ⚫下列情况,退出while循环 ◆条件表达式不成立(为零) ◆循环体内遇break,return,goto ⚫无限循环: while(1) 循环体;
例1求1-100之间所有整数的和 i=l: sum=0 i<=100 Y(非0) sum+=i;/累加 i+=1 /计数器加1 printf(i=%od, sum=%odIn",, sum);
例1 求1—100之间所有整数的和 i<=100 sum+=i; /* 累加 */ i+=1; /* 计数器加1 */ Y(非0) N(0) i=1; sum=0; printf("i=%d,sum=%d\n",i,sum);
求1—100之间整数和的程序 这是一个 main() while语句 i int Fl, sum=0 whl(i<=100 i sum+=l, printf("i%od, sum=%d n", 1, sum) 运行程序 想一想,如果在whie语句之前对变量sum 初值为1,是否可以?程序的哪些地方应作 相应的改动?
求1—100之间整数和的程序 main( ) { int i=1,sum=0; while( i<=100) { sum+=i; i+=1; } printf("i=%d,sum=%d\n",i,sum); } 这是一个 while语句 想一想,语句sum+=i;和语句i+=1;能否改变 位置?为什么? 想一想,如果在while语句之前对变量sum赋 初值为1,是否可以?程序的哪些地方应作 相应的改动? 运行程序
求1-100之间数和的程序运行过程 程序执行的过程和结果如下: main( int ilium=0 while( k<=100 这是一个 (sum whilei语句 printf("F%d, sum=%" i, sum) i=101.sum=5050 注意:循环结束后,变量i的值一定大于100
求1—100之间整数和的程序运行过程 main( ) { int i=1,sum=0; while( i<=100 ) { sum+=i; i+=1; } printf("i=%d,sum=%d\n",i,sum); } 这是一个 while语句 程序执行的过程和结果如下: i=101,sum=5050 注意:循环结束后,变量i 的值一定大于100
例显示1~10的平方 C Ch5 21.c /*ch521c*/ 运行结果: include 1*1=1 2*2 Main( 3*3=9 k int i-1 4*4=16 whil(<=10) 5*5=25 printi("90*%d=%dn",ii);6636 1+ 7*7=49 8*8=64 9*9=81 10*10=100
例 显示1~10的平方 /*ch5_21.c*/ #include 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
再看下面的一段程序 main( i int i-=1 while(1 printf("%d 1) 想一想,这段程序运行的结果是什么?是否构成 死循环?为什么会构成死循环?
再看下面的一段程序 main() { int i=1; while(i>0) printf("%d ",i); } 想一想,这段程序运行的结果是什么?是否构成 死循环?为什么会构成死循环?
★do~whil语句 ☆一般形式 do 循环体语旬; whl(表达式); ◇执行流程: 先执行语旬(称之为循环体), 然后计算表达式之值,若为非0( 即条件成立),再执行语句(谐环 体)后计算表达式之值,如此多次 循环体 重复执行循环体并判断条件;若表 while 达式之值为0(即条件不成立) 结束循环,继续向下执行。 真(#0)cp 假()
do~while语句 ❖一般形式: do 循环体语句; while(表达式); ❖执行流程: do 循环体 expr 假(0) 真(非0) while 先执行语句(称之为循环体), 然后计算表达式之值,若为非0( 即条件成立),再执行语句(循环 体)后计算表达式之值,如此多次 重复执行循环体并判断条件;若表 达式之值为0(即条件不成立), 结束循环,继续向下执行