[C语言]if语句详解

简介: 本文全方位的的讲解if语句的所有的细节点,可以让我们对if语句理解的更加深入。

C语言初阶系列

分支语句和循环语句(1)


目录

C语言初阶系列

前言

一,什么是语句?

1.1如何理解语句?

二,分支语句(选择结构)

2.1,if语句

2.2,if语句的错误的条件写法

2.2,if语句的正确的条件写法

2.3,单分支结构

2.4,双分支结构

2.5,多分支结构        

2.5.1可以实现,使用的很多的嵌套但是很臃肿的写法

2.5.2简洁的写法

2.5.2更简洁的写法

2.6,if语句默认它的后面只能控制一条语句

2.7,养成良好的代码习惯

2.7.1更人看懂的代码风格

if语句小技巧

2.8,举例if语句

2.8.1. 判断一个数是否为奇数

2.8.2.输出1 - 100之间的奇数

总结


前言

我们学习C语言,从小白成长为大佬的的探险历程,我们在这章将初步探索if语句这个知识关卡


一,什么是语句?

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

1. 表达式语句

2. 函数调用语句

3. 控制语句

4. 复合语句

5. 空语句

1.1如何理解语句?

我们将使用代码和注释,以及和运行示意图:

int main()
{
  3 + 5;//这就是一个表达式语句
  printf("hehe\n");//我们想用printf函数打印hehe这个信息,调用这个函数,
  //完成之后给个分号,这就是函数调用语句
  //语句就是大部分情况下一个分号隔开的就是一个语句
  ;//简单的放一个分号,这就是一个语句,但是这个语句什么都不干,这叫空语句
  //空语句的应用场景,有时候我们需要一条语句,但是这条语句什么都不需要做,就可以使用空语句
  return 0;
}

image.gif

控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语
言有九种控制语句。
可分成以下三类:
1. 条件判断语句也叫分支语句:if语句、switch语句;
2. 循环执行语句:do while语句、while语句、for语句;
3. 转向语句:break语句、goto语句、continue语句、return语句

二,分支语句(选择结构)

分支语句是面向我们C语言的选择结构,为了实现这种选择结构
C语言给出了分支语言这个语法特点

2.1,if语句

是C语言单子常用的,能够实现分支的这样的语句形式
if语句该怎么去书写呢,

解释一下:
如果表达式的结果为真,则语句执行。
在C语言中如何表示真假?
0表示假,非0表示真。

2.2,if语句的错误的条件写法

我们将使用代码和注释,以及和运行示意图:

//错误写法
int main()
{
  int age = 0;
  scanf("%d", &age);
  if (18<= age <=30)
  //表达式先判断age>=18,
  //如果age是50的话,18小于age,这个条件为真,为真就等于1
  //1又小于等于30,所以这个地方就打印青年了
  //不是两端去判断age在这个范围内,它是先执行18<= age,在执行age <=30
  printf("青年\n");
  return 0;
}

image.gif

2.2,if语句的正确的条件写法

我们将使用代码和注释,以及和运行示意图:

正确写法
int main()
{
  int age = 0;
  scanf("%d", &age);
  if ( age >=18 && age <= 30)
  printf("青年\n");
  return 0;
}

image.gif

2.3,单分支结构

单分支语法结构:
if (表达式)  
语句;

解释:
if语句的后面的小小括号里面放一个表达式,
表达式的结果如果为真,语句就被执行,表达式的结果如果为假就不被执行
C语言中:0表示假,非0表示为真
表达式如果算出的不是0就是真,语句执行,如果为0就不执行

我们将使用代码和注释,以及和运行示意图:

//单分支的场景
//只处理符合条件的
int main()
{
  //如果年龄大于等于18 -- 成年
  //小于18,不管他
  int age = 0;
  scanf("%d", &age);
  if (age >= 18)
  {
    printf("成年人");
  }
  return 0;
}

image.gif

image.gif编辑

image.gif编辑

2.4,双分支结构

