C语言深入讲解语句与选择结构的使用

目录
  • 知识点1-语句
    • 1.1 语句
      • 1.表达式语句
      • 2.控制语句
      • 3.空语句
      • 4.复合语句
  • 知识点2-选择结构
    • 2.1 if语句
      • 1.if语句的单分支
      • 2.if语句的双分支
      • 3.if语句的多分支
      • 4.if语句与代码块
      • 5.悬空else
    • 2.2switch语句
      • 1.switch语句的定义
      • 2.switch语句的实战案例

知识点1-语句

1.1 语句

1.表达式语句

由一个表达式加分号构成一个表达式语句,其一般形式如下:

表达式 ;

Q1:什么是表达式?

A1:表达式就是C语言中由运算符和数据构成的式子;表达式运算的结果称为表达式的值,以下都是一些常见的表达式。

//表达式
1
-5
4+20
x = q++ % 3 
a*(b + c/d)/20 
q > 3

kiko:因此表达式语句就是在上面这些表达式后面加一个分号就完事了~

//表达式语句
1;
-5;
4+20;
x = q++ % 3 ;
a*(b + c/d)/20 ;
q > 3;

2.控制语句

由名字可见,控制语句用于控制程序的执行过程,它是由特定的语句定义的,我个人将C语言中的控制语句分为以下3类:

  • 选择语句:if-else语句、switch-case语句。
  • 循环语句:while语句、do-while语句、break语句。
  • 跳转语句:break语句、goto语句、continue语句。

本期我们就讲三类语句中的第一类,也就是选择语句!

3.空语句

空语句是只有一个分号的语句,它在程序中什么也不做,可能就是起到一个占位作用。

; //空语句
for( int i=0; i<10; i++ )
; //循环体为空

4.复合语句

可以用花括号{ }将一系列语句括起来,使其大功能上相当于一条语句,这就是语句块。语句块中可以有变量声明,声明必须位于块的开始。

int x;
int y;
x = 6;
{   int z = 100;
    y = z/x;
    printf("%d \n", y);
}   //从大功能上看,{}里面的三条语句相当于一条语句

知识点2-选择结构

2.1 if语句

Q1:什么是if语句?

A1:if语句提供一种二分支选择的控制流程,它根据表达式的值来决定执行两个不同情况下的其中一个分支程序段。

1.if语句的单分支

单分支就是只有一个分支,当给定的条件满足时,执行一个语句1;当条件不满足时,不进行任何操作,因此只有语句1一种输出,因此我称之为单分支。

if(表达式)
语句1;//如果为真,执行语句;否则不执行
//C语言规定:0为假,非0为真

案例1:如果小于18岁,输出未成年。

//该情况只有一个分支,即只有小于18这种情况输出。
#include<stdio.h>
int main()
{
    int age=10;
    if(age<18)
     printf("未成年\n");
     return 0;
}

2.if语句的双分支

双分支就是有两个分支,当给定的条件满足时,执行语句1;当条件不满足时,执行语句2。因此有2种不同的输出,称之为双分支。

if(表达式)
语句1;//表达式为真,执行语句1
else
语句2;//否则,执行语句2

案例2:小于18打印未成年;否则打印成年。

//该情况只有两个分支,即只有未成年、成年两种不同的输出结果
#include<stdio.h>
int main()
{
    int age=20;
    if(age<18)//年龄小于18时打印未成年
     printf("未成年\n");
     else//否则打印成年
     printf("成年\n");
     return 0;
}//由于我们将age初始化为20,因此最终会选择打印“成年”

3.if语句的多分支

多分支就是有多个分支,这边使用else if来使得if语句也可以进行多个分支的判断,我们在程序中只要通过增加else if,就可以增加if语句判断的分支数。

如下例中,当表达式1满足执行语句1;如果不满足表达式1,满足表达式2,执行语句2;其余情况执行语句3,有3种不同的分支,因此我们称之为多分支。

if(表达式1)//表达式1为真,执行语句1
语句1;
else if(表达式2)//表达式1为假,表达式2为真,执行语句2
语句2;
else//其余所有情况,执行语句3
语句3;

案例3:输入年龄后,判断一个人的年龄范围并输出其结果(共有5种可能:未成年、青年、壮年、老年、老不死)

//有5种不同的输出,因此判断为多分支,需要结合else if
#include<stdio.h>
int main()
{
    int age=0;
    scanf("%d",&age);
    if(age<18)
     printf("未成年\n");
     else if (18<=age && age<28)
     printf("青年\n");
     else if(age>=50 && age<50)
     printf("壮年\n");
     else if(age>=50 && age<90)
     printf("老年\n");
     else//最后一个else也可以省略
     printf("老不死");
     return 0;
}

