循环语句
作用
重复执行一段代码
特点
降低代码冗余度
提高代码复用率
提高编写效率
分类
while
do while
for
while
语法
:
while(条件表达式)
{
循环体:重复执行的代码
}
执行流程
:
先判断条件表达式是否为真
如果为真
,
执行循环体中的代码
,
如果为假结束循环
当循环体中的代码执行完毕后
,
再次判断条件表达式是否为真
如果为真
,
执行循环体中的代码
,
如果为假结束循环
....
do while
语法
:
do
{
循环体
}while(条件表达式);
执行流程:
先执行一次循环体
,
在判断条件表达式是否为真
如果为真
,
再次执行循环体
,
如果为假
,
结束循环
当循环体执行完毕后
,
再次判断条件表达式是否为真
...
面试题
while 与 do while的区别
while:先判断,在执行
do while:先执行,在判断
那个循环的循环体至少执行一次
do while
for
语法
:
for(表达式1;条件表达式2;表达式3)
{
循环体4
}
表达式1:初始化变量
条件表达式2:循环条件
表达式3:修改变量
循环体4:重复执行的代码
执行流程
:
1,2,4,3,2,4,3,.....2
死循环
条件表达式永远为真的循环,称为死循环
while(1)
{
}
循环嵌套
在循环语句的循环体中编写循环语句,称为循环嵌套
建议不要超过3层
流程控制语句
continue 跳过本次循环
for(int i = 0; i < 5; i++)
{
//xxx
printf("%d
开始
\n",i);
if(i == 2)
{
continue;
}
printf("%d
结束
\n",i);
}
break 跳出当前循环
for(int i = 0; i < 5; i++)
{
printf("%d
开始
\n",i);
if(i == 2)
{
break;
}
printf("%d
结束
\n",i);
}
goto 跳转到指定位置
语法
;
goto
自定义标记名
;
xxx
自定义标记名
:
yyy
return 后续补充
练习
1,打印100以内的偶数
方式
1:
for(int i = 0; i < 100; i++)
{
if(i % 2 == 0 && i != 0)
{
printf("%d\n",i);
}
}
方式
2:
f
or(int i = 1; i < 100; i++)
{
if(i % 2 == 0)
{
printf("%d\n",i);
}
}
方式
3:
for(int i = 0; i < 100; i+=2)
{
printf("%d\n",i);
}
2,打印100以内的数之和
//记录已经计算的数之和
int sum = 0;
//sum = sum + 0;
//sum = sum + 1;
//sum = sum + 2;
//...
//sum = sum + 99;
for(int i = 0; i < 100; i++)
{
sum = sum + i;
}
printf("sum = %d\n",sum);
3,计算10的阶乘
int num = 1;
//num = num * 1;
//num = num * 2;
//...
//num = num * 10;
for(int i = 1; i <= 10; i++)
{
num = num * i;
}
printf("10的阶乘结果为:%d\n",num);
4,计算100以内偶数和
int sum = 0;
for(int i = 0; i < 100; i++)
{
if(i % 2 == 0)
{
sum = sum + i;
}
}
printf("sum = %d\n",sum);
5,输出所有水仙花数
for(int i = 100; i < 1000; i++)
{
int g = i % 10;
int s = i / 10 % 10;
int b = i / 100;
if(g * g * g + s * s * s + b * b * b == i)
{
printf("%d是水仙花数\n",i);
}
}
6,输出符合以下条件的五位数
个位 == 万位
十位 == 千位
百位 == 个位 + 万位 + 十位 + 千位
for(int i = 10000; i < 100000; i++)
{
int g = i % 10;
int s = i / 10 % 10;
int b = i / 100 % 10;
int q = i / 1000 % 10;
int w = i / 10000 % 10;
if(g + s + q + w == b && g == w && s == q)
{
printf("%d是水仙花数\n",i);
}
}
7,打印以下图形(代码由vscode直接提取,缩进有问题,望体谅)
* * * *
* * * *
* * * *
* * * *
for (int i = 0; i < 4; i++)
{
for (int j = 0; j< 4; j++)
{
printf("*");
}
printf("\n");
}
*
* *
* * *
* * * *
for (int i = 0; i < 4; i++)
{
for (int j = 0; j <= i; j++)
{
printf("* ");
}
printf("\n");
}
*
* *
* *
* * * *
for (int i = 0; i < 4; i++)
{
for (int j = 0; j <= i; j++)
{
if (j==0||i==3||i==j)
{
printf("* ");
}
else
{
printf(" ");
}
}
printf("\n");
}
8,打印九九乘法表(代码由vscode直接提取,缩进有问题,望体谅)
#include<stdio.h>
int main(int argc, char const *argv[])
{
for (int i = 1; i < 10; i++)
{
for (int j = 1; j <= i; j++)
{
printf("%d*%d=%d\t",j,i,(j*i));
}
printf("\n");
}
return 0;
}
9,鸡兔同笼
键盘录入头和腿的数量
鸡与兔个几只
鸡
j
兔
t
头
h
腿
l
j + t = h
2j + 4t = l
j = h - t;
2(h - t) + 4t = l
2h - 2t + 4t = l;
2h + 2t = l;
2t = l - 2h;
t = (l - 2h) / 2;
j = h - t;
10,百文百鸡
公鸡
3
文
1
只
母鸡
2
文
1
只
小鸡
1
文
3
只
for(int g = 0; g < 34; g++)
{
for(int m = 0; m < 51; m++)
{
int x = 100 - g - m;
if(3 * g + 2 * m + x / 3 == 100 && x % 3 == 0)
{
printf("公鸡:%d只,母鸡:%d只,小鸡:%d只\n",g,m,x);
}
}
}