文章目录
前言
语句(statement)是 C 程序的基本构建块,一条语句相当于一条完整的计算机指令
循环语句包括 while、for、do while
while 语句和 do…while 语句的区别:while 语句是先判断后执行,do…while 语句是先执行,至少会执行一次
一、while
1.通用形式
while(测试条件)
{
//循环体语句;
}
执行过程:测试条件即循环条件表达式的值为真就执行循环体语句,先判断后执行
2.例子
循环输出1~n之间的数
源代码:
//循环输出1~n之间的数
#include<stdio.h>
int main()
{
int n = 0;
int i = 1; //初始值
printf("请输入n的值:");
scanf("%d", &n);
while (i <= n) //测试;循环条件
{
//行为;循环要执行语句
printf(" %d\n", i);
i++; //更新计数
}
return 0;
}
创建一个重复执行固定次数的循环中涉及了3个行为:初始化、测试、更新计数
运行结果:
二、for
1.通用形式
for(表达式1; 表达式2; 表达式3)
{
//循环体语句;
}
for循环把while循环3个行为(初始化、测试、更新计数)组合在一处
for 语句的三个表达式不是必须的,当条件表达式(表达式 2)的值为假(为 0)时 for 循环语句就结束
若条件表达式(表达式 2)是空的,表明条件表达式的值一直是真,即死循环,例如 for( ; ; )
对于 for 循环的表达式 3(更新计数),可以理解为是作用在循环体语句的末尾(也就是在执行完依次循环体语句后才执行一次更新计数),一般的两种写法 i++ 和 ++i 的效果一样
2.例子
while 语句与 for 语句的替换:计算 1 + 2 + 3 + … + n 的值
思路:
- 定义变量i、n、sum
- 输入n的值
- 循环语句:累加当前的数据,sum = sum + i,可以写成sum += i
- 思考循环的开始条件:i从1开始
- 思考循环的结束条件:i++, i > n
- 循环的条件:i <= n
源代码:
//使用 while 语句实现:计算 1 + 2 + 3 + ... + n 的值
#include<stdio.h>
int main()
{
int i = 1;
int n = 0;
int sum = 0;
printf("请输入n的值:");
scanf("%d", &n);
while (i <= n)
{
sum = sum + i;
i++;
}
printf("sum=%d\n", sum);
return 0;
}
//使用 for 语句实现:计算 1 + 2 + 3 + ... + n 的值
#include<stdio.h>
int main()
{
int i = 1;
int n = 0;
int sum = 0;
printf("请输入n的值:");
scanf("%d", &n);
for (i = 1; i <= n; i++)
sum = sum + i;
printf("sum=%d\n", sum);
return 0;
}
运行结果:
三、do while
1.通用形式
do
{
//循环体语句;
}while(测试条件)
执行过程:先执行测试条件即循环体语句,再检查循环条件表达式的值是否为真,如果为真则继续执行循环体语句,否则结束循环
2.例子
使用 do while 语句,计算 m+…+n 的值( m < n )
源代码:
//使用 do while 语句,计算 m + ... + n 的值( m < n )
#include<stdio.h>
int main()
{
int n = 0;
int m = 0;
int sum = 0;
printf("请依次输入 m 和 n 的值:");
scanf("%d %d", &m, &n);
do
{
sum = sum + m;
m++;
} while (m <= n);
printf("sum = %d\n", sum);
return 0;
}
运行结果:
四while 语句和 do…while 语句的区别
while 语句是先判断后执行
do…while 语句是先执行然后判断,所以至少会执行一次
五、死循环
1.for 语句的死循环
可以省略一个或多个表达式,但";"不能省略,只要在循环中包含能结束循环的语句即可
省略条件表达式被视为真,进入死循环
for(;;) //若条件表达式(表达式 2)是空的,表明条件表达式的值一直是真,即死循环
{
//循环体语句;
}
2.while 语句的死循环
while(1)//由于1为真,所以循环会一直进行
{
//循环体语句;
}
一般而言,所有的非零值都视为真,只有 0 被视为假