for循环的基本应用 嵌套循环 do while循环 和while循环的区别 面试题

day for循环

for循环与do-while 循环

do - while循环

  1. do …while循环的语法
do{
    循环体;
    }while(); //此处有一个分号!!!
    注意  do - while循环最后面必须有一个分号
  1. do - while 循环结构和while结构的最大区别是什么?
    while : 当型循环
    do - while: 直到型循环,傻瓜式循环
    无论如何,do- while 一定比while循环多执行一次

    练习

        *while 型循环*
         int num = 5;
          while(num >0)
          {
           printf("吃饭啦\n");
               num--;
          }
    
        *do - while 型循环*
    
         int num = 5;
         do
         {
           printf("吃饭啦\n");
             num--;
         }while(num > 0);
    
  2. * do - while 循环一般应用在循环至少执行一次的时候*

    * do-while 和while循环的区别 *

    1. 相同点: 都是循环结构,目的是将一段代码反复的执行指定的次数
      2.不同点:
      2.1 do while 循环是先执行后判断
      while循环是结构是 先判断 在执行
      2.2 在第一次判断天剑都不成立的情况下
      do- while 循环会执行一次
      while 循环 不会执行
      结论: do - while 循环至少执行一次

for循环的使用

* 格式*

for (初始化表达式; 判断条件; 增量语句)
{
    循环体;
}

** while循环和for循环之间的额转换

 1>用for循环打印10次hello world
    int main()
    {
        for (int i = 0; i<10; i++) {
            printf("hello world\n");
        }
        return 0;]]
    }


    2>while循环打印10次hello world
    int main()
    {
        int i = 0;
        while (i < 10) {
            printf("hello world!\n");
            i++;
        }


        return 0;
    }

    3>for循环转换成while循环
    int main()
    {
        int i = 0
        for (;i<10;) {
            printf("hello world\n");
            i++
        }
        return 0;
    }

for循环练习

1.利用for循环求1-100之间的偶数的累加和


        int sum = 0;//求和的变量
        for (int i = 1; i < 101; i++) {

            if (i % 2 == 0) {//判断这个数 是不是偶数

                //            printf("%d ",i);
                //把打印去掉 直接加到某一个容器
                sum+=i;
            }
        }

        printf("sum = %d\n",sum);

2.利用for循环求100-999之间的水仙花数

    for (int i = 100; i < 1000; i++) {
        //水仙花数: 各个位上的立方和 等于本身的数

        /*
         456:
         个位:456%10 -->6
         十位:456/10%10--->5
         百位:456/100 --->4

         */
        int ge = i % 10;
        int shi = i / 10 % 10;
        int bai = i / 100;

        if ( (ge*ge*ge + shi*shi*shi + bai*bai*bai) == i) {
            printf("%d ",i);
        }
    }

for循环的额注意事项

  • 如果在三个表达式中已经修改了循环增量的值 那么就不在循环体内修改循环增量的值了
  • 第三个表达式后面没有分号
  • 三个表达是的位置是固定的
    • 第一个是初始化表达式
    • 第二个是循环条件
    • 第三个是 新欢后改变增量的表达式
  • 三个表达式都可以省略,但是分号不能省略
    • 如果第二个表达式省略,那么循环条件默认是成立的
  • 这个表达式可以写任意的c语句

关于省略大括号
1. 不建议省略,这里我一代而过吧
2. 如果语句后面只有一句代码, 那么这个大括号可以省略
3. 单独一个分号也是一个语

嵌套循环

  • 什么是嵌套循环
    • 一个循环的循环体中 含有另外一个循环
      1. 嵌套循环的特点
    • 外层循环执行一次,内存循环执行所有次
      1. 嵌套循环的使用场景
    • 一件事要完成一次 必须完成另外一件事n次

下面是我写的关于各种三角形的例子大家能看懂就好

//
//  main.c
//  打印三角形
//
//  Created by 李典 on 16/7/27.
//  Copyright © 2016年 李典. All rights reserved.
/*

 打印三角形 各种三角形


 */

#include <stdio.h>
void zuoZhiJiao();
void youZhiJiao();
void sanJiaoXing();
void dunJiaoSanJiaoXing();
void shuZi();
void shuZi1();
int main(int argc, const char * argv[])
{
    printf("直角三角形\n");
    zuoZhiJiao();
    printf("右直角三角形\n");
    youZhiJiao();
    printf("三角形\n");
    sanJiaoXing();
    printf("钝角三角形\n");
    dunJiaoSanJiaoXing();
    printf("数字每列一样\n");
    shuZi();
    printf("数字叠加\n");
    shuZi1();
    return 0;
}


/**

 *
 **
 ***
 ****

 */
void zuoZhiJiao()
{

    for (int i = 1; i < 5; i++)
    {
        for (int j = 0; j < i; j++) {
            printf("* ");
        }
        printf("\n");
    }
}
/**

----*
---**
--***
-****

 */
void youZhiJiao()
{
    for (int i = 1; i < 5; i++)
    {
        for (int j = 5; j > i; j--)
        {
//            printf("-");
             printf("  ");

        }
        for (int q = 0; q < i; q++) {
            printf("* ");
        }
        printf("\n");
    }
}

/**

---*        1
--***       3
-*****      5
*******     7

 */
void sanJiaoXing()
{
    for (int i = 1; i < 5; i++)
    {
        for (int j = 5; j > i; j--) {
//            printf("-");
             printf("  ");
        }
        for (int q = 0; q < 2*i - 1 ; q++) {
            printf("* ");
        }
        printf("\n");
    }

}
/**
------*
----**
--***
****

 */
void dunJiaoSanJiaoXing()
{
    for (int i = 1; i < 5 ; i++)
    {
        for (int j = 8; j > 2*i - 1; j--)
        {
//            printf("-");
            printf("  ");
        }
        for (int q = 0; q < i; q++) {
            printf("* ");
        }
        printf("\n");
    }
}

 /*
  1
  2 2
  3 3 3
  4 4 4 4
  5 5 5 5 5

  */
void shuZi()
{
    for(int i = 1; i < 6; i++)
    {
        for(int j = 1; j < i + 1; j++)
        {

            printf("%d ",i);
        }
        printf("\n");
    }
}

/*
 1
 1 2
 1 2 3
 1 2 3 4
 1 2 3 4 5
 1 2 3 4 5 6
 */
 void shuZi1()
{
    for(int i = 1; i < 7;i++)
    {
        for(int j = 1; j < i+1; j++)
        {
            printf("%d ",j);
        }
        printf("\n");
    }
}

跟大家分享一道今天在网上看到的面试题

int main()
    {

        for (int i = 0; i < 10; i++) {

            for (int j = 0; j < 10; j++) {
                //这里写一段代码,结束外层循环
            }
        }

        return 0;
    }

### 哈哈 思考一下吧 答案明天 为大家揭晓

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值