接上篇“分支循环语句--分支语句”
引入:如果要在屏幕上打印出十个“你好”,是不是就是像这样,写十个printf语句呢?
printf("你好\n");
printf("你好\n");
printf("你好\n");
printf("你好\n");
printf("你好\n");
printf("你好\n");
printf("你好\n");
printf("你好\n");
printf("你好\n");
printf("你好\n");
那这样未免也太麻烦了!有没有什么办法,能够简化这种结构相似、功能相同的代码呢?
答案就是我们今天要讲的循环语句!
1.while循环语句
1.1 基本结构
while(表达式){语句块}-------------当表达式的值为真时,一直执行语句块中的内容,直到条件改变导致表达式的值为假,不再执行。
1.2 执行流程
示例如下:(使用while循环在屏幕上打印十个你好)
#include<stdio.h>
int main()
{
int a = 1;//初始化
while (a <= 10)//判断
{
printf("你好\n");
a++;//调整
}
}
return 0;
在上述的while循环中,可以将代码看成三个核心部分:一是对条件的初始化,即语句a=1;
二是对条件的判断,即while后括号中的判断语句a<=10;三是对条件进行调整,即执行的代码块中的a++。可以看到结果如下:
1.3 实战举例
练习:输入一个正整数,在屏幕上逆序打印出每一位数
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
//输入一个整数,在屏幕上逆序打印出每一位数
int a = 0;//初始化
scanf("%d", &a);
while (a)//判断
{
printf("%d ", a % 10);//获得最后一位数并打印在屏幕上
a /= 10;//调整
}
return 0;
}
现在,相信你已经对while循环有了一个清楚的认识
有没有什么语句,可以把上述提到的三个条件再简化合并呢?那就要继续学习我们的for循环了!
2. for循环语句
2.1 基本结构
for(表达式1:初始化; 表达式2:判断;表达式3:调整){代码块}
2.2 执行流程
示例如下:(使用for循环打印输入十个“你好”)
#include<stdio.h>
int main(){
for (int i = 1; i <= 10; i++)
printf("你好\n");
return 0;
}
注意,在实际使用中,for循环括号内的三个条件都是可以省略的,这要结合具体问题合理使用~
使用这个简单的for循环,我们就可以在屏幕上打印出来十个“你好”了,是不是大大减少了代码的书写量呢!更加方便简洁!
2.3 实战举例
练习:计算1-100之间3的倍数的和
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
//计算1-100之间3的倍数的和
//产生1-100-----使用for循环
//判断3的倍数 i%3 == 0
int sum = 0;
for (int i = 1; i <= 100; i++)
{
if (i % 3 == 0)
sum += i; //如果是3的倍数,就进行累加
}
printf("%d\n", sum);
return 0;
}
得到结果如下
3. do-while循环语句
3.1 基本结构
do
{代码块}
while(表达式);
程序会先执行一次代码块中的内容,然后再进行判断,若表达式的值为真,继续执行语句块;反之则不再执行,直接退出循环
3.2 执行流程
实例如下:(使用do-while循环打印十个你好)
#include<stdio.h>
int main()
{
int a = 0;
do
{
printf("你好\n");
a++;//调整
} while (a < 10);//判断
return 0;
}
要注意:while的括号后是有一个分号的!!不然程序会报错~
3.3 实战举例
练习:输入一个整数,判断这个整数是几位数?
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int a = 0;
scanf("%d", &a);
int count = 0;//用来统计数位
do
{
count++;//既然已经输入了一个数,这个数最少都有一位
a /= 10;//调整
} while (a);//判断
printf("%d\n", count);
return 0;
}
运行结果如下:
但是在实际使用中,由于一定会先将循环体内的语句执行一次,这样的问题其实是比较少的,所以do-while循环的使用不如while循环和for循环多。
4. break和continue语句
和在上篇推文的switch语句中提到的break类似,这里的break和continue也是这个循环体的出口,用于结束循环,但是具体还有区别~
break:这个单词的中文意思是“休息,中断”,在循环语句中,用于结束整个循环;
continue:这个单词的中文意思是“持续,继续”,在循环语句中,单层循环遇到continue时后面的代码不再执行,直接继续下一次循环
废话不多说,直接上代码分析!
#include<stdio.h>
int main()
{
int i = 0;
for (; i < 10; i++)//三条件可以放在代码其他不影响使用的部分,但是仍然要有分号
{
if (i == 5)
break;//遇到break直接结束了for循环
printf("%d ", i);
}
return 0;
}
上述代码中,当i=5时,遇到了break,于是直接结束了for循环,只在屏幕上打印出来0-4
换成continue呢?
#include<stdio.h>
int main()
{
int i = 0;
for (; i < 10; i++)//三条件可以放在代码其他不影响使用的部分,但是仍然要有分号
{
if (i == 5)
continue;//不再执行后面的代码,直接进入下一次循环
printf("%d ", i);
}
return 0;
}
在上述代码中,当i=5时,遇到了continue,于是后面的代码不再继续执行,直接进入下一次循环,i++让i变成了6,继续在屏幕上打印
看到这里,相必你对循环语句也有了更深入的理解吧!快去实战练习一下吧!
完