C语言中的循环结构
循环结构
for
、while
、do while
实现循环结构
for 循环
语法形式
- 表达式1:用于循环变量的初始化。
- 表达式2:用于循环结束条件的判断。
- 表达式3:用于循环变量的调整。
for (表达式1; 表达式2; 表达式3)
语句;//如果循环体想包含更多的语句,可以加上大括号
for 循环示例
//在屏幕上打印 1-10
#include <stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
printf("%d \n", i);
}
return 0;
}
while 循环
语法形式
while (表达式)
语句;//如果循环体想包含更多的语句,可以加上大括号
//与 if 语句相似
if (表达式)
语句;
while 循环示例
//在屏幕上打印 1-10
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
printf("%d \n", i);
i++;
}
return 0;
}
do while 循环
语法形式
while
和for
这两种循环都是先判断,条件如果满足就进入循环,执行循环语句,如果不满足就跳出循环;do while
循环是先直接进入循环体,执行循环语句,然后再执行while
后的判断表达式,表达式为真,就会进行下一次,表达式为假,则不再继续循环。
do
语句;
while(表达式);
do while 循环实践
//在屏幕上打印 1-10
#include <stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i = i + 1;
}
while(i <= 10);//这里有一个分号
return 0;
}
break 和 continue 语句
break
的作用是用于永久的终止循环,只要break
被执行,直接就会跳出循环,继续往后执行。continue
的作用是跳过本次循环continue
后边的代码,在for
循环和while
循环中有所差异的。
while 循环中的 break 和 continue
break 举例
#include <stdio.h>
int main()
{
int i = 1;
while(i <= 10)
{
if (i == 5)
break;//当i = 5 后,就执行 break ,循环终止
printf("%d ", i);
i = i + 1;
}
return 0;
}
//执行结果:1 2 3 4
- 打印了 1,2,3,4 后,当 i 等于 5 的时候,循环中 break 的地方终止,不再打印,不再循环。
- break 的作用就是永久的终止循环,只要 break 被执行,break 外的第一层循环就终止了。
continue 举例
#include <stdio.h>
int main()
{
int i = 1;
while(i <= 10)
{
if (i == 5)
continue;//当i = 5 后,就执行 continue ,直接跳过 continue 的代码,去循环的判断的地方,因为这里跳过了 i = i + 1,所以 i 一直为 5 ,程序陷入死循环
printf("%d ", i);
i = i + 1;
}
return 0;
}
continue
可以帮助我们跳过某一次循环continue
后边的代码,直接到循环的判断部分,进行下一次循环的判断- 如果循环的调整是在
continue
后边的话,可能会造成死循环。
for 循环中的 break 和 continue
break 举例
#include <stdio.h>
int main()
{
int i = 1;
for (i = 1; i <= 10; i++)
{
if (i == 5)
break;
printf("%d ", i);
}
return 0;
}
//执行结果:1 2 3 4
continue 举例
#include <stdio.h>
int main()
{
int i = 1;
for (i = 1; i <= 10; i++)
{
if (i == 5)
continue;
printf("%d ", i);
}
return 0;
}
//执行结果:1 2 3 4 6 7 8 9 10
do while 循环中的 break 和 continue
break 举例
#include <stdio.h>
int main()
{
int i = 0;
do
{
if (i == 3)
{
break;//当 i 等于 3 时,break 语句被执行并退出循环。
}
printf("%d ", i);
i++;
} while (i < 5);
}
//执行结果:0 1 2
continue 举例
#include <stdio.h>
int main()
{
int i = 0;
do
{
if (i == 2)
{
i++;
continue;//当 i 等于 2 时,continue 语句被执行并跳过了第三次迭代。程序执行了 i++ 语句并继续下一次迭代。
}
printf("%d ", i);
i++;
} while (i < 5);
}
//执行结果:0 1 3 4
循环的嵌套
//打印九九乘法表
#include <stdio.h>
int main()
{
int i, j;
for (i = 1; i <= 9; i++)
{ //外层循环控制行
for (j = 1; j <= i; j++)
{ //内层循环控制列
printf("%d * %d = %d\t", j, i, i * j);
}
printf("\n");
}
return 0;
}
goto 语句
goto
语句可以实现在同一个函数内跳转到设置好的标号处。
#include <stdio.h>
int main()
{
int i = 0;
loop:
printf("%d ", i);
i++;
if (i < 10)
{
goto loop;
}
return 0;
}
- 使用了一个标签 loop 和一个 goto 语句来实现了一个循环输出0到9的数字的程序。
- 每次输出完数字后,我们用 goto loop 语句来跳到标签 loop 处继续执行,直到 i 的值达到10为止。
- 虽然使用goto语句可以让我们在程序中跳转到任何一个标签处,但是过多地使用它可能会导致程序不易理解和维护,因此应该慎重使用。