4.if语句与代码块

如果条件成立,要执行多条语句,应该使用代码块{ }。

#include <stdio.h>
int main()
{
    if(表达式)
   {
        语句列表1;//包含多条语句
   }
    else
   {
        语句列表2;//包含多条语句
   }
    return 0; 
}

案例4:输入年龄后,判断一个人的年龄范围并输出其结果(共有5种可能:未成年、青年、壮年、老年、老不死)

#include<stdio.h>
int main()
{
    int age=10;
    if(age<18)                //情况A(包含多条代码,使用代码块)
     {
     printf("未成年\n");
     printf("不能谈恋爱\n");
     }//一对大括号,就是一个代码块
     else                     //情况B(包含多条代码,使用代码块)
     {
     if (18<=age && age<28)
     printf("青年\n");
     else if(age>=50 && age<50)
     printf("壮年\n");
     else if(age>=50 && age<90)
     printf("老年\n");
     else//最后一个else也可以省略
     printf("老顽童");
     }
    return 0;
}

5.悬空else

Q1:什么是悬空else?

A1:else是和它离的最近的if匹配的,我们可以看一看下面这道例题来深入了解。

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

从程序的书写形式上来看,if (a==1)else printf("haha\n"); 是匹配的,按这个逻辑,因为a=0不满足第一个if条件,因此会直接进入else printf("haha\n");,本题最终应当输出haha,可真的如此吗?

结果居然是什么都没有输出。这是因为else是和离它最近if相匹配的,也就是与if(b==1)相匹配,因此上图橙色方框圈起来的这几行代码都属于if (a==1) 条件满足的情况,而本题a初始化为0,不满足a==1,因此就不会有任何输出。

2.2switch语句

1.switch语句的定义

Q1:什么是switch语句?

A1:switch语句是一种专门进行多分支选择的分支控制语句。上面介绍了if语句使用else if可以实现多分支,但是具体实现起来程序冗长且难以理解,而采用switch语句实现分支则结构更清晰。switch语句的一般语法结构如下:

switch(表达式)
{
case 常量表达式1:语句1;(break;)
case 常量表达式2:语句2;(break;)
···
case 常量表达式n:语句n;(break;)
default:语句n+1;
}

switch语句的执行过程:

  • 计算switch表达式的值。
  • 将该值与case后面的常量表达式的值相比较,当switch表达式的值与某个常量表达式i的值一致时,就从该case后的语句i开始执行,直到遇到break语句或整个switch结束。
  • 若switch表达式与任何常量表达式的值均不同时,则执行default后面的语句或执行switch结构的后续语句。

上述switch结构的几点注意:

(1)switch 后面的圆括号内的表达式类型一般为整型、字符型和枚举型,不能为浮点型。

(2)case标签: case后必须跟整数类型(包括char类型)的常量或整型常量表达式。

Q2:case后为什么可以跟char类型?

A2:因为ASCII字符在内存中是以整型存储的!

(3)break语句:它使程序控制跳出当前循环或switch语句的剩余部分,它实际效果是把语句列表划分为不同的分支部分。

(4)default子句:当 switch表达式的值并不匹配所有case标签的值时,这个default 子句后面的语句就会执行。所以,每个switch语句中只能出现一条default子句。

2.switch语句的实战案例

案例1.0 选择打印星期

//该程序在接收到整数1-7后,会打印相对应星期,然后运行到break,跳出switch语句
#include<stdio.h>
int main()
{
    int day = 0;
    scanf("%d", &day);
    switch (day)//day必须定义为整型
    {
    case 1+0 :printf("星期1\n");break;//case1+0 √ case后跟整型常量就行
    case 2:printf("星期2\n");break;
    case 3:printf("星期3\n");break;
    case 4:printf("星期4\n");break;
    case 5:printf("星期5\n");break;
    case 6:printf("星期6\n");break;
    case 7:printf("星期7\n");break;
    }
    return 0;
}

案例1.1 改进打印星期

题目变化:输入1-5打印工作日;输入6-7打印休息日.

巧妙利用case语句未遇到break程序会持续进行,因此无论从case1进入还是从case5进入,最终都会在printf("工作日")下一行的break结束switch语句;case6&case7同理。

案例2.0:求求看最后m与n的值为多少?