双分支语法结构:
if (表达式)
语句1;
else
语句2;

解释:
if如果表达式为真,就执行语句1,
当表达式为假的时候,我也想处理,我就可以走else,就可以执行语句2
要么你从if语句进去,执行语句1,不行就执行else语句,执行语句2,这个里面二选一

我们将使用代码和注释,以及和运行示意图:

int main()
{
  // 有if有else你不行就我来
  //如果年龄大于等于18 -- 成年人,否则就打印 -- 未成年人
  int age = 0;
  scanf("%d", &age);
  if (age >= 18)
  {
    printf("成年人");
  }
  else
  {
    printf("未成年人\n");
  }
  return 0;
}

image.gif

image.gif编辑

image.gif编辑

2.5,多分支结构

多分支语法结构:    
if (表达式1)
语句1;
else if (表达式2)
语句2;
else
语句3;

解释:
if表达式语句,如果表达式语句为真,就执行语句1,
如果不行的话,else if在判断一下下面表达式2,
如果表达式2的语句为真,就执行语句2,
如果表达式2的语句也不为真,就只能执行else的语句3
这里就做到了3选1,当然也可以多选1

多分支结构举例:

我们使用多分支的条件

age <18  - 未成年

18-30  - 青年

31-50  -中年

51-70  -中老年

71-99 -老年

>99   -老寿星

2.5.1可以实现,使用的很多的嵌套但是很臃肿的写法

我们将使用代码和注释,以及和运行示意图:

int main()
{
  int age = 0;
  scanf("%d", &age);
  if (age < 18)
  {
    printf("未成年\n");
  }
  else//else如果是整体的一个逻辑的话,大于等于18,
    //else里面有很多种类的情况,里面也可以细分
  {
    if (age >= 18 && age <= 30)//如果大括号里面只有一条语句。就可以将大括号去掉
    {
      printf("青年\n");//if  else这个整体合起来是一条语句
    }
    else
    {
      if (age >= 31 && age <= 50)
      {
        printf("中年\n");
      }
      else
      {
        if (age >= 51 && age <= 70)
        {
          printf("中老年\n");
        }
        else
        {
          if (age >= 71 && age <=99 )
          {
            printf("老年\n");
          }
          else
          {
            printf("老寿星\n");
          }
        }
      }
    }
  }
  return 0;
}

image.gif

image.gif编辑

image.gif编辑

2.5.2简洁的写法

我们将使用代码和注释,以及和运行示意图:

int main()
{
  int age = 0;
  scanf("%d", &age);
  if (age < 18)
    printf("未成年\n");
  else if (age >= 18 && age <= 30)
    printf("青年\n");
  else if (age >= 31 && age <= 50)
    printf("中年\n");
  else if (age >= 51 && age <= 70)
    printf("中老年\n");
  else if (age >= 71 && age <=99 )
    printf("老年\n");
  else
    printf("老寿星\n");    
  return 0;
}

image.gif

image.gif编辑

image.gif编辑

 2.5.2更简洁的写法

我们将使用代码和注释,以及和运行示意图:

//因为有前置条件可以在else if中写出一种条件就行 
//但是条件顺序不能变动,变动就会逻辑错误
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;
}

image.gif

image.gif编辑

image.gif编辑

2.6,if语句默认它的后面只能控制一条语句

我们将使用代码和注释,以及和运行示意图:

int main()
{
  int age = 0;
  scanf("%d", &age);
  if (age >= 18)
      printf("成年了\n");
      printf("谈恋爱");//独立的,不被if控制
  return;
}

image.gif

image.gif编辑

image.gif编辑

如果想让if语句可以控制,就要加一个限制
if后面加上一个大括号,这样if语句才都被控制了

一个大括号对应的是一个代码块

int main()
{
  int age = 0;
  scanf("%d", &age);
  if (age >= 18)
  {//代码块
    printf("成年了\n");
    printf("谈恋爱");
  }
  return;
}

image.gif

image.gif编辑

