3.1 循环结构
在现实中,我们往往会重复的做一件事,直到符合某个条件就会停止。如:周一到周五,我们每天都重复着起床、上班、午休、上班、下班、回家、睡觉这个流程,而当到了周六,我们就不会继续重复了。
循环结构:程序重复执行某一个代码块,直到符合特定条件,才会结束
循环结构有3条语句:do-while语句、while语句、for语句。
3.1.1 for语句
常见形式如下:
for(赋值表达式; 条件表达式; 循环变量表达式)
{
循环体;
}
原理:
1.首先执行赋值表达式(1次for语句执行过程中,只执行1次)
2.计算出条件表达式的值,判断真假
3.如果为真,则执行循环体,然后执行循环变量表达式,然后再回到第2步
4.如果为假,则 for 语句结束,执行其下一条语句
说明:
赋值表达式:为变量付初值
条件表达式:能够让循环结束的条件,控制循环次数
循环变量表达式:能够让循环结束的语句(自增减)
注意:
for()后面不能有分号,否则循环体中的内容会默认成顺序结构只执行一次
for(表达式1;条件;表达式2),表达式1与表达式2以及条件都可以是多条语 句但是要用逗号隔开;注意条件部分的表示;
for(;;)死循环
示例程序:
#include <stdio.h>
int main()
{
int i;
int sum = 0;
//1+2+3...100; //1~100,1
// for(i = 1; i <= 100; i++)
// {
// sum = sum + i;
// }
// printf("sum = %d\n",sum);
// printf("i = %d\n",i);
//============================================
i = 1;
for(; i <= 100; ) //while(i<=100)
{
sum = sum + i;
i++;
}
printf("sum = %d\n",sum);
printf("i = %d\n",i);
//for适合循环次数可知,范围要求,
//只知道结束的条件,while,do-while适合
//=================================================
//n!= 1*2*3*...n Sn = 10+20+30....+n*10
sum = 1;
int s = 0;
int j ;
int n;
printf("请输入一个十进制数据:");
scanf("%d",&n);
//如果赋值表达式和循环变量表达式是多条语句的时候,可以使用逗号隔开
for(j = 1,i = 10;j <= n; j++, i+=10)
{
sum = sum *j;
s = s + i;
}
printf("%d! = %d\n",n,sum);
printf("s = %d\n",s);
}
注意:
1. 赋值表达式,可以省略,但是条件表达式中变量要有明确的值
2. 条件表达式,可以省略,但是会变成死循环
3. 循环体也可以省略,如果不加分号,也没有{},默认往下结合一条语句
-
循环变量表达式可以省略,但对是否是无限循环没有影响
- for(; ;)中两个分号不能省略。for(; ;)也能表示无限循环,但不常用。
3.1.2 while语句
常见形式如下:
while(条件表达式)
{
循环体;
}
原理:
1.计算出表达式的值,判断真假
2.如果为真,则执行循环体,然后回到第1步,如果为假,则 while 语句结束
3.标准死循环,while(1)
示例程序:
int main()
{
int a;
printf("请输入一个分数:");
scanf("%d",&a); //0~99
while(a < 0 || a > 99)
{
//1)当输入不符合程序要求,显示数据有误,直接结束程序,return;
//printf("数据范围有误\n");
//return 0; //在主函数中一般返回0
//结束程序
//2)当输入的输入不符合要求,提示用户重新输入,--->重新比较,---重新输入。重新比较
printf("数据范围有误,请重新输入:");
scanf("%d",&a);
}
…….
}
示例2:
3.1.3 do-while语句
常见形式如下:
do
{
循环体; // 重复执行的代码块
}while(条件表达式); // 这里有分号,表示语句的结束
原理:
1.执行循环体
2.计算出表达式的值,判断真假
3.如果为真,则回到第1步
4.如果为假,则 do-while 语句结束
#include <stdio.h>
int main()
{
int a;
do
{
printf("请输入一个分数:");
scanf("%d",&a);
}while(a < 0 || a > 99);
}
总结:
for循环跟while语句:
for循环适合于循环次数可知的情况
while语句适合于循环次数不可知的情况,只知道最终结束的条件
标准的死循环:while(1)
while语句跟 do-while语句
while语句先判断条件是否成立,如果成立则执行循环体,循环体有可能一次也不执行
do-while语句,先执行循环体,然后在判断条件是否成立,循环体至少执行一次