005-循环结构(上)-C语言笔记

学习目标

1.【掌握】switch-case结构

2.【理解】case语句穿透

3.【理解】Xcode断点调试

4.【理解】while循环结构初体验

5.【掌握】while循环结构的应用

6.【理解】break和continue

一、switch-case结构

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
switch(表达式){
case常量表达式1:
    语句1;
    break;
case常量表达式2:
    语句2;...
    break;
case常量表达式n:
    语句n;
    break;
default:
    语句n+1;
    break;
}

计算表达式的值,并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后跳出switch语句,继续执行程序。如果逐个比较都没有相等的值,则执行default后的代码,然后跳出switch,继续执行程序。

和if-else的区别:

1.能够使用switch-case结构写的代码一定可以使用if结构写出来,但能够使用if结构写出来的代码,不一定可以使用switch-case结构。

2.switch-case结构 只能直接做等值判断,判断switch后的值是否和给定的case值相等。if结构,不仅可以做等值判断 还可以做范围判断。

3.如果是做范围判断推荐使用if语句,如果是做等值判断则推荐使用switch语句。

switch语句注意事项:

1.表达式的类型(case语句后的值)必须是整型或可以转变为整型的值(byte、short、char和int类型)。

2.值1、值2...值n只能为常数或常量,不能为变量。

3.功能代码部分可以写任意多句。

4.break关键字的意思是中断,指结束switch语句,break语句为可选。

5.case语句可以有任意多句,可以不用加括号“{}”。

6.default语句可以写在switch语句中的任意位置,功能类似于if语句中的else。

执行流程:在执行的过程中,如果遇到break语句,则跳出switch语句。如果没有遇到break语句,则一直执行到switch语句的结束。

7.case后面不可以直接定义变量,使用定义的这个变量的作用域 8)如果在case后面定义的变量必须加上大括号

二、case语句穿透

case语句执行的过程中,如果在每一个case语句后没有break,则一旦进入某个分支后就会一直执行到switch结束。break的作用是直接跳出switch语句,当然还有其他作用,待会整理循环结构笔记的时候再说。

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
    intyear=0,month=0;
    printf("请输入年份和月份:");
    scanf("%d%d",&year,&month);
 
    switch(month){
        case1:
        case3:
        case5:
        case7:
        case8:
        case10:
        case12:
            printf("%d年的%d月有31天\n",year,month);
            break;//这里就是使用了case穿透,1,3,5,7,8,10,12任意分支满足,都会执行他们后面所有代码,直到遇到break跳出switch
        case4:
        case6:
        case9:
        case11:
            printf("%d年的%d月有30天\n",year,month);
            break;
        case2:
            //判断年份是否为闰年.
            if(year%400==0||(year%4==0&&year%100!=0)){
                
                printf("%d年的%d月有29天\n",year,month);
            }else{
                printf("%d年的%d月有28天\n",year,month);
            }
            break;
        default:
            printf("你是都教授吗?\n");
            break;
    }

穿透的作用:不同case语句执行的代码相同,就可以使用穿透来简写代码。

三、Xcode断点调试

在程序运行期间,我们可以通过Xcode提供的断点调试监视CPU执行代码的步骤,变量的值的变化,以便我们排查BUG。下面图例就是使用断点调试功能的图解,不是很详细,将就吧。。。整理笔记时间太短了,还得做练习,断点调试教程我会单独在【Xcode教程】栏目发布的。

Xcode如何显示行号:

在Xcode -》 Preferences -》 Text Editing -》 第一个选项,勾选Lines numbers。

添加断点:

设置断点不起作用:

删除断点:拖动断点到空白处,即可彻底删除断点。

调试程序:Command + R 运行后,如果设置了断点,则直接进入调试视图

四、while循环结构初体验

循环结构可以将一段代码重复执行指定次数,C语言中的循环结构有while循环结构、do-while循环结构和for循环结构。当然由goto语句和if判断也能组成循环,不过全世界人民都不建议使用goto语句。今天我们要讲解的是while循环结构的语法和应用场景。

 
1
2
3
    while(条件表达式){
        那段需要被反复不停执行的代码,也叫循环体;
    }

执行过程:先判断while后面小括号里的表达式是否为真,为真则执行大括号里的循环体,然后再次判断while后面小括号里的表达式,为真再次继续执行,然后。。。直到while后面的表达式为假,则立即停止while循环。

关于死循环:

 
1
2
3
    while(1){
        printf("表达式一直为真。。。所以,死循环!");
    }

