【初阶C语言】跟着本娥轻松学会分支语句!

简介: 【初阶C语言】跟着本娥轻松学会分支语句!

一.if语句

 1.单分支

     1.结构
if(表达式)
   语句;

表达式:如果表达式结构为真,则会执行语句(默认执行后面跟的一条语句,若是想要执行多条语句,需要自行加大括号),为假则什么都不会执行。另一种判断方式:若表达式的结果为0,则为假;若结果非0,为真,也会执行语句。

我们看代码

#include<stdio.h>
int main()
{
   int a=0;
   scanf("%d",&a);//输入一个数
   if(a>0)
     printf("a为正数");//如果a>0则会在屏幕打印这句话,反之什么也不打印
   return 0;
}

2.双分支

结构:二选一

if(表达式)
  语句1;
else
  语句2;

表达式为真执行语句1,为假执行语句2

1.我们看例子:

#include<stdio.h>
int main()
{
   int a=0;
   scanf("%d",&a);//输入一个数
   if(a>0)
     printf("a为正数");//如果a>0则会在屏幕打印这句话
   else
     printf("a表示正数");//表达式为假则会打印这句话
   return 0;
}

2.可以嵌套使用

if(条件1)
{
//语句1
}
else
{
    if(条件2)
     {
        //语句2
     }
     else
     {
        //语句3
     }
}

一般可以用嵌套都可以同多分支结构,所以嵌套一般不用,比较的繁琐。

3.错误案例

一般是if跟else的错误用法,跟条件的写法。


 if跟else匹配问题

//错误写法
#include <stdio.h>
int main()
{
  int a = 0;
  int b = 2;
  if (a == 1)
    if (b == 2)//是这个if和下面的else匹配,与对齐不对齐没有关系
      printf("hehe\n");//所以会输出hehe
  else
      printf("haha\n");
  return 0;
}
//正确写法
#include <stdio.h>
int main()
{
  int a = 0;
  int b = 2;
  if (a == 1)//这里a!=1不会进入括号,就是什么都不会输出
  {          //需要自己加大括号把想要匹配的if和else括起来
    if (b == 2)
      printf("hehe\n");
    else
      printf("haha\n");
  }
  return 0;
}

条件写法问题

//如果年龄在18-30岁之间就输出青年,反之什么也不输出
//错误写法
#include<stdio.h>
int main()
{
  int age = 0;
  scanf("%d", &age);
  if (18<=age<=30)//错误写法
    printf("青年\n");//只要输入>18的都会输出青年
  return 0;
}
//分析:我们输入50,理论上什么也不会输出。但是,它会先执行前面的表达式:18<50,显然
//18<50是成立的,也是就真,那就是1(真默认1,假为0);然后再执行后面表达式:1<30,
//显然这个也是成立的,也就是真,那就会执行后续语句,这就是也会输出青年的原因!
//正确写法
#include<stdio.h>
int main()
{
  //如果年龄大于等于18-成年人
  int age = 0;
  scanf("%d", &age);
  if (age>=18 && age<=30)//括号里面的条件我们需要写成逻辑结构,需要同属满足才会为真
    printf("青年\n");
  return 0;
}
//还有一种错误写法
//本应该是这样写
if(a==1)
//却写成if(a=1),这样是错误的!

3.多分支

我们先看结构

if(表达式1)
  语句1;
else if(表达式2)
  语句2;
else
  语句3

在多分支里面,可以有多个else if(表达式),但是开头的If和结尾的else只有一个。

else if 后面要跟条件,else后面不能跟条件

我们看一道题

//按照不同年龄输出不同数据
//age<18  - 未成年
//18~30   - 青年
//31~50   - 中年
//51~70   - 中老年
//71~99   - 老年
//>99     - 老寿星
#include<stdio.h>
int main()
{
  int age = 0;
  scanf("%d", &age);
  if (age < 18)
    printf("未成年\n");
  else if (age <= 30)
    printf("青年\n");
  else if (age <= 50)
    printf("中年\n");
  else if (age <= 70)
    printf("中老年\n");
  else if (age <= 99)
    printf("老年\n");
  else
    printf("老寿星\n");
  return 0;
}

不同的年龄输出不同的数据,因为条件比较多,所以适合多分支结构。

最上面的条件都不满足的时候,就会执行最后else的语句。


二.switch语句

结构:

switch(整形表达式)
{
  语句项;
}

