==============
流程控制——循环语句
==============
.循环结构
1.while循环
2.do-while循环
3.for循环
4.break和continue控制循环
一、什么是循环?
能够实现重复执行某一个动作(程序)。
二、循环的三要素?
1.从哪里开始(起点、循环初值)
2.到哪里结束(终点、循环条件)
3.步长(步进)(促使循环条件结束的语句)
三、while循环(当型循环)
格式:
表达式1;
while(表达式2){
语句组;
表达式3;
}
表达式1:起点,从哪里开始,循环初值
表达式2:终点,循环条件,到哪里结束
表达式3:步长(步进)
逻辑:先执行表达式1,进入循环,再计算表达式2的值,值为1:则执行循环体的内容(先执行语句组,再执行表达式3),再次计算表达式2的值,如果为1,则继续执行循环体,直到表达式2的值为0,则退出循环体,结束循环。
练习:
1》输出1~100的整数
2》输出m~n的整数
int m, n ,t;
先在键盘上输入m和n的值
if(m>n)
{ t=n;
n=m;
m=t;
}
while(m<=n)
{
printf(“%d”,M);
m++;
}
3》求5!(n的阶乘:从1乘到n))
fac*=i;
四、do while循环(直到型循环)
格式:
表达式1;
do{
语句组;
表达式3;
}while(表达式2);
逻辑:先执行表达式1,进入循环,执行循环体,再计算表达式2的值,值为1:则继续执行循环体,直到表达式2的值为0,则退出循环体,结束循环。
1》求1+2+3+……+100的和
int i=1,sum=0
do
{ sum+=i;
i++
}while(i<=100);
prinrf(“%d”,sum);
2》输出1-100中(7的倍数和带7的数除外)的数。
int i=1;
do{
if(i%7==0||i%10==7&&i/10==7)
{ printf(“%d”,i)
}
}while(i<=100);
while与do while的区别和联系
1.当表达式2的值(循环条件)第一次为1(真)时,没有任何区别。
2.当表达式2的值第一次为0时,do while语句至少要执行一次,while语句一次都不执行。
3.while是当型循环:先判断条件,后执行语句;do while是直到型循环:先执行语句,后判断条件。
【注】do while后必须加分号。
死循环:条件永远为1
while(1){
}
五、for循环(多功能循环)
格式:
for(表达式1;表达式2;表达式3){
语句组;
}
表达式1;
for(;表达式2;表达式3){}
表达式1;
for(;表达式2;){
语句组;
表达式3;
}
for(;;) 死循环格式
1》输出m至n的自然数中的(偶数和)与(奇数和)并统计偶数与奇数的个数分别是多少?
2》时钟(sleep(1));
3》解决猴子吃桃的问题(有一只猴子,还有一堆桃子,第一天的时候,吃了一堆桃子中的一半,没忍住,又多吃了一个;
第二天的时候,又吃了剩下桃子中的一半,没忍住,又多吃了一个,以后每天如此,直到第10天的时候,只剩下了一个桃子,问第一天的时候有多少个桃子)
六、break和continue控制循环
break:
1.用于switch语句中,终止switch语句,跳出switch语句
2.用于循环语句中,终止一层循环,跳出循环体
continue:用于循环语句中,终止一次循环,提前进入下一次循环
8》判断一个数是素数还是合数
//素数(质数):只能被1和它本身整除的数
七、循环嵌套
练习:
1》
111****
111****
111****
2》
打印m行n列的*
3》
111*
111**
111***
111****
4》
111****
111***
111**
111*
5》
111 *
111 **
111 ***
111****
6》
111 *
111 ***
111 *****
111*******
7》九九乘法表
8》一元钱的兑换方案(兑换成角)
9》用循环输出11112223333444
10》用循环输出12413412341234
11》输出1-100中的素数(质数)
int i,j;
for(i=0;i<=100;i++)
{ if(i==0||i==1)
{ printf("非素非合\n");
}
else
{ for(j=2;j<=i;j++)
{ if(i%j==0)
break;
}
if(i==j)
printf("%d是素数\n",i);
}
}
12》
111**** **** *
111 *** *** ***
111 ** ** *****
111 * * *******