目录
[1 for循环](#1 for循环)
[1.1 基本结构](#1.1 基本结构)
[1.2 应用](#1.2 应用)
[1.2.1 输出0-10之间的所有整数](#1.2.1 输出0-10之间的所有整数)
[1.2.2 打印1-10之间的所有整数(包含1和10)](#1.2.2 打印1-10之间的所有整数(包含1和10))
[1.2.3 求 1+2+3+4 +...100的和](#1.2.3 求 1+2+3+4 +...100的和)
[1.2.4 计算5的阶乘](#1.2.4 计算5的阶乘)
[1.2.5 打印一个3*4的矩形](#1.2.5 打印一个3*4的矩形)
[1.2.6 打印一个5*5的直角三角形](#1.2.6 打印一个5*5的直角三角形)
[1.2.7 for循环打印一个九九乘法表](#1.2.7 for循环打印一个九九乘法表)
[2 while 循环](#2 while 循环)
[2.1 基本结构](#2.1 基本结构)
[2.2 应用](#2.2 应用)
[2.2.1 输出三句话](#2.2.1 输出三句话)
[2.2.2 输出0-10之间的所有整数](#2.2.2 输出0-10之间的所有整数)
[2.2.3 求 1+2+3+4 +...100的和](#2.2.3 求 1+2+3+4 +...100的和)
[3 do...while 循环](#3 do...while 循环)
[3.1 基本结构](#3.1 基本结构)
[3.2 应用](#3.2 应用)
[3.2.2 求 1+2+3+4 +...100的和](#3.2.2 求 1+2+3+4 +...100的和)
[4 do...while 和while的区别](#4 do...while 和while的区别)
[5 无限循环 (死循环)](#5 无限循环 (死循环))
[6 循环控制语句(break、 continue 、 goto)](#6 循环控制语句(break、 continue 、 goto))
[6.1 break语句](#6.1 break语句)
[6.2 continue 语句](#6.2 continue 语句)
[6.3 goto 语句(了解)](#6.3 goto 语句(了解))
前言
在前面的课程中,我们已经会使用顺序结构和选择结构了
但是,在实际开发中,只使用这两种结构是不够的,还需要使用到循环结构,也被称为重复结构因为在开发中经常需要处理重复问题,如:
(1)求 1+2+3+4 +...100的和
(2)输出0-50之间所有的偶数
像这样的问题就需要使用到C语言的循环语句
C语言中的循环语句有 for 循环、while循环、do...while循环
1 for循环
1.1 基本结构
cpp
for (初始语句;条件表达式;控制条件语句){
循环体语句
}
条件表达式返回true时循环体不停地进行循环,直到条件表达式返回false时自动退出循环
1.2 应用
1.2.1 输出0-10之间的所有整数
写法一:
cpp
#include <stdio.h>
int main(void)
{
for (int i = 1; i < 10; i++)
{
printf("i=%d\n", i);
}
return 0;
}
写法二:
cpp
#include <stdio.h>
int main(void)
{
int i;
for (i = 1; i < 10; i++)
{
printf("i=%d\n", i);
}
return 0;
}
1.2.2 打印1-10之间的所有整数(包含1和10)
cpp
#include <stdio.h>
int main(void)
{
for (int i = 0; i <= 10; i++)
{
printf("i=%d\n", i);
}
return 0;
}
1.2.3 求 1+2+3+4 +...100的和
cpp
#include <stdio.h>
int main(void)
{
int sum;
for (int i = 1; i <= 100; i++)
{
sum += i;
}
printf("sum=%d\n", sum);
return 0;
}
1.2.4 计算5的阶乘
cpp
#include <stdio.h>
int main(void)
{
int sum = 1;
for (int i = 1; i <= 5; i++)
{
sum *= i;
}
printf("sum=%d\n", sum);
return 0;
}
1.2.5 打印一个3*4的矩形
写法一:
cpp
#include <stdio.h>
int main(void)
{
for (int i = 1; i <= 12; i++)
{
printf("*");
}
if (i % 4 == 0)
{
printf("\n");
}
return 0;
}
写法二:
cpp
#include <stdio.h>
int main(void)
{
int line = 3;
int num = 4;
for (int i = 1; i <= line; i++)
{
for (int j = 0; j < num; j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
1.2.6 打印一个5*5的直角三角形
cpp
#include <stdio.h>
int main(void)
{
int line = 5;
for (int i = 1; i <= line; i++)
{
for (int j = 0; j < i; j++)
{
printf("* ");
}
printf("\n");
}
return 0;
}
1.2.7 for循环打印一个九九乘法表
cpp
#include <stdio.h>
int main(void) {
for (int i = 1; i <= 9; i++)
{
for (int j = 1; j <= i; j++)
{
printf("%dx%d=%d\t", i, j, i * j);
}
printf("\n");
}
return 0;
}
2 while 循环
2.1 基本结构
cpp
while(表达式)
{
语句
}
2.2 应用
2.2.1 输出三句话
cpp
#include <stdio.h>
int main(void) {
int i = 0;
while (i < 3)
{
printf("第%d句话\n", i + 1);
i++;
}
return 0;
}
2.2.2 输出0-10之间的所有整数
cpp
#include <stdio.h>
int main(void)
{
int i = 1;
while (i < 10)
{
printf("i=%d\n", i);
i++;
}
return 0;
}
2.2.3 求 1+2+3+4 +...100的和
cpp
#include <stdio.h>
int main(void)
{
int i = 1;
int sum = 0;
while (i <= 100)
{
sum += i;
i++;
}
printf("sum=%d", sum);
return 0;
}
3 do...while 循环
3.1 基本结构
cpp
do{
语句/循环体
}while(表达式/循环条件);
注意:
1、最后的分号不要忘记
2、循环条件中使用的变量需要经过初始化
3、循环体中,应有结束循环的条件,否则会造成死循环
4、do...while和while的功能基本一样,唯一的区别就是第一次循环条件不成立的情况下do...while会先执行一次,while不会执行
3.2 应用
3.2.1输出三句话
cpp
#include <stdio.h>
int main(void)
{
int i = 0;
do
{
printf("第%d句话\n", i + 1);
i++;
} while (i < 3);
return 0;
}
3.2.2 求 1+2+3+4 +...100的和
cpp
#include <stdio.h>
int main(void)
{
int i = 1;
int sum = 0;
do
{
sum += i;
i++;
} while (i <= 100);
printf("sum=%d", sum);
return 0;
}
4 do...while 和while的区别
第一次循环条件不成立的情况下do...while会先执行一次,while不会执行
while
cpp
#include <stdio.h>
int main(void)
{
int i = 10;
while (i < 2)
{
printf("执行");
}
return 0;
}
//不会输出任何内容
do...while
cpp
#include <stdio.h>
int main(void)
{
int j = 10;
do
{
printf("执行");
} while (j < 2);
return 0;
}
//输出:执行
//说明:无论条件是否成立都会执行一次
5 无限循环 (死循环)
while
cpp
#include <stdio.h>
int main(void)
{
while (1)
{
printf("一直执行\n");
}
return 0;
}
for
cpp
#include <stdio.h>
int main(void)
{
for (;;)
{
printf("This loop will run forever.\n");
}
return 0;
}
如果条件永远不为假,则循环将变成无限循环。
for 循环在传统意义上可用于实现无限循环。
由于构成循环的三个表达式中任何一个都不是必需的,您可以将某些条件表达式留空来构成一个无限循环。
6 循环控制语句(break、 continue 、 goto)
循环控制语句主要用于跳出循环体
6.1 break语句
break用于跳出本次循环,遇到break 循环终止,后面代码也不会执行
break可以用在switch case中 也可以用在 for 循环和 while循环中
示例:
cpp
#include <stdio.h>
int main(void) {
int i = 0;
while (i < 10)
{
if (3 == i)
{
break; // 结束当前循环
}
printf("i=%d\n", i);
i++;
}
return 0;
}
在多层循环中,一个break语句只能向外跳出一层
cpp
#include <stdio.h>
int main(void)
{
for (int i = 0; i < 5; i++)
{
printf("外层%d\n", i);
for (int j = 0; j < 3; j++)
{
if (j == 1)
{
break;
}
printf("---里层%d\n", j);
}
}
return 0;
}
提示:
1、如果在循环中已经执行了break语句,就不会执行循环体中位于break后的语句
2、在多层循环中,一个break语句只能向外跳出一层
6.2 continue 语句
主要用于跳过当次循环,只能在循环语句中使用
continue可以用在for循环以及 while循环中,但是不建议用在while循环中,不小心容易死循环
cpp
#include <stdio.h>
int main(void)
{
int i;
for (i = 0; i < 10; i++)
{
if (3 == i)
{
continue; // 跳过本次循环
}
printf("i=%d\n", i);
}
return 0;
}
continue 也可以用在while中,但是要注意死循环 (下面代码就是死循环)
cpp
#include <stdio.h>
int main(void)
{
int i = 0;
while (i < 10)
{
if (3 == i)
{
continue; // 结束当前循环
}
printf("i=%d\n", i);
i++;
}
return 0;
}
正确写法
cpp
#include <stdio.h>
int main(void)
{
int i = 0;
while (i < 10)
{
if (3 == i)
{
i++;
continue; // 结束当前循环
}
printf("i=%d\n", i);
i++;
}
return 0;
}
6.3 goto 语句(了解)
在任何编程语言中如果能使用break或者continue解决的问题,不建议使用goto语句,因为它使程序的控制流难以跟踪,使程序难以理解和难以修改
但是在某些场合下goto语句还是比较有用的,例如一次跳出两层或多层循环
这种情况使用break是达不到目的的。它只能从最内层循环退出到上一层循环
cpp
#include <stdio.h>
int main()
{
printf("你好,中国!\n");
goto end;
printf("hello United States!\n");
end:
printf("hello world!");
return 0;
}
cpp
#include <stdio.h>
int main()
{
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 10; j++)
{
printf("*");
if (j == 9)
{
printf("\n");
goto err;
}
}
printf("/n");
}
err:
printf("error stop...");
return 0;
}