整形表达式可以是数字或者字符,不能为小数。

switch(整形表达式)
{
  case 整形常量表达式:语句;//case和整形常量表达式中间要用空格隔开,跟语句中间要用冒号
  default:语句;
}

switch语句要与break语句相互搭配,但是不能使用continue语句


switch语句允许嵌套

一般用于输入数字或者字符就输出什么


我们看一个例子:

输入1,输出星期一,以此类推,输入7,输出星期天

#include<stdio.h>
int main()
{
  int day = 0;
  scanf("%d", &day);//4
  switch (day)
  {
  case 1:
    printf("星期1\n");
    break;
  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("星期天\n");
    break;
  }
  return 0;
}

我们可以看到,每一个分号前面都有一个break,break的意思就是跳出该程序,不会再执行其他。

比如,我们输入4,此时day=4,然后就会选择case后面为4的语句,就会在屏幕上打印星期四,然后会执行break,跳出循环。所以输入一个4,只会打印星期四,其他的一律不打印。


那有同学就有疑问了,我就要输入1-7之外的数字,看你怎么办!那也不怕,满足你的需求,我们对程序改进一下。

#include<stdio.h>
int main()
{
  int day = 0;
  scanf("%d", &day);//4
  switch (day)
  {
  case 1:
    printf("星期1\n");
    break;
  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("星期天\n");
    break;
    default:printf("抱歉啦,输入错误!");
            break;
  }
  return 0;
}

我们在最后面加了default,只要你输入的数据没有跟case后面的匹配,通通会交给default处理。

格式:

default:语句;//注意,default和语句之间用冒号隔开,结尾要用分号
        break;

同学疑问又来了,那能不能输入不同的数据输出同一个结果呢?那当然也是可以的,我们把题目改一下

例子二:

输入1-5,输出工作日;输入6-7,输出休息日。

​#include<stdio.h>
int main()
{
  int day = 0;
  scanf("%d", &day);//4
  switch (day)
  {
  case 1://输入1,会从这里进入,因为没有break会继续往下执行,直到遇到break结束
  case 2:
  case 3://输入3,会从这里开始,也是遇到break才结束
  case 4:
  case 5:
    printf("工作日\n");
    break;
  case 6:
  case 7:
    printf("休息日\n");
    break;
    default:printf("抱歉啦,输入错误!");
            break;
  }
  return 0;
}

由此可见,我们可以根据break灵活控制语句的执行。

顺序可以不一样,如case 1到case 4可以换顺序;case1-5也可以跟case6-7换顺序;但是其他的不可以随便调换。最好也不要调换

相关文章
|
2月前
|
C语言
初识C语言2——分支语句和循环语句
初识C语言2——分支语句和循环语句
77 5
|
2月前
|
C语言
【c语言】分支语句
C语言通过三种基本结构——顺序、选择和循环,构建复杂的程序逻辑。本文主要介绍了C语言的选择结构,即if-else语句及其变体,包括简单的if语句、if-else组合、else if多分支判断、嵌套if以及解决悬空else问题的方法。此外,还详细讲解了逻辑运算符和关系运算符的使用,以及如何利用条件操作符简化逻辑判断。最后,文章对比了if-else与switch语句在实现多分支逻辑时的应用,并解释了switch语句中的break和default关键字的作用。
33 8
|
6月前
|
C语言
C语言初阶:如何判断是否为素数并且输出
C语言初阶:如何判断是否为素数并且输出
48 0
|
2月前
|
Serverless C语言
C语言控制语句:分支、循环和转向
C语言控制语句:分支、循环和转向
|
2月前
|
算法 编译器 C语言
【C语言】实现猜数字游戏(分支语句与循环语句的运用)
【C语言】实现猜数字游戏(分支语句与循环语句的运用)
|
6月前
|
C语言
【C语言基础】:分支与循环
【C语言基础】:分支与循环
|
2月前
|
C语言
教你快速理解学习C语言的循环与分支
教你快速理解学习C语言的循环与分支
17 0
|
2月前
|
程序员 C语言
【C语言】分支语句(逻辑运算符与关系运算符)
【C语言】分支语句(逻辑运算符与关系运算符)
|
4月前
|
C语言
【C语言篇】分支语句详解(超详细)
在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要顺序是满⾜实际需求的就可以。 不过我们通常是把 default ⼦句放在最后处理的。
55 2
|
4月前
|
C语言
C语言分支语句
C语言分支语句
32 4