C语言——循环语句

循环语句

作用

重复执行一段代码


特点

降低代码冗余度

提高代码复用率

提高编写效率


分类

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);
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值