循环体一直反复不停的执行,永远不会结束,这种循环我们就叫做死循环。我们在写循环的时候,要特别注意合理利用死循环。

五、while循环结构的运用

第一种场景:确定循环体,也确定循环的次数。

 
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
intmain(){
    inti=0;
    
    //将一句话输出2万次
    while(i<20000){
        printf("欢迎你来六阿哥的博客\n");
        i++;
    }
    return0;
}

第二种场景:确定循环体,不确定循环次数,但确定循环结束或者继续的条件。

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <stdlib.h>
 
intmain(intargc,constchar*argv[]){
    
    intmoney=arc4random_uniform(101);
    intguess=-1;
    
    while(guess!=money){
        printf("请猜一下我给了你多少钱吧:");
        scanf("%d",&guess);
        if(guess>money){
            printf("你猜得太大了\n");
        }elseif(guess<money){
            printf("你猜得太小了\n");
        }
    }
    printf("恭喜你,正确\n");
    return0;
}

第三种场景:遍历指定范围的数,将每1个数据都找出来

 
1
2
3
4
5
    inti=100;
    while(i<=150){
        printf("%d\n",i);
        i++;
    }

第四种场景:找出指定范围中符合特定条件的数

 
1
2
3
4
5
6
7
8
9
10
11
12
    inti=100;
    while(i<=999){
        intbai=i/100;
        intshi=i%100/10;
        intge=i%10;
        //只取出满足条件的值
        if(bai *bai *bai+shi *shi *shi+ge *ge *ge==i){
            printf("%d\n",i);
        }
        
        i++;
    }

第五种场景:求累加和与平均值

 
1
2
3
4
5
6
7
8
    inti=1;
    intsum=0;
 
    while(i<=5){
        sum+=i;
        i++;
    }
    printf("sum = %d\n",sum);

第六种场景:求最大值和最小值

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
#include <limits.h>
 
intmain(intargc,constchar*argv[]){
  
    intmax=INT32_MIN;//先声明1个擂台变量.用来保存最大值的.
    inti=0;
    while(i<5){
        printf("请输入第%d个数:\n",i+1);
        intnum=0;
        scanf("%d",&num);
        //每循环1次 就拿刀了用户输入的1个数据.
        
        //如果输入的是第1个数据 那么就直接将这个数据赋值给max。
//        if(i == 0)
//        {
//            max  = num;
//        }
        //拿刀用户输入的这个数据 和擂台上的数据做比较.
        if(num>max){
            max  =num;
        }
        i++;
    }
    printf("max = %d\n",max);
    return0;
}

六、break和continue

break关键字:

可以使用在switch-case结构之中。如果在其中使用了break,就代表结束这个switch-case结构。

还可以使用在循环体之中。如果在循环体之中遇到了break,就会立即结束当前循环结构。

 
1
2
3
4
5
6
7
8
    inti=0;
    while(i<5){
        printf("我爱你们\n");
        if(i==2){
            break;//i等于2的时候直接结束while循环,最终i的值也只停留在2
        }
        i++;
    }

continue关键字:

只能用在循环体之中,如果在循环体之中遇到了continue,会立即结束本次循环。再判断循环条件,决定是否要继续下一次循环。

 
1
2
3
4
5
6
7
8
9
10
    inti=0;
    while(i<5){
        
        if(i==2){
            continue;//当i等于2的时候,直接结束本次循环
        }
        i++;//因为i等于2就结束了本次循环,所以i++没有被执行。最终i的值为2
        printf("%d\n",i);
 
    }