2.7,养成良好的代码习惯

要养成良好的代码风格,让别人能够看得懂
容易让大家出现阅读错误的代码风格

我们将使用代码和注释,以及和运行示意图:

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相匹配的,这样第一if进入了才能执行if里面的if和else
//要写出让人容易理解的代码风格

image.gif

image.gif编辑

//更容易看懂的代码风格
int main()
{
  int a = 0;
  int b = 2;
  if (a == 1)
  {
    if (b == 2)
      printf("hehe\n");
    else
      printf("haha\n");
  }
  return 0;
}

image.gif

2.7.1更人看懂的代码风格

我们将使用代码和注释,以及和运行示意图:

if语句的书写风格
 容易误导的写法
if的条件满足就是return x,不满足就返回return y。
if (condition) {
    return x;
}
return y;
让人一目了然的写法
if (condition)
{
    return x;
}
else
{
    return y;
}
在不影响效率的情况下我们要写那种让人一目了然的代码

image.gif

if语句小技巧

我们将使用代码和注释,以及和运行示意图:

int main()
{
  int a = 0;
  //if(a == 5)//这样写少写一个=号,不易发现,没有报错
  if (5 == a)//当我们写少写一个=号,就会报错,易发现错误
    //未来我们想判断一个变量和一个常量值是否相等的话,
    //可以把常量放在等号的左边,这样即使少写了一个等号,就会发现错误,改正
    printf("hehe\n");
  return 0;
}

image.gif

2.8,举例if语句

2.8.1. 判断一个数是否为奇数

我们将使用代码和注释,以及和运行示意图:

int main()
{
  int n = 0;
  scanf("%d", &n);//只有变量才能赋值,表达式是不能被赋值的,
  //少写一个等号就会直接报错的
  if (n % 2 == 1)//通过模2得到的余数为1的,都是奇数
  {
    printf("YES\n");
  }
  else
    printf("NO\n");
    return 0;
}

image.gif

image.gif编辑

image.gif编辑

2.8.2.输出1 - 100之间的奇数

我们将使用代码和注释,以及和运行示意图:

使用分支语句解题:

int main()
{
  int i = 1;//循环变量
  while (i <= 100)
  {
    if (i % 2 == 1)//通过模2得到的余数为1的,都是奇数
      printf("%d ", i);//%d后面加一个空格是为了,让我们看的跟清晰
    i++;
  }
  return 0;
}

image.gif

image.gif编辑

不使用分支语句解题:

int main()
{
  int i = 1;//循环变量
  while (i <= 100)
  {
    printf("%d ", i);//%d后面加一个空格是为了,让我们看的跟清晰
    i+=2;
  }
  return 0;
}

image.gif

image.gif编辑


总结

以上就是今天要讲的内容,本文仅仅全面介绍了C语言的if语句,可以让你在c语言的探险更加有趣,充实。

相关文章
|
4月前
|
C语言
C语言学习笔记-C语言中的程序结构语句
C语言学习笔记-C语言中的程序结构语句
|
4月前
|
存储 C语言
C语言中的if语句编程
C语言中的if语句编程
49 0
|
1月前
|
存储 编译器 C语言
C语言中的简单语句
C语言中的简单语句
|
2月前
|
C语言
【C语言】选择语句
C语言中选择语句的相关知识点
27 1
【C语言】选择语句
|
4月前
|
算法 搜索推荐 程序员
C语言中的if语句
C语言中的if语句
86 1
|
4月前
|
C语言
if语句的应用(C语言零基础教程)
if语句的应用(C语言零基础教程)
|
4月前
|
程序员 C语言
【c语言】if 选择语句
【c语言】if 选择语句
38 3
|
4月前
|
存储 程序员 C语言
c语言中的if语句
c语言中的if语句
25 0
|
4月前
|
C语言
C语言if语句
C语言if语句
33 0
|
4月前
|
C语言
C语言中if语句的选择结构
C语言中if语句的选择结构
24 0