#include<stdio.h>
int main()
{
    int n = 1;
    int m = 2;
    switch (n)
    {
    case 1:m++;
    case 2:n++;
    case 3:
        switch (n)
        {
        case 1:n++;
        case 2:m++; n++; break;
        }
    case 4:m++;
    default:
        break;
    }
    printf("m=%d , n=%d \n", m, n);
    return 0;
}

这一题的细节主要在于理解switch的嵌套,我们一步一步分析:

  • 进入case1,m++,m变为3。
  • 进入case2,n++,n变为2。
  • 进入case3,这里嵌套了一个子switch语句,由于此时n为2,因此进入子case2,m++,n++,遇到break跳出子switch语句,此时m为4,n为3。
  • 进入case4,m++,m变为5,由于没有遇到break继续向下执行。
  • 遇到default中的break,结束switch语句,打印结果,此时m=5,n=3。

到此这篇关于C语言深入讲解语句与选择结构的使用的文章就介绍到这了,更多相关C语言语句与选择结构内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C语言超细致讲解分支语句

    目录 前言 C语言的语句 爱选择的分支家族 无所不能的大哥if 另辟蹊径的小弟switch 前言 从今天开始,我将不间断的为大家分享我学C的历程,今天为大家分享的是分支语句. C语言的语句 C语句可分为以下五类: 1. 表达式语句 2. 函数调用语句 3. 控制语句 4. 复合语句 5. 空语句 今天我要分享的是:控制语句 那么什么是控制语句呢? 简单来说便是控制程序执行流程的,在C语言中有三大家族. 今天先为大家介绍:爱选择的分支家族,后续将为大家介绍一根筋的循环家族和爱转弯的转向家族. 爱选

  • C语言简明分析选择结构和循环结构的使用

    目录 一.程序中的选择结构(if) 二.switch多分支选择语句 三.while循环结构 四.do...while 与 for 五.break和continue 一.程序中的选择结构(if) if的用法 上代码: #include <stdio.h> int main() { short a = 1; short b = 2; int c = a - b; if( c > 0 ) { printf("a > b\n"); } else { printf(&qu

  • C语言详细分析讲解流程控制语句用法

    目录 一.分支语句 1.if语句 2.switch语句 二.循环语句 1.for语句 2.break和continue语句 3.循环嵌套 4.while和do…while语句 一.分支语句 1.if语句 流程控制语句可以让程序中的语句不再从上到下逐条执行 分支是一种流程控制语句,可以把程序中某些语句忽略掉不去执行 if关键字可以用来编写分支语句,只有当表达式为真时,才会执行对应语句 如果多个分支的逻辑表达式之间存在互斥关系,则可以采用else关键字把他们合并成一个分支语句 一个分支语句中的多个逻

  • 一篇文章带你了解C语言的选择结构

    目录 一.if-else语句 1.单选择 2.双选择 3.多选择 二.switch语句 总结 一.if-else语句 1.单选择 单选择通过if语句就可以实现,if语句的语法及执行流程如下: if(表达式) { 代码块(表达式返回值为真时执行) } 当程序运行到if语句时,会由表达式进行判定,诺表达式的返回值为真,则进入代码块执行语句,为假便跳过代码块继续执行.(当代码块语句仅有一句时,可以省略大括号.) 举一个简单的例子 例:判断10是否为3的倍数 int main() { int i = 1

  • C语言实例讲解选择语句的使用

    目录 一.if…else选择语句详解 1. 图示if…else流程 2. if…else代码流程 3. if…else的三种情况 3.1 if语句 3.2 if…else语句 4. 代码示例 二.三目运算符(? :)详解 三.switch…case选择语句详解 1. 图示switch…case流程 2. switch…case代码流程 3. 代码示例 一.if…else选择语句详解 1. 图示if…else流程 用图示来表示 if…else 语句其实就是当条件为真的时候执行某一部分的内容,当条件

  • C语言超细致讲解循环语句

    目录 C语言循环家族 while循环 for循环 dowhile循环 C语言循环家族 家族成员有while语句,for语句和do....while语句.这些成员都能实现循环,但又各有特点.今天就由我带领大家一起认识他们吧! while循环 while语句的基本格式: while(表达式) { 循环语句; } while语句执行的流程: while语句的理解: 1当表达式为假时(0为假),不执行while语句中的内容. 2当表达式为真的时候(非0),便循环执行while循环语句的内容,直到表达式为

  • C语言if选择结构语句详解

    目录 一.选择结构功能 二.选择结构形式 三.选择结构分类 1.单分支选择结构 2.双分支选择结构 3.多分支选择结构 四.条件表达式 总结 一.选择结构功能 根据给定的判断条件,控制程序执行流程的语句. 二.选择结构形式 单分支:根据给定条件,决定是否执行一段语句. 双分支:根据给定条件,执行两条路径中的一条. 多分支:根据给定条件,决定执行其中一条路径. 三.选择结构分类 1.单分支选择结构 ①功能 根据给定表达式决定执行操作或者跳过操作. ②单分支if语句格式 ③一般形式 if(表达式)

  • C语言深入讲解语句与选择结构的使用

    目录 知识点1-语句 1.1 语句 1.表达式语句 2.控制语句 3.空语句 4.复合语句 知识点2-选择结构 2.1 if语句 1.if语句的单分支 2.if语句的双分支 3.if语句的多分支 4.if语句与代码块 5.悬空else 2.2switch语句 1.switch语句的定义 2.switch语句的实战案例 知识点1-语句 1.1 语句 1.表达式语句 由一个表达式加分号构成一个表达式语句,其一般形式如下: 表达式 ; Q1:什么是表达式? A1:表达式就是C语言中由运算符和数据构成的

  • 易语言基础教程之条件选择结构

    语言结构(顺序结构.条件选择结构和循环结构)是面对过程化编程语言的核心,然而由于这三种编程结构很符合人类思维,因此在面向对象编程的易语言中也得到了充分的支持和应用.可以说,任何功能的实现,都离不开这三种编程结构.下面就一起来学习一下语言结构之条件选择结构的具体使用方法. 方法/步骤 首先我们先来了解一下易语言中条件选择结构的两种形式.为了说明问题,小编制作了如图所示的对比图. 据对比图,我们可以得到两条规律: 1."如果"条件语句只有条件判断为真时执行紧接着的下一条语句. 2.&quo

  • Java语法基础之选择结构的if语句、switch语句详解

    [前言] 流程控制语句: 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的.也就是说程序的流程对运行结果有直接的影响.所以,我们必须清楚每条语句的执行流程.而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能. 流程控制语句分类: 顺序结构选择结构:if语句.switch语句循环结构:while语句.for语句 一.顺序结构: 是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的. 总的来说:写在前面的

  • C语言详细讲解if语句与switch语句的用法

    目录 一.if 语句 二.switch 语句 三.错误提示 一.if 语句 格式: if(写条件){输出内容}条件为真运行这个. else {输出内容}否则输出这个. 代码: #include <stdio.h> int main(void) { int score; //定义一个变量 score printf("请输入你的分数:"); scanf("%d",&score); //键盘输入你想要的分数 if (score>700) //给出

  • C语言示例讲解if else语句的用法

    目录 1.前言 2.if语句的语法结构 3.关于if else语句的示例 4.if else 书写形式的对比 5.例子 1.前言 (1)C语言是结构化的程序设计语言.C语言的三种基本程序结构分别是: 顺序结构:按照程序顺序执行 选择结构:根据判断结果选择分支方向 循环结构:指有一个循环体,可以根据判断条件决定循环多少次 (2)分支语句(选择语句)和循环语句 (3)什么是语句? C语言中由一个分号(;)隔开的就是一条语句. 2.if语句的语法结构 大致分为三种: if(表达式)    语句; if

  • C语言 if else 语句详细讲解

    前面我们看到的代码都是顺序执行的,也就是先执行第一条语句,然后是第二条.第三条--一直到最后一条语句. 但是对于很多情况,顺序结构的代码是远远不够的,比如一个程序限制了只能成年人使用,儿童因为年龄不够,没有权限使用.这时候程序就需要做出判断,看用户是否是成年人,并给出提示. if-else语句 在C语言中,使用if和else关键字进行判断.请先看下面的代码: #include <stdio.h> int main() { int age; printf("请输入你的年龄:"

  • C语言图文并茂讲解分支语句用法

    目录 一.if 语句分析 二.switch 语句分析 三.小结 一.if 语句分析 if 语句用于根据条件选择执行语句 else 不能独立存在且总是与它最近的 if 相匹配 else 语句后可以接连其他 if 语句 if 语句中零值比较的注意点 bool 型变量应该直接出现于条件中,不要进行比较 变量和 0 值比较时,0 值应该出现在比较符号左边(这条规则可以拓展为任意字面量与变量比较时,字面量应该放在左边,变量放在右边,这样即使手误写成了 = ,编译器也能发现) float 型变量不能直接进行

随机推荐