C循环

作者: 晓晓桑 | 来源:发表于2020-04-09 20:14 被阅读0次

while

入口条件循环

int main(void) {

   int a = 0;
   while (a <= 5) {
       printf("%d\n", a);
       a++;
   }
   return 0;
}

结果

0
1
2
3
4
5
条件的意义

真:非0;
假:0;

int main(void) {

    int a = 0;
    while (a <= 5) {
        printf("%d\n", a <= 5);
        a++;
    }
    printf("%d\n", a <= 5);
    return 0;
}
image.png
&& || !

真&&真=真
假&&真=假
真&&假=假
假&&假=假

真||真=真
真||假=真
假||真=真
假||假=假

!真=假
!假=真

注意点:

  • &&优先级>||
  • && 遇到0就不再判断了
  • ||遇到1就不再判断了
int main(void) {
    int a = 0, b = 2;
    (a = 2 > 1) || (b ++);
    printf("%d\n%d", a,b); //a:1,b:2
    return 0;
}
循环控制变量的三要素

循环控制变量就是while里面的表达式。
1.循环控制变量必须要有初始值;
2.真==非0,假==0;true和false
3.循环控制变量的值要有规律的变化。

死循环

条件一直为true或者非0

#include <stdio.h>
#include <float.h>
#include <stdlib.h>
#include <stdbool.h>

int main(void) {
    int a = 0;
    while (true) { //这里这个true是stdbool里面的,值=1
        printf("%d\n", a); //a:1,b:2
        a++;
    }
    return 0;
}
image.png

for

入口条件循环


image.png
int main(void) {
    int a = 0;

    //java的快捷键fori生成
    for (int t = 0; t < 6; t++) {
        printf("%d ", t); //0 1 2 3 4 5
    }
    printf("\n");

    //i提出来
    int i;
    for (i = 0; i < 6; i++) {
        printf("%d ", i);//0 1 2 3 4 5
    }
    printf("\n");

    int m = 1;
    //语句这样也可以 这个地方可以写其他表达式,甚至写个函数,此处只执行一次
    for (printf("这个地方可以写其他表达式,甚至写个函数,此处只执行一次\n"); m < 6; m++) {
        printf("%d ", m);//1 2 3 4 5
    }
    printf("\n");

    //当j初始化之后,第一个地方可以不写
    int j = 0;
    for (; j < 6; j++) {
        printf("%d ", j);//0 1 2 3 4 5
    }
    printf("\n");

    //第二个啥也不写,死循环
//    for (j=0; ; j++) {
//       printf("---%d", i);
//    }
//    printf("\n");

    //第三个啥也不写
    for (int j = 0; j < 6;) {
        printf("%d ", i);
        j++;//挪到里面也行
    }
    printf("\n");
    //可以进行多条赋值语句,直接逗号隔开
    int e = 1, f = 1;
    for (; e < 2, f < 4; e++, f++) {
        printf("%d,%d|", e, f); //1,1|2,2|3,3|
    }
    //死循环,跟while(1)一样
    for(;;){
    }
    return 0;
}
循环嵌套
int main(void) {
    int a = 0;
    int count = 0;
    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 3; j++) {
            count++;
        }
    }
    printf("一共循环的次数%d\n", count);//4*3=12
    return 0;
}
int main(void) {

    int a = 0;
    int count = 0;
    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 3; j++) {
            count++;
        }
    }
    printf("一共循环的次数%d\n", count);//4*3=12

    int i = 0;
    int j = 0;
    int count2 = 0;
    while (i < 1) {
        while (j < 3) {
            count2++;
            j++;
        }
        i++;
    }
    //结果是3(这样写结果就是j的循环次数,j循环完成,i=1时已经循环不到里面了
    // 嵌套要把j=0放到while (j < 3)前面
    printf("一共循环的次数%d\n", count2);

    i = 0;
    j = 0;
    int count3 = 0;
    while (i < 4) {
        int j = 0;
        while (j < 3) {
            count3++;
            j++;
        }
        i++;
    }
    printf("一共循环的次数%d\n", count3);//结果是4*3=12,


    return 0;
}

do while

退出条件循环