005-循环结构(上)-C语言笔记的更多相关文章

  1. 006-循环结构(下)-C语言笔记

    006-循环结构(下)-C语言笔记 学习目标 1.[掌握]do-while循环结构 2.[掌握]for循环结构 3.[掌握]嵌套循环 一.do-while循环结构 do-while语法:   1 2 ...

  2. Bash脚本编程学习笔记07:循环结构体

    本篇中涉及到算术运算,使用了$[]这种我未在官方手册中见到的用法,但是确实可用的,在此前的博文<Bash脚本编程学习笔记03:算术运算>中我有说明不要使用,不过自己忘记了.大家还是尽量使用 ...

  3. C语言-循环结构及break、continue

    循环结构 --1-- 结构循环 1.1 while循环 1.2 do…while循环 1.3 for循环 --2-- break和continue 2.1 break关键字 2.2 continue关 ...

  4. (1)c语言学习总结之从关键字到循环结构

    一.关键字和标示符 1.关键字:c规定的有特殊含义的单词(也就是系统起的名字),全部是小写,有32个; 由关键字引出数据类型和流程类型 1.分类: (1)数据类型:整型用int标示,字符型用char表 ...

  5. C#学习笔记11:C#中的顺序结构、分支结构、循环结构

    顺序结构: 代码从Main()函数开始运行,从上到下,一行一行的执行,不漏掉代码. Int a=6; int b=5; int c=a+b; Console.Write(c); 分支结构: 代码有可能 ...

  6. C语言第五次作业——循环结构

    C语言程序设计第五次作业--循环结构(1) (一)改错题 输出华氏摄氏温度转换表:输入两个整数lower和upper,输出一张华氏摄氏温度转换表,华氏温度的取值范围是{lower,upper},每次增 ...

  7. C语言程序设计第五次作业——循环结构

    (一)改错题 1.题目:输出华氏摄氏温度转换表:输入两个整数lower和upper,输出一张华氏摄氏温度转换表,华氏温度的取值范围是{lower,upper},每次增加2℉.计算公式如下: c = 5 ...

  8. Java程序设计基础笔记 • 【第5章 循环结构】

    全部章节   >>>> 本章目录 5.1 while循环结构 5.1.1 循环简介 5.1.2 while循环 5.1.3 while循环的使用 5.1.4 while循环的注 ...

  9. C语言中的循环结构与选择结构

    1. 为什么使用循环? 重复执行某段代码 2. while(条件){ 循环体: } 当条件成立的时候就执行循环体,条件不成立,就退出循环,继续执行while后面的语句 3. for ( 初始表达式 : ...

随机推荐

  1. 在MacOS上利用docker构建buildroot

    之前有听说过docker,但是一直没有使用过.最近终于下定决定使用了一下docker,感觉docker用于跨操作系统的软件工具使用还是比较友好的. 适用人群 本文忽略的部分Linux软件包安装的过程, ...

  2. WEB应用之httpd基础入门(四)

    前文我们聊到了httpd的虚拟主机实现,状态页的实现,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12570900.html:今天我们来聊一聊后面的常用基础配 ...

  3. 支持向量机(Support Vector Machine)

    本博客是针对Andrew NG在Coursera上发布的Machine Learning课程SVM部分的学习笔记. 目录 前言 最优化目标(Optimization Objective) 最大化边界的 ...

  4. spring源码阅读笔记06:bean加载之准备创建bean

    上文中我们学习了bean加载的整个过程,我们知道从spring容器中获取单例bean时会先从缓存尝试获取,如果缓存中不存在已经加载的单例bean就需要从头开始bean的创建,而bean的创建过程是非常 ...

  5. HDU - 1166 树状数组模板(线段树也写了一遍)

    题意: 汉语题就不说题意了,用到单点修改和区间查询(树状数组和线段树都可以) 思路: 树状数组的单点查询,单点修改和区间查询. 树状数组是巧妙运用二进制的规律建树,建树就相当于单点修改.这里面用到一个 ...

  6. netty实现群聊功能

    [概述] 实现一个网络群聊工具.参与聊天的客户端消息是通过服务端进行广播的. 主要由两块组成:聊天服务器端(ChatServer)和聊天客户端(ChatClient). 聊天服务器(ChatServe ...

  7. 高并发解决方案限流技术-----使用RateLimiter实现令牌桶限流

    1,RateLimiter是guava提供的基于令牌桶算法的实现类,可以非常简单的完成限流特技,并且根据系统的实际情况来调整生成token的速率.通常可应用于抢购限流防止冲垮系统:限制某接口.服务单位 ...

  8. nginx代理图片上传以及访问

    nginx代理图片上传 首先需要利用nginx代理图片访问参考 https://www.cnblogs.com/TJ21/p/12609017.html 编写接受文件的controller @Post ...

  9. Mob 之 短信验证集成 SMSSDK

    开相关发中总会遇到短信验证这些操作,这周没有来得及写新的东西,借此分享一篇以前学习短信验证的笔记,本文使用的是 Mob 提供的 SMSSDK . 下载 SMSSDK 官网下载地址:SMSSDK 集成 ...

  10. Python——五分钟理解函数式编程与闭包

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Python专题的第9篇文章,我们来聊聊Python的函数式编程与闭包. 函数式编程 函数式编程这个概念我们可能或多或少都听说过,刚听 ...