1.作用:将一段代码,反复运行
2.语法
while(条件表达式)
{循环体};
3.执行步骤
判断条件表达式是否为真,非0继续执行,0则停止直接跳过
while(1)永真
while(0)永假
4.死循环
如果每次条件表达式都为真,则会一直执行下去,不会停止
注尽量不写死循环
5.书写while时
确定循环体,知道那一段代码需要反复执行。
知道循环继续和结束的条件,用注释标明。
6.
a.循环例子(死循环)
#include<stdio.h>
int main()
{
int i = 1;
while (1)//循环为真,且为死循环
{
printf("你真帅");
}
return 0;
}
b.有次数限制的循环
方法:将声明的变量在循环体后面进行改变自身值
#include<stdio.h>
int main()
{
int i = 0;//定义i的值
while (i < 5)
{
printf("你真帅");
i++;//将i的值每循环一次加一,使得i不满足条件表达式
}
return 0;
}
c.次数不确定,要求用户输入正确的答案才能结束
#include<stdio.h>//请反复输入你爱我吗,y/n,如果yes结束,no继续进行
int main()
{
char ch = 'a';//定义字符
while (ch != 'y')//确定循环体,且判断用户输入的数据
{
printf("你爱我吗?");
scanf_s("%c", &ch,1);
}
printf("谢谢你");
return 0;
}
d.遍历指定范围的数
#include<stdio.h>//遍历范围的值
int main()
{
int i = 1;
while (i <= 100)//遍历1到100
{
printf("%d\n", i);//将变量换成i,i有自增
i++;//所以打印数持续增加
}
return 0;
}
e.在指定的范围内找到符合条件的数
使用if将所要的条件表达出来
例子
#include<stdio.h>//找出100到200之间的偶数
int main()
{
int i = 100;
while (i <= 200)
{
if (i % 2 == 0)//假设i是偶数
{
printf("%d\n", i);
}
i++;
}
return 0;
}
#include<stdio.h>//在1000到5000中各个数之和为5的打印出来
int main()//先将范围打印出来,然后将各个数分别开来,相加
{
int i = 1000;
while (i <= 5000)
{
int a = i / 1000, b = i % 1000 / 100, c = i % 100 / 10, d = i % 10;
//将千位,百位,十位,个为表示出来
if (a + b + c + d == 5)//假设将各个数相加等于5,则打印
{
printf("%d\n", i);
}
i++;//利用自增使范围数打印出来
}
}
f.使用循环累加
#include<stdio.h>//求累加值
int main()
{
int i = 1;
int sum = 0;//要在大括号外定义
while (i <= 10)
{
sum += i;//sum的值每一次都要加上i的增量
printf("%d\n", sum);//打印
i++;
}
return 0;
}
注意:定义时要注意变量的位置,不要将定义放入大括号中
g.利用循环求最大值。
#include<stdio.h>//利用循环求最大值
int main()
{
int i = 0;
int max = 0;
while (i < 5)
{
printf("请输入第%d个数", i + 1);//判断输入了几个数
int num = 0;
scanf_s("%d", &num);//重复输入数字
if (num > max)
{
max=num;//赋值将num的值赋给max
}
i++;
}
printf("最大值是%d", max);//打印最大值
return 0;
}
h.用循环来计数计数
1).记录循环多少次,记录某个条件满足多少次
2)声明一个变量用来计数
#include<stdio.h>//请用户输入账号和密码,只要有一个不正确,就要重新输入
int main()
{
int zhangHao = 0, miMa = 0;
int times = 0;//想知道输入多少次,只需定义一个变量来进行记录
while (zhangHao != 123456 || miMa != 888888)
{
printf("请输入账号和密码");
scanf_s("%d%d", &zhangHao, &miMa);
/printf("输入错误,请重新输入");/
times++;//每循环一次就加一
}
printf("输入正确,登陆成功");
printf("您输入了%d\n", times);
return 0;
}
i.穷举
将所以的数一个一个列举进行比对。
#include<stdio.h>//一篮鸡蛋至少有两个,两个数剩一个,三个数剩一,四个数还剩一个
int main()
{
int i = 2;//至少有两个
while (1)
{//定义条件,满足则停止循环
if (i % 2 == 1 && i % 3 == 1 && i % 4 == 1)
{
printf("鸡蛋数是%d\n", i);
break;//条件成立则停止
}
i++;//自增
}
return 0;
}