《 C语言程序设计案例教程》
Huanghuai University Department of Information Engineering
主讲:傅 丰
黄淮学院信息工程学院
北京大学出版社
汪新民、刘若慧主编
第三章 C程序的流程设计
§1 算法
§2 C语句概述
§3 选择结构程序设计
§3.1 双分支结构(if-else)
§3.1~3.2多分支结构(else if、switch)
§4 循环结构程序设计
§4 循环结构程序
一、while和do-while 语句
while (条件) 循环体;
do
循环体;
while (条件);
1、若循环体为多条语句,应用{ }括起来构成复合语句。
2、循环体中应有使循环结束的语句,否则会出现死循环。
说 明
条件为真(非0即真)时,执行循环体;然后再判断条件,为真时再执行循环体,直到条件为假时结束循环语句,执行后续语句。
先执行循环体,再判断条件。为真则执行循环体,然后再判断条件,为真时再执行循环体,直到条件为假时结束循环,执行后续语句。
先判断后执行
先执行后判断
P98习题10:
main( )
{ int n=0;
while (n++<=1)
printf(“%d\t”,n);
printf(“%d\n”,n);
}
n=0+1
n=1+1
2<=1不成立
输出n 的值
输出n 的值
输出n 的值
n
1
2
3
0<=1成立
n=2+1
1<=1成立
n=0
0
1
2
3
循环体为多个语句时要用{ } 括起来
应在条件表达式或循环体中改变条件表达式的值,否则会出现死循环。
2次
输出n 的值
P98习题10用do-while实现的对比:
main( )
{ int n=0;
do printf(“%d\t”,n);
while(n++<=1);
printf(“%d\n”,n);
}
n=0+1
n=1+1
2<=1不成立
输出n 的值
输出n 的值
输出n 的值
n
0
1
3
0<=1成立
n=2+1
1<=1成立
n=0
0
1
2
3
2
3次
P83例14~16:
main( ){ int number=0; while (number<=1) { number++; printf(“%d\n”,number); }}
main( )
{ int number=0;
while (number++<=1)
printf(“*%d\n”,number);
printf(“**%d\n”,number);
}
#include “stdio.h”main( ){ int c; while ((c=getchar( ))!=EOF) putchar(c);}
main( ){ int c; c=getchar( ); while (c!=EOF); { putchar(c); c=getchar( ); }}
eehh^z
*1*2**3
12
EOF为符号常数,在stdio.h中定义:#define EOF –1(当键盘输入^Z或遇到文件结束标志时,其值为-1)
14
15
16
类似P98习题10
(1) 1+3+5+…+99(2) 2+4+6+…+100(3) 1-2+3-4+…+99-100
(4)
(5)
#include “stdio.h”void wait_a_char(char c){ char ch; while ((ch=getchar( ))!=c); return( );}
P83例17:口令检查函数
将循环体合并到了条件表达式中
P12例6:求1+2+3+…+10
main( ){ int s=0, i=1; while (i<=10) { s=s+i; i=i+1; } printf(“s=%d\n”,s);}
课后练习
main( ){ int s=0, i=1; do { s=s+i; i=i+1; } while (i<=10); printf(“s=%d\n”,s);}
P85例18:搬砖问题。
main( ){ int x=0,y,z; while (x<=8) { y=0; while (y<=11) { z=36-x-y; if (4*x+3*y+z/2= =36)