当前位置: 首页 > article >正文

【C语言】第三期——判断语句

目录

前言

1 if选择语句

1.1 基本写法 

1.1.1 单分支

1.1.1.1 简写

1.1.2 双分支 

1.1.3 多分支 

1.2 if嵌套

1.3 if常见错误

1.4 案例:求两个数的最大值

2 switch case语句

2.1 基本格式

2.2 switch穿透

3 三元运算

4 if选择语句与三元运算符的应用示例

if else

三元运算


前言

在前几章的学习中,所编写的程序都是按照顺序结构进行设计。

在顺序结构中,程序从上到下逐行执行,中间没有任何跳跃,每行语句都会被执行到。

虽然采用顺序结构已经可以满足编程需求,但实际上,在很多情况下,我们期望当满足某个条件时才执行某段程序,否则就不执行。

如:

(1)如果学生的成绩大于等于 60 分,就输出“及格”,否则就输出“不及格”;
 (2)判断一个人的性别,如果是男生,就输出“男”,否则就输出“女”;
 (3)如果年龄大于等于18 岁,就输出“成年人”,否则就输出“未成年人”。 

对于这样的需求,采用顺序结构显然是不行的,因为代码即使出现在程序中,也有可能不会被执行。

为了解决这类问题,C 语言提供了选择结构,也被称为分支结构

采用选择结构设计的程序在执行时,并不是从上到下逐行执行,而是根据不同的条件执行不同的代码。

C 语言把任何非零和非空的值假定为 true,把零或 null 假定为 false。

C 语言为实现选择结构提供了三种语句:

(1)if选择语句;

(2) switch 选择语句。

(3)? : 运算符 条件运算符 ? :(可以用来替代 if...else 语句)


1 if选择语句

1.1 基本写法 

if语句的基本格式

if(表达式){
语句块
}

if else的第二种格式

if(表达式){
语句1
 }else{
语句2
 }

if else语句的第三种格式

if(表达式1){
语句1
 }else if(表达式2){
语句2
 }else if(表达式3){
语句3
 }else{
语句4
 }

1.1.1 单分支

需求1:判断一个人的年龄,如果大于18打印成年人,否则不输出任何内容

 #include <stdio.h>

 int main()
 {
     int age = 22;
     if (age > 18)
     {
         printf(" 年龄大于 18\n");
     }
     return 0;
 }
1.1.1.1 简写
 #include <stdio.h>

 int main()
 {
     int age = 22;
     if (age > 18)
         printf(" 年龄大于 18\n");
     return 0;
 }

提示:if 表达式里面只有一行语句的时候可以把{}去掉,但是我们写代码的时候推荐加上{}


1.1.2 双分支 

需求2:判断一个人的年龄,如果大于18打印成年人,否则输出未成年

 #include<stdio.h>

 int main()
 {
     int age = 10;
     if (age > 18)
     {
         printf(" 成年人 \n");
     }
     else
     {
         printf(" 未成年人 ");
     }
     return 0;
 }

1.1.3 多分支 

需求3:判断一个学生的成绩 如果大于90显示优秀、如果大于80显示良好、如果大于等于60显示及格、如果小于60显示不及格

 #include <stdio.h>

 int main()
 {
     int score = 88;
     if (score > 90)
     {
         printf("优秀");
     }
     else if (score > 80)
     {
         printf("良好");
     }
     else if (score >= 60)
     {
         printf("及格");
     }
     else
     {
         printf("不及格");
     }
     return 0;
 }

1.2 if嵌套

 #include <stdio.h>

 int main()
 {
     int age = 35;
     if (age > 18) // 外层 if 语句
     {
         printf("age 大于 18");
         if (age > 30) // 内层 if 语句
         {
             printf("age 大于 30");
         }
     }
     return 0;
 }

1.3 if常见错误

注意 条件判断的==号

 #include <stdio.h>

 int main()
 {
     int score = 100;
     if (score == 100)
     {
         printf("%s", "满分");
     }
     return 0;
 }

1.4 案例:求两个数的最大值

 #include <stdio.h>

 int main(void)
 {
     int a = 34;
     int b = 65;
     int max;
     if (a > b)
     {
         max = a;
     }
     else
     {
         max = b;
     }
     printf("a和b的最大值是:%d", max);
     return 0;
 }

2 switch case语句

上面我们给大家介绍了处理多分支结构的 if·..else if··else 语句。

在实际应用过程中,当分支比较多时, if 语句会变得冗长且难以阅读。

