【分支和循环 (一)】

if 语句

一、语法形式:

if(表达式)
   语句

表达式成立,执行语句;表达式不成立,则不执行语句。

C语言中,0表示假,非0表示真,也就是说如果表达式的结果是0,不执行语句;表达式结果是非0是,才会执行语句。

来个图:(这个是网上的,便于更清楚的理解)
在这里插入图片描述

例如,输入一个数,判断是否为偶数:

# include <stdio.h>
int main()
{
   
  int a;
  scanf("%d",&a);
  if(a%2==0)
     printf("%d是偶数\n",a);
  return 0;
}

如果用户输入9,那么9除以2的余数不是0,则9%2==0这个表达式不成立,所以不会执行后面的语句;如果用户输入8,那么8除以2的余数是0,则8%2==0这个表达式成立,所以执行后面的语句,输出的结果就是8是偶数

二、 else

如果我们要判断一个数是奇数还是偶数,就可以用到else

语法形式:

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

例如打印一个数,如果是奇数就输出奇数,否则打印偶数:

# include <stdio.h>
int main()
{
   
  int a;
  scanf("%d",&a);
  if (a%2==0)
    printf("%d是偶数\n",a);
  else
    printf("%d是奇数\n",a);
    return 0;
}

道理同上,如果用户输入3,那么输出的结果是3是奇数;如果输入的是4,那么输出结果是4是偶数

三、分支中包含多条语句

默认情况下,if 和 else语句中都只控制一条语句。

举个例子:

# include <stdio.h>
int main ()
{
   
   int a=0;
   scanf("%d",&a);
   if (a>=60)
     printf("及格了\n");
     printf("不用补考\n");
   return 0;
}  

此时用户不管输入小于60分的成绩,还是大于等于60分的成绩,都会输出不用补考,由此可见,if只能控制一条语句,就是printf("及格了\n"); printf("不用补考\n");是独立存在的,不管if语句的条件是否是真,都会被执行。为了避免这种情况的发生,因此如果我们要if语句同时控制2条语句,那就要使⽤ {} 将代码括起来,else后也可以跟上大括号。

例如:

# include <stdio.h>
int main ()
{
   
   int a=0;
   scanf("%d",&a);
   if (a>=60)
    {
     printf("及格了\n");
       printf("不用补考\n");
     }
   return 0;
}  

此时,输入低于60分的将没有任何输出。

四、嵌套

在 if else 语句中, else 可以与另⼀个 if 语句连⽤,构成多重判断。

例如,要求输入一个整数,判断是0,正数还是负数

# include <stdio.h>
int main()
{
   
  int i=0;
  scanf("%d",&i);
  if(i==0)
   printf("该数是0\n");
  else if(i>0)     //这里的if就相当于嵌套在else语句中
   printf("该数是正数\n");
  else
   printf("该数是负数\n");
  return 0;
 }

还比如下面的嵌套if:

# include <stdio.h>
int main ()
{
   
  int a;
  if(a>0)
  {
   
    if(a%2==0)
    printf("该数是为正数的偶数\n");
    else
    printf("该数是正数的奇数\n");
  }
  else
    printf("该数是非正数\n");
  return 0;
}

五、悬空else

如果出现多个ifelse,一定要记住这个规则 else 总是跟最接近的 if 匹配。

例子,
错误的写法:

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

上面的写法,不易理解,会误以为else与第一个if匹配,第⼀个 if 语句就不成立,嵌套 if 和 else 就没机会执行了。此时程序不会输出任何东西。

正确写法:(加上{})

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

输出还是没有结果,因为if(a==1)是假,所以if后面的语句不会执行。

若想有输出:

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

此时就会输出lalala,这样写逻辑更清楚,更便于理解。

【因为此内容(分支和循环)过多,所以我分几期发布,后面会继续发布哒。】

相关推荐

  1. 分支循环语句

    2024-01-27 18:22:02       31 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-27 18:22:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-27 18:22:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-27 18:22:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-27 18:22:02       20 阅读

热门阅读

  1. 【无标题】OpenAi

    2024-01-27 18:22:02       32 阅读
  2. Docker 的基本概念和优势

    2024-01-27 18:22:02       38 阅读
  3. 第六章(原理篇) 微前端间的通信机制

    2024-01-27 18:22:02       35 阅读
  4. TCP三次握手-普通话版

    2024-01-27 18:22:02       24 阅读
  5. 处理器架构

    2024-01-27 18:22:02       31 阅读
  6. mysql5.7.19安装步骤

    2024-01-27 18:22:02       37 阅读
  7. 文档 OCR 识别优化为异步思路逻辑

    2024-01-27 18:22:02       28 阅读
  8. IDEA中pom中打包引入的jar包

    2024-01-27 18:22:02       37 阅读
  9. Chrome Devtools 调试指南

    2024-01-27 18:22:02       35 阅读