循环结构(while循环)

时间:2022-10-12 11:12:02

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;

}