为了解决这个问题,C 语言提供了另外一种多分支处理语句: switch 语句。

注意:所有的switch语句都可以使用if else来替代,但是不是所有的if else都可以使用switch 来替代。

2.1 基本格式

 switch(表达式)
 {
     case 常量表达式1:
         语句1;
         break;
     case 常量表达式2:
         语句2;
         break;
     ……
     case 常量表达式n:
         语句n;
         break;
     default: 语句n+1;
 }

案例:使用switch判断一个人的性别

 #include <stdio.h>

 int main()
 {
     int sex = 1;
     switch (sex)
     {
     case 1:
         printf("%s", "性别是男");
         break;
     case 2:
        printf("%s", "性别是女");
        break;
    default:
        printf("%s", "传入参数错误");
        break;
    }
    return 0;
 }

2.2 switch穿透

需求:输入一个月份判断这个月属于什么季节,使用switch完成

 #include <stdio.h>

 int main(void)
 {
    int month = 8;
    switch (month)
    {
    case 1:
        printf(" 冬天 ");
        break;
    case 2:
        printf(" 冬天 ");
        break;
    case 12:
        printf(" 冬天 ");
        break;
    case 3:
        printf(" 春天 ");
        break;
    case 4:
        printf(" 春天 ");
        break;
    case 5:
        printf(" 春天 ");
        break;
    case 6:
        printf("夏天");
        break;
    case 7:
        printf(" 夏天 ");
        break;
    case 8:
        printf(" 夏天 ");
        break;
    case 9:
        printf("夏天");
        break;
    case 10:
        printf(" 夏天 ");
        break;
    case 11:
        printf(" 夏天 ");
        break;
    default:
        printf(" 月份错误 ");
    }
    return 0;
 }

可以使用switch穿透功能对上面代码进行优化

#include <stdio.h> int main(void) {

int month = 8;
switch (month)
{
    case 12:
    case 1:
    case 2:
        printf(" 冬天 ");
        break;
    case 3:
    case 4:
    case 5:
        printf(" 春天 ");
        break;
    case 6:
    case 7:
    case 8:
        printf(" 夏天 ");
        break;
    case 9:
    case 10:
    case 11:
        printf(" 夏天 ");
        break;
    default:
        printf(" 月份错误 ");
        break;
    return 0;
}

3 三元运算

条件运算符又被称为三元运算符,格式如下:

表达式1?表达式2:表达式3

其求值规则为:如果表达式1的值为真,则以表达式2 的值作为整个条件表达式的值,否则以表达式3的值作为整个条件表达式的值。条件表达式通常用于赋值语句之中。


4 if选择语句与三元运算符的应用示例

求两个数的最大值 

if else

 #include <stdio.h>

 int main(void)
 {
     int a = 34;
     int b = 65;
     int max;
     if (a > b)
     {
         max = a;
     }
     else
     {
         max = b;
     }
     printf("a和b的最大值是:%d", max);
     return 0;
 }

三元运算

 #include <stdio.h>

 int main(void)
 {
     int a = 34;
     int b = 65;
     int max = a > b ? a : b;
     printf("a和b的最大值是:%d", max);
     return 0;
 }

http://www.kler.cn/a/552538.html

相关文章:

  • 文件操作(PHP)(小迪网络安全笔记~
  • 【模板】图论 最短路 (Floyd+SPFA+Dijkstra)
  • JAVA的Servlet一些知识(学习自用)
  • 【kafka系列】如何选择消息语义?
  • oracle获取当月1号
  • 正式页面开发-登录注册页面
  • 从零开始构建一个小型字符级语言模型的详细教程(基于Transformer架构)之一数据准备
  • [实现Rpc] 通信类抽象层 | function | using | 解耦合设计思想
  • 前端面试题目总结
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_align_ptr
  • qemu-kvm源码解析-cpu虚拟化
  • STM32 外部中断和NVIC嵌套中断向量控制器
  • 捷米特 JM - RTU - TCP 网关应用 F - net 协议转 Modbus TCP 实现电脑控制流量计
  • C#中的虚函数定义,原理与用法
  • 关于arcgis中坐标系、投影的一些知识
  • JDBC 入门:从基础到实战
  • 大数据SQL调优专题——Flink执行原理
  • 安装海康威视相机SDK后,catkin_make其他项目时,出现“libusb_set_option”错误的解决方法
  • DeepSeek R1生成图片总结2(虽然本身是不能直接生成图片,但是可以想办法利用别的工具一起实现)
  • word$deepseep