认识C语言 Day_5 >控制语句

简介: 认识C语言 Day_5 >控制语句

分支语句和循环语句

1.分支语句

  • if语句
  • switch语句

2.循环语句

  • while语句
  • for语句
  • do while语句

3.goto语句

今天我们更加细致的学习一下语句

1. 什么是语句?

C语言语句可分为以下五类:

  1. 表达式语句
  2. 函数调用语句
  3. 控制语句
  4. 复合语句
  5. 空语句
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
    3 + 5;//表达式语句
    printf("hello\n");//函数调用语句
    ;//空语句
    return 0;
}

大部分情况下,用分号结尾的就是一条语句

今天我们学习的是控制语句

2. 控制语句

控制语句用于控制程序的执行流程,以实现程序的各种结构方式,由特定的语句定义符组成。

之前的文章中我们提到过:C语言是一种结构化的程序设计语言

C语言支持三种结构

  • 顺序结构
  • 选择结构
  • 循环结构

C语言有九种控制语句,可以分为以下三类:

  1. 条件判断语句也叫分支语句:if语句、switch语句
  2. 循环执行语句:do while语句、while语句、for语句
  3. 转向语句:break语句、goto语句、continue语句、return语句

3. 分支语句(选择结构)

如果...否则...(这就是一个选择)

3.1 if语句

1. if语句的语法结构

语法结构:

if(表达式)

       语句;

那么if语句是如何执行的呢?以上面为例

括号中的表达式为,则执行语句;为则不执行

在C语言中,0表示假,非0表示真(而不是只有1为真)

if语句还有下面这两种语法结构

if(表达式)

       语句1;

else

       语句2;

//多分支

if(表达式1)

       语句1;

else if(表达式2)

       语句2;

else

       语句3;

同理,表达式为真执行,为假继续判断是否满足另外的表达式,判断是否执行

当判断结束后需要执行的语句大于一条的时候,可以用大括号"{   }"括起来,形成一个代码块

2. 悬空else

当你写了这个代码:

#include "stdio.h"
int main(){
    int a=0;
    int b=2;
    if(a==1)
        if(b==2)
            printf("hehe\n");
    else
        printf("haha\n");
    return 0;
}

很多小伙伴可能认为运行结果是打印haha

实际上,他的运行结果为空

为什么呢?

事实上,这个else匹配的是离他最近的这个if,如果把else故意提到前面,那么就会很容易误导到我们

if-else:else匹配的是离他最近的if

我们能够明显感受到,代码的风格不同,阅读起来的感觉就有很大的区别

因此,我们写出良好的代码风格是非常重要的

有些小伙伴会想,那我就想让这个else匹配最前边的if,那怎么做呢

我们可以改良一下这个代码

#include"stdio.h"
int main() {
    int a = 0;
    int b = 2;
    if (a == 1)
    {
        if (b == 2)
            printf("hehe\n");
    }
    else
            printf("haha\n");
    return 0;
}

这样改一下,运行结果就是这样了

所以,我们未来在写代码的时候,一定要注意我们的代码风格

3.2 switch语句

switch语句常常用于多分支的情况

比如:

输入1,输出星期一

输入2,输出星期二

输入3,输出星期三

输入4,输出星期四

输入5,输出星期五

输入6,输出星期六

输入7,输出星期日

这样用if-else写起来太复杂,那我们就得有不一样的语法形式

这就是switch语句

1. switch语句的语法结构

switch(整型表达式)

{

       语句项;

}

这个表达式只能是整型表达式

语句执行的时候,根据整型表达式的值选择对应的语句项执行

语句项是什么呢?

//是一些case语句
//如下

case 整型常量表达式:

       语句;

2. switch语句中的break语句

switch语句的执行逻辑是这样的,举个例子来看

int main() {
    int day;
    scanf("%d", &day);
    switch (day)
    {
    case 1:
        printf("星期一\n");
    case 2:
        printf("星期二\n");
    case 3:
        printf("星期三\n");
    case 4:
        printf("星期四\n");
    case 5:
        printf("星期五\n");
    case 6:
        printf("星期六\n");
    case 7:
        printf("星期日\n");
    }
    return 0;
}

他的运行结果是

当我们输入'5',switch根据day的值进入case5,执行case5的语句;

但是当case5的语句执行完后,并没有退出switch语句,会继续执行接下来的case6、case7;

如果我们想只执行该语句的效果,那么我们就需要使用break语句;

break语句的作用是:在switch语句中,执行完该语句项,跳出整个switch语句

我们可以改良一下这个代码

