目录
循环语句
由于我们在日常生活中,有许多事情是需要反复去做的,比如每天都要学习,每天需要睡觉,而在C语言中,也有这么一类语句供给我们使用,描述这些需要重复去做的事情。
C语言中的循环语句主要有这么几类:while,do - while,以及for循环.
首先我们介绍while循环:
while循环:
while循环的基本语法:
我们已经了解并掌握了if - else语句
if (条件)
语句;
当条件满足的情况下,if语句后的语句执行,否则不执行。
但是这个语句只会执行一次.
由于我们发现生活中很多的实际的例子是:同一件事情我们需要完成很多次。
那我们怎么做呢?
C语言中给我们引入了: while 语句,可以实现循环。
while循环的语法结构:
while(表达式)
语句;
while语句的执行流程:
比如我们要实现打印1-10的数字:
#include<stdio.h>
int main()
{
int i = 0;
while(i <= 10)
{
printf("%d", i);
i++;
}
return 0;
}
上面的代码已经帮助我们了解了while语句的基本语法.
接下来我们介绍while语句中的break 和 continue
while中的break介绍:
#include<stdio.h>
int main()
{
while (i <= 10)
{
if(i == 5)
break;
printf("%d ", i);
i++;
}
return 0;
}
在编译器下运行后,我们会发现,这段代码输出了1 2 3 4.而5及5以后的数字都没有被输出,在这里,就是break语句起了作用,当i++,i递增到5时,当再次执行if语句时,此时i == 5为真,程序会执行break语句.
那么此时我们就可以得知break语句在while循环中的作用:
- 在循环中只要遇到break,就停止后期的所有循环,直接终止循环。
- while中的break用来终止循环
while中的continue介绍:
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if(i == 5)
continue;
printf("%d", i);
i++;
}
return 0;
}
而在这里,当我们编译执行这段代码时,会发现,屏幕上也只打印了1,2,3,4.
而且此时程序并没有停止,说明它陷入了死循环,即continue在while语句中的作用:
continue是用于终止本次循环的,也就是本次循环中continue语句后边的代码不会再执行而是直接跳转到while语句的判断部分,进行下一次循环的入口判断.
接下来我们介绍do-while循环:
do-while循环:
do语句的用法:
do语句的基本语法:
do
循环语句;
while(表达式);
- do语句的特点:循环至少执行一次,使用的场景有限,所以不经常使用.
接下来我们看一段代码理解:
#include<stdio.h>
int main()
{
int i = 0;
do
{
printf("%d", i);
}while(i < 10);
return 0;
}
注意:在书写do-while循环时,千万不要忘记while后的分号!
将上段代码在VS2019中运行后结果:
我们可以看到,在屏幕上打印出了数字10,这就说明,虽然while语句括号中条件判断表达式值为假,但依然在屏幕上打印出了10,这就说明,do-while循环中的语句会至少执行一次,无论条件表达式的值为真或假.
do-while循环中的continue和break:
break在do-while循环中的作用:与在while循环中相同,均为跳出循环.
continue在do-while语句中的作用:跳过执行本次循环剩下的语句,直接跳到条件判断处.
for循环:
for循环的基本语法:
for(表达式1; 表达式2; 表达式3)
循环语句;
表达式1:
表达式1为初始化部分,用于初始化循环变量
表达式2:
表达式2为条件判断部分,用于判断循环何时终止
表达式3:
表达式3为调整部分,用于循环条件的调整
执行流程:
在执行循环时,程序将会依次执行1 2 3,然后走到语句4判断,如果表达式为真,则程序继续按照2->3->4->2->...,直到表达式为假,然后跳出循环.
实际问题:
打印数字1-10
#include<stdio.h>
int main()
{
int i = 0;
//i = 1为初始化 i <= 10为条件判断部分 i++为调整部分
for(i = 1; i <= 10; i++)
{
printf("%d ", i);
}
return 0;
}
执行程序后,发现屏幕上依次打印出1-10
for循环与while循环的对比:
现在我们对比一下for循环与while循环:
#include<stdio.h>
int main()
{
//使用while循环
int i = 0;
i = 1;
while(i <= 10)
{
printf("haha\n");
i += 1;
}
//使用for循环
for(i = 1; i <= 10; i++)
{
printf("haha\n");
}
return 0;
}
可以发现在while循环中依然存在循环的三个条件,但是由于风格的问题使三个条件离的比较远,这样查找和修改就不方便,所以for循环的风格略胜一筹,for循环的使用频率也最高.
for循环中的break和continue:
for循环中也可以使用break和continue,他们的意义与在while中是一样的.
for语句的循环控制变量:
- 不要在for循环体内修改循环控制变量,避免循环失去控制.
- 建议for语句中的循环控制变量的取值采用"前闭后开"
如下:
int i = 0;
for(i = 0; i < 10; i++)
{
}
一些for循环的变形:
#include<stdio.h>
int main()
{
//代码1
for(;;)
{
printf("0\n");
}
}
for循环中的初始化部分,判断部分,调整部分是可以省略的,但是不建议初学时使用,容易导致问题
注意:在省略掉条件判断语句时,条件判断默认为真.
int i = 0;
int j = 0;
for(i = 0; i < 10; i++)
{
for(j = 0; j < 10; j++)
{
printf("0 ");
}
}
这段代码实现了for循环的嵌套使用,最终结果为在屏幕上打印出100个数字0
int x, y;
for(x = 0, y = 0; x<4 && y<5; x++, y++)
{
printf("0 ");
}
这段代码实现了多变量控制for循环