爱上C语言:分支与循环(分支篇)多个if与if — else if区别

简介: 爱上C语言:分支与循环(分支篇)多个if与if — else if区别

if语句

1.单分支if

  • 单分支if的语法结构
if(表达式)
{
  代码块 code;
}

这里我使用流程图的方式为大家展示

#include<stdio.h>
int main()
{
//单分支
  int age = 0;
  scanf("%d", &age);
  if (age >= 18)
  {
    printf("成年\n");
  } 
  return 0;
  
}

计算机在处理if语句时,一般要先判断if()中表达式的真假再执行下一步

那计算机是如何判断真假的呢?

计算机将0判断为假,将非0判断为真

例如,上述代码中如给age输入8,则age >= 18为假,就不会执行if里面的语句,从而不会打印成年


2.多分支if语句

  • 多分支if语法结构
if(表达式)
{
  代码块 code;
}
else if(表达式)
{
  代码块 code;
}
else if(表达式)
{
  代码块 code;
}
......
else
{
  代码块 code;
}

如同人生不止一个选择,同样的if语句也有多个分支

int main()
{
  int age = 0;
  scanf("%d", &age);
  if (age >= 18)
  {
    printf("成年\n");
  }
  else
  {
    printf("未成年\n");
  }
  return 0;
}

简单解释一下,上述代码如若if中表达式为真则执行if内语句为假则执行else内语句

上面呢仅仅是双分支,当然你也可以无限套娃

int main()
{
  int age = 0;
  scanf("%d", &age);
  if (age >= 18 && age < 35)
  {
    printf("成年\n");
  }
  else if (age >= 35 && age < 60)
  {
    printf("中年\n");
  }
  else if (age >= 60 && age < 90)
  {
    printf("老年\n");
  }
  else if (age >= 90)
  {
    printf("老寿星\n");
  }
  else
  {
    printf("未成年\n");
  }
}

3.多个if与if – else if 区别

细心的小伙伴已经发现这个标题不一般,没错这个是重点

这里我用代码为大家解惑

在上述多个if代码中,给age输入23屏幕上既打印了青少年又打印了成年

而在if-- else if 代码又是如何呢?我们接着往下看

if-- else代码中我们依然给age输入23,与多个if不同的是它仅仅打印了青少年

第一次的时候我也懵逼了,其实呢在多个if语句中计算机会每一个if语句都判断一下,只要条件为真if后面的语句都会执行,而在if-- else if语句中只要一个else if判断为真,其后面所有的else if 语句都不会在判断了


switch 语句

在C语言中并非只有if语句是分支语句,它还提供了switch语句

if语句在分支过多情况下用起来极为不便,而switch语句则弥补了这一缺点

  • switch的语法结构
switch(表达式)
  { 
      case 常量表达式1:  语句1;
      case 常量表达式2:  语句2;
      …… 
      case 常量表达式n:  语句n;
      default:  语句n+1;
  }

注意:

  • switch后面只能跟整形表达式
  • case后面只能跟整形常量表达式

当a的值与case后的值一样时,就执行对应case后的语句

#include<stdio.h>
int main()
{
  int a = 0;
  scanf("%d", &a);
  switch (a)
  {
  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");
  default://当没有找到入口,就走这一条
    printf("输出错误\n");
  }
  return 0;
}

运行上述代码

你会发现输出的结果并非所愿,这是因为当程序从case 3:进去后并没有跳出switch语句,这个时候你就需要break的帮助了

是不是输出想要的答案了😄

✌️一些见解

  • if,else if以及else后语句尽量用{ }括起来
  • else总是与它最近的if相对应
  • case语句后面记得跟break
相关文章
|
1月前
|
C语言
【C语言】循环语句
C语言中循环语句的相关知识点
24 2
【C语言】循环语句
|
1天前
|
C语言
【C语言篇】分支语句详解(超详细)
在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要顺序是满⾜实际需求的就可以。 不过我们通常是把 default ⼦句放在最后处理的。
|
1天前
|
机器学习/深度学习 C语言
【C语言篇】循环语句详解(超详细)
while 和 for 这两种循环都是先判断,条件如果满⾜就进⼊循环,执⾏循环语句,如果不满⾜就跳出循环.
|
11天前
|
C语言
C语言的循环语句
C语言的循环语句
23 6
|
11天前
|
存储 编译器 C语言
C++内存管理(区别C语言)深度对比
C++内存管理(区别C语言)深度对比
39 5
|
11天前
|
C语言
C语言分支语句
C语言分支语句
13 4
|
2月前
|
存储 算法 C语言
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
|
1月前
|
Linux C语言
【编程小实验】C语言实现:无限循环写入文本文件,支持Ctrl+C中断与数据追加(附完整源码)
在Linux中,文件I/O(输入/输出)是程序与文件进行交互的基本方式,包括读取文件内容和向文件写入数据。这通常通过标准的C库函数来实现,下面是一些基本的文件读写操作和代码示例。
|
2月前
|
Java 程序员 Linux
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
29 0
|
2月前
|
C语言
C语言条件判断:if、else、else if 和 switch 详解
C语言条件判断:if、else、else if 和 switch 详解
42 0