int main() {
    int day;
    scanf("%d", &day);
    switch (day)
    {
    case 1:
        printf("星期一\n");
        break;
    case 2:
        printf("星期二\n");
        break;
    case 3:
        printf("星期三\n");
        break;
    case 4:
        printf("星期四\n");
        break;
    case 5:
        printf("星期五\n");
        break;
    case 6:
        printf("星期六\n");
        break;
    case 7:
        printf("星期日\n");
        break;
    }
    return 0;
}

这下他的运行结果就是这样了

加入break,才能实现switch语句的分支效果

case仅仅决定他的入口

3. switch语句中的default

default用在switch语法中,如果没有在case 1/2/3/xxx范围内,则执行default,这个思路是为了保险,为了程序少出bug

default是最后一种可能,所以不用再加 break

4. 循环语句

循环结构由三个要素组成,分别为循环变量、循环体和循环终止条件。

  • 循环结构:也称为重复结构,程序中反复执行的一组指令或程序段
  • 循环体:被反复执行的程序段
  • 循环变量:用来控制循环是否继续进行的变量

常见的循环结构有三种,为for循环,while循环,以及do while循环。

4.1 while循环

1. while语句的语法结构

while(表达式)

       循环语句;

2. 循环执行步骤

  • 先进行循环控制变量初始化(在while之前)
  • 判断循环终止条件,如果判断结果为真,则进入第三步;如果为假则不执行循环体
  • 执行循环体
  • 执行循环控制变量增量,转入第二步

3. continue在while循环中的作用

continue是用于终止本次循环,也就是本次循环中continue后面的代码不会再执行,而是直接跳转到while语句的判断部分,进行下一次循环的入口判断

4.2 for循环

1. for语句的语法结构

for(表达式1;表达式2;表达式3)

       循环语句;

  • 表达式1是初始化部分
  • 表达式2是判断部分
  • 表达式3是调整部分

如果省略了判断部分,那说明判断部分恒为真,即

for(表达式1;;表达式3)

       循环语句;

2. 循环执行步骤

  • 先进行循环控制变量初始化
  • 执行循环终止条件,如果判断结果为真,则进入第三步;如果为假则循环终止并退出
  • 执行循环体
  • 执行循环控制变量增量,转入第二步

4.3 do while循环

1. do while语句的语法结构

do

       循环语句;

while(表达式);

2. 循环执行步骤

  • 先进行循环控制变量初始化(在do while之前)
  • 执行循环体
  • 执行循环控制变量增量
  • 判断循环终止条件,如果判断结果为真,则返回第二步;如果为假则直接退出循环

3. do while循环中的continue

do while中的break和continue与while循环中的作用一模一样

break都是用于终止循环

continue都是跳过本次循环后边的代码,直接去判断部分

4.4 小总结

简单来说,while循环和for循环都是先判断表达式,后执行循环体(本质上没太大差别);

而do while循环是先执行循环体后判断表达式

5. 结束

那么今天的学习就到这里咯,今天我们更深入的剖析了五种语句的知识

小杜跟各位小伙伴在一起成长,祝我们都能成为大牛!

                                                                                                                               //小杜的成长之路

相关文章
|
7月前
|
程序员 C语言
C语言控制语句详解
C语言控制语句详解
110 0
|
7月前
|
C语言
C语言中的控制语句(1)
C语言中的控制语句(1)
|
C语言
C语言控制语句
C语言控制语句
65 0
|
5月前
|
C语言
C语言7 控制语句
C语言7 控制语句
24 1
|
存储 C语言
C语言入门(2)——数据类型、运算符、类型转换、控制语句
char short int long flout(默认保存小数点后6位,并且可以四舍五入) double 输出int类型的值%d 输出字符用%c 输出long用%ld 输出float用%f 输出double用%lf
145 0
|
7月前
|
C语言
C语言控制语句(2)
C语言控制语句(2)
|
7月前
|
C语言
在C语言中,for语句是一种常用的循环结构控制语句
在C语言中,for语句是一种常用的循环结构控制语句
75 0
|
C语言
C语言—控制语句与函数
本文介绍了C语言中的控制语句和函数。
72 0
|
C语言
C语言之控制语句的详解
C语言之控制语句的详解
90 0
|
编译器 C语言
初阶C语言 第一章-------《控制语句》(while , for , do while.....) 知识点+思维导图+基本练习题+超详细(getchar..,system,)+通俗易懂(建议收藏)
初阶C语言 第一章-------《控制语句》(while , for , do while.....) 知识点+思维导图+基本练习题+超详细(getchar..,system,)+通俗易懂(建议收藏)