1、while循环
#include
int main()
{
/*
* if(条件表达式){
* 条件满足才执行的代码
* }
* 特点: 只有条件满足才会执行if后面{}中的内容,
* 并且if后面{}中的内容只会被执行一次
*
* while(条件表达式){
* 条件满足才执行的代码
* }
* 特点: 只有条件满足才会执行while后面{}中的内容,
* 并且执行完之后会再次判断条件表达式是否为真, 如果为真会再次执行while后面{}中的内容
* 重复上述步骤, 知道条件表达式不为真为止
*
* 应用场景:
* 在企业开发中, 但凡发现某些代码是需要重复执行的就要想到循环结构, 就可以使用while
*/
// printf("发射子弹\n");
// printf("发射子弹\n");
// printf("发射子弹\n");
// printf("发射子弹\n");
// printf("发射子弹\n");
// printf("发射子弹\n");
// printf("发射子弹\n");
// printf("发射子弹\n");
// printf("发射子弹\n");
// printf("发射子弹\n");
// 1.先编写循环结构的基本格式
// 2.将需要重复执行的代码拷贝到循环体重({}里面我们就称之为循环体)
// 3.确定循环结束的条件
int num = 0;
while(num < 10){
printf("发射子弹%i\n", num);
num++; // 控制循环结束的语句
}
return 0;
}
#include
int main()
{
/*
* 需求: 1 .. n的和
* 1 + 2 + 3 + 4 + 5
0 + 1
* 1 + 2
* 3 + 3
* 6 + 4
* 10 + 5
* 规律:
* 1.每一次都是上一次的和加上当前的一个数
* 2.当前加上的数是一个递增的数
*/
// 定义一个变量保存用户输入的n
int n = 0;
// 提示用户如何输入
printf("请输入一个正整数, 以回车结束\n");
// 接收用户输入的数据
scanf("%i", &n);
// 1.定义一个变量保存每次相加的和
int sum = 0;
// 2.定义一个变量保存每次加上的数
int num = 1;
// 3.用上一次的和加上当前的数
/*
sum = sum + num; // sum = 0 + 1
num++; // 2
sum = sum + num; // sum = 1 + 2
num++; // 3
sum = sum + num; // sum = 3 + 3
num++; // 4
sum = sum + num; // sum = 6 + 4
num++; // 5
sum = sum + num; // sum = 10 + 5
num++; // 6
// int res = 1 + 2 + 3 + 4 + 5;
// printf("res = %i\n", res);
*/
// 1.编写循环的固定格式
// 2.将重复执行的代码拷贝到循环体中
// 这里使用了编程开发中的一种思想: 累加思想
// 累加实现, 就是定义变量记录每次的和
while(num <= n){
sum = sum + num;
num++;
}
printf("sum = %i\n", sum);
return 0;
}
#include
int main()
{
/*
* 需求: 要求统计1~n中有多少个数能被7整除
*/
// 定义变量记录能被7整除的数的个数
int count = 0;
// 1.定义变量保存用户输入的数据
int n = -1; // 5
// 2.提示用户如何输入
printf("请输入一个正整数, 以回车结束\n");
// 3.接收用户输入的数据
scanf("%i", &n);
// 4.拿到1~n中的每一个数
int num = 1;
while(num <= n){ // 6 <= 5
// printf("num = %i\n", num); // 1 2 3 4 5
// 这里使用了编程开发中的一种思想: 计数器实现
if(0 == (num % 7)){
count++;
}
num++;
}
printf("count = %i\n", count);
return 0;
}
#include
int main()
{
// 1.while循环和if一样, 可以省略大括号
// while循环和if一样, 省略大括号时, 只能控制紧随其后的那条语句
// while循环和if一样, 省略大括号时, 不能定义新的变量
// while循环和if一样, 任何数值都有真假性
// while(0)
// printf("被控制的语句\n");
// printf("不被控制的语句\n");
// while(0)
// int num = 666;
// printf("不被控制的语句\n");
// 2.while循环和if一样, 不用书写分号
// while循环和if一样, 分号不能再写()和{}之间
// while(0);{
// printf("被控制的语句\n");
// }
// 3.while循环和if一样, 可以嵌套其它合法代码
// if(1){
// if(0){
// }
// switch (1) {
// case 1:
// break;
// default:
// break;
// }
// while(0){
// }
// }
while(0){
while(0){
while(0){
if(0){
}
switch (1) {
case 1:
break;
default:
break;
}
}
}
}
return 0;
}
#include
int main()
{
/*
* while(条件表达式){
* 被控制的语句;
* }
* 特点: 会先判断条件是否满足, 满足就执行{}中的代码
*
* do{
* 被控制的语句;
* }while(条件表达式);
* 特点: 不会像判断条件是否满足, 会先执行一次{}中的代码, 然后再判断条件
*/
// while和dowhile的区别:
// while会先判断条件再执行循环体
// dowhile会先执行循环体再判断条件
// while(0){
// printf("被控制的语句\n");
// }
// do{
// printf("被控制的语句\n");
// }while (0);
// 在大部分的情况下while和dowhile是可以互换的
// 在企业开发中如果能够互换, 一般我们会使用while
// int num = 1;
// while(num <=5){
// printf("num = %i\n", num);
// num++;
// }
// int num = 1;
// do{
// printf("num = %i\n", num);
// num++;
// }while(num <=5);
// dowhile的应用场景
// 验证
// 1.定义变量保存用户输入的数据
int num = -1;
// 4.排除非法数据
// if(num < 1 || num > 3){
// printf("非法数字\n");
// }else{
// printf("输入的数据是%i\n", num);
// }
// 1.编写循环的固定格式
// 2.将需要重复执行的代码放到{}中
// 3.确定循环结束条件
// while(num < 1 || num > 3){
// // 2.提示用户如何输入
// printf("请输入一个1~3的整数, 以回车结束\n");
// // 3.接收用户输入的判断
// scanf("%i", &num);
// }
do{
// 2.提示用户如何输入
printf("请输入一个1~3的整数, 以回车结束\n");
// 3.接收用户输入的判断
scanf("%i", &num);
}while(num < 1 || num > 3);
printf("输入的数据是%i\n", num);
return 0;
}
1.1、 whlie小练习
#include
int main()
{
/*
* : 用while循环实现如下功能
*
* 1. 输出
* ****
* ****
* ****
*
* 2.输出
* ****
* ***
* **
* *
*
* 3.输出
* *
* **
* ***
* ****
*
* 4.输出
* ---*
* --**
* -***
*
* 5.输出99乘法表
*/
return 0;
}
2、for循环
#include
int main()
{
/*
* while(条件表达式){
* 被控制的语句;
* }
*
* for(初始化表达式;条件表达式;循环后增量表达式){
* 被控制的语句;
* }
* 初始化表达式的作用:
* 循环执行的过程中, 初始化表达式会有且只会被执行一次
* 条件表达式的作用:
* 要想执行循环体, 那么条件表达式必须为真
* 每次执行完循环体, 都会再次判断条件表达式是否为真
* 循环后增量表达式的作用:
* 第一次执行循环体的时候不会执行循环后增量表达式
* 只有循环体执行完之后才会执行循环后增量表达式
*
* for循环的执行流程
* 1.执行一次初始化表达式
* 2.判断条件表达式是否为真
* 3.如果条件表达式为真, 执行循环体
* 4.执行完循环体, 执行循环后增量表达式
* 5.重复2~4步
*/
// int num = 0;
// while(num < 10){
// printf("发射子弹%i\n", num);
// num++;
// }
// 1.编写循环的固定格式
// 2.将需要重复执行的代码放到{}中
// 3.控制循环如何结束
// int num = 0;
for(int num = 0;num < 10; num++){
printf("发射子弹%i\n", num);
// num++;
}
return 0;
}
#include
int main()
{
// 如果利用while循环实现发射子弹, 我们讲控制循环结束的变量, 定义在了while循环的外面
// 特点: 用于控制循环的变量, 在循环内部和循环外部都可以使用
// int num = 0;
// while(num < 10){
// printf("发射子弹%i\n", num);
// num++;
// }
// printf("num = %i\n", num);
// 如果利用for循环实现发射子弹, 我们将控制循环结束的变量, 定义在了for循环里面
// 特点: 用于控制循环的变量, 只能在循环里面使用, 不能在循环外面使用
for(int num = 0;num < 10; num++){
printf("发射子弹%i\n", num);
}
// printf("num = %i\n", num);
// 总结: 如果用于控制循环的变量, 在循环结束之后还需使用, 那么就使用while循环
// 如果用于控制循环的变量, 在循环结束之后不需要使用, 那么就使用for循环
// 规则: 在企业开发中, 一般情况下, 能用for就用for
return 0;
}
#include
int main()
{
/*
// 1.for循环和while循环一样, 可以省略大括号
// 如果for循环省略了大括号, 和while循环一样, 只能控制紧随其后的那条语句
// 如果for循环省略了大括号, 和while循环一样, 不能定义行的变量
// 和while循环一样, 任何数值都有真假性
// for(;0;)
// printf("被控制的语句\n");
// printf("不被控制的语句\n");
// for(;0;)
// int num = 666;
// 2.还是和while一样, for循环可以不写分号
// 如果写了分号, 一定不能写在()和{}之间
// for(;0;);{
// printf("被控制的语句\n");
// }
*/
// 3.for作用中变量的作用域问题
/*
int num = 666;
{
int num = 888;
printf("num = %i\n", num); // 888
}
printf("num = %i\n", num); // 666
*/
// 结论: 在循环体中定义和初始化表达式同名的变量不会报错
// for(int num = 0; num < 3; num++)
// {
// int num = 666;
// printf("num = %i\n", num); // 666
// }
// 结论: 在for的()中不能范围循环体中定义的变量
for(int num = 0; num < 3; count++)
{
int count = 666;
printf("num = %i\n", num); // 666
}
return 0;
}