爱上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
相关文章
|
17天前
|
程序员 C语言 开发者
pymalloc 和系统的 malloc 有什么区别
pymalloc 和系统的 malloc 有什么区别
|
13天前
|
程序员 C语言 开发者
pymalloc 和系统的 malloc 有什么区别?
pymalloc 和系统的 malloc 有什么区别?
|
29天前
|
C语言
【c语言】分支语句
C语言通过三种基本结构——顺序、选择和循环,构建复杂的程序逻辑。本文主要介绍了C语言的选择结构,即if-else语句及其变体,包括简单的if语句、if-else组合、else if多分支判断、嵌套if以及解决悬空else问题的方法。此外,还详细讲解了逻辑运算符和关系运算符的使用,以及如何利用条件操作符简化逻辑判断。最后,文章对比了if-else与switch语句在实现多分支逻辑时的应用,并解释了switch语句中的break和default关键字的作用。
30 8
|
1月前
|
存储 C语言
C语言:普通局部变量、普通全局变量、静态局部变量、静态全局变量的区别
C语言中,普通局部变量在函数内部定义,作用域仅限于该函数;普通全局变量在所有函数外部定义,作用域为整个文件;静态局部变量在函数内部定义但生命周期为整个程序运行期;静态全局变量在所有函数外部定义,但仅在定义它的文件内可见。
45 10
|
29天前
|
C语言
【c语言】循环语句
循环结构是C语言中用于简化重复操作的重要工具,主要包括while循环、do-while循环和for循环。while循环是最基本的形式,通过不断检查条件来决定是否继续执行循环体。do-while循环则先执行循环体,再检查条件,至少执行一次。for循环逻辑更复杂,但使用频率最高,适合初始化、条件判断和更新变量的集中管理。此外,循环中还可以使用break和continue语句来控制循环的提前终止或跳过当前迭代。最后,循环可以嵌套使用,解决更复杂的问题,如查找特定范围内的素数。
37 6
|
29天前
|
存储 C语言
C语言:结构体与共用体的区别
C语言中,结构体(struct)和共用体(union)都用于组合不同类型的数据,但使用方式不同。结构体为每个成员分配独立的内存空间,而共用体的所有成员共享同一段内存,节省空间但需谨慎使用。
|
1月前
|
存储 编译器 C语言
C语言函数的定义与函数的声明的区别
C语言中,函数的定义包含函数的实现,即具体执行的代码块;而函数的声明仅描述函数的名称、返回类型和参数列表,用于告知编译器函数的存在,但不包含实现细节。声明通常放在头文件中,定义则在源文件中。
|
1月前
|
存储 C语言
C语言指针与指针变量的区别指针
指针是C语言中的重要概念,用于存储内存地址。指针变量是一种特殊的变量,用于存放其他变量的内存地址,通过指针可以间接访问和修改该变量的值。指针与指针变量的主要区别在于:指针是一个泛指的概念,而指针变量是具体的实现形式。
|
1月前
|
存储 编译器 C语言
C语言:数组名作为类型、作为地址、对数组名取地址的区别
在C语言中,数组名可以作为类型、地址和取地址使用。数组名本身代表数组的首地址,作为地址时可以直接使用;作为类型时,用于声明指针或函数参数;取地址时,使用取地址符 (&),得到的是整个数组的地址,类型为指向该类型的指针。
|
1月前
|
C语言
教你快速理解学习C语言的循环与分支
教你快速理解学习C语言的循环与分支
15 0