int main(void) {

    //do while先走代码块,再走条件
    int i = 5;
    do {
        printf("%d", i);//打印5
        i++;
    } while (i < 5);

    //while先走条件,再走代码块
    i = 5;
    while (i < 5) {
        printf("%d", i); //不打印
        i++;
    }
    return 0;
}

break 和 continue

break
  • 跳出循环。
  • 如果是嵌套循环,是跳出所在的循环。
    *循环之外不可以写break。
int main(void) {
    //do while先走代码块,再走条件
    for (int i = 0; i < 6; ++i) {
        printf("%d\n", i);
        break;
        //这行代码在break之后,所以不执行了
        printf("这行代码在break之后,所以不执行了");
    }

    //嵌套循环
    for (int i = 0; i < 3; ++i) {
        for (int j = 0; j < 3; ++j) {
            printf("haha %d,%d\n ", i, j);
            break;
        }
    }
    return 0;
}
![image.png](https://img.haomeiwen.com/i13096235/17b346479af597de.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

continue

执行下一次循环

int main(void) {
    for (int i = 0; i < 6; ++i) {
        printf("前%d ",i);
        continue;
        printf("后\n");
    }
    return 0;
}

执行结果


image.png

打印奇偶数

int main(void) {
    //打印偶数
    for (int i = 0; i < 6; ++i) {
        if (i % 2 == 0) {
            printf("%d", i);
            continue;
        }
    }
    printf("\n");
    //打印奇数
    for (int i = 0; i < 6; ++i) {
        if (i % 2 == 0) {
            continue;
        }
        printf("%d", i);
    }
    return 0;
}
逗号表达式

逗号表达式,会把里面的表达式都执行一遍,然后最后的结果是最右边这个数据

int main(void) {
    //逗号表达式,会把里面的表达式都执行一遍,然后最后的结果是最右边这个数据
    int a = 2;
    int b = (a++, 2, 3, 4);
    printf("a=%d,b=%d", a,b); //运行结果是 a=3,b=4
    return 0;
}

逗号表达式比赋值表达式的优先级低。

int main(void) {
    //逗号表达式比赋值表达式的优先级低。
    int a, b, c, d;
    c = a = 1, 6, b = a; //这个地方先算c=a=1,再算6,然后b=a
    d = (a = 1, 6, b = a);//这个是先算a=1,再算6,然后b=a,最后把最右边的表达式b赋值给d
    printf("%d,%d",c,d);//结果虽然都是1,但是意义不一样哦
    return 0;
}
逗号表达式错误的表达

int c= ,就不能用逗号表达式, 得加括号


image.png

相关文章

  • C for 循环

    for循环的一般形式为: 执行过程如下: 先求解表达式1。 求解表达式2,若其值为真(非0),则执行循环体,否则结...

  • C循环

    while 入口条件循环 结果 条件的意义 真:非0;假:0; && || ! 真&&真=真假&&真=假真&&...

  • C++循环与决策

    Tags:C++,《C++ Primer Plus》笔记 一、循环## 语法### C++中有三种循环语句,语法与...

  • Bash 流程控制之术

    一、循环结构 1.1 for 循环 列表 for 循环: 不带列表的 for 循环: 类似 C 语言风格的 for...

  • C++循环

    C++中的循环主要包含while循环、for循环、do…while循环以及嵌套循环,while循环就是当给定条件为...

  • iOS 循环引用导致内存泄漏

    首先我们需要先了解什么是循环引用 循环引用简单来说循环引用就是 A持有B B持有C C持有A ,因为相互持有,导致...

  • C语言-循环语句 选择语句

    今天学习了C语言的循环语句,C语言中循环语句有for, while ,do while ,语句。 条件语句if ...

  • 数据结构-环形缓冲区-- Circular Buffer(Rin

    环形缓冲区-- Circular Buffer(Ring Buffer)C/C++ 可用 什么是循环缓冲区 循环缓...

  • 【编程】python入门---while循环01

    while循环 语法: Ctrl + C: 强制结束死循环 for 循环:输出1到10 一、利用while循环输出...

  • C语言-基础篇

    目的 掌握c语言基础,main 函数,编译过程,变量,if语句,for循环,while循环,do while循环 ...

网友评论

      本文标题:C循环

      本文链接:https://www.haomeiwen.com/subject/jrxaphtx.html