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

【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;
 }

相关文章:

  • 在Windows本地部署DeepSeek-R1模型全指南 ——基于Ollama的轻量化实现
  • 网络安全架构战略 网络安全体系结构
  • 神经网络实验——MLP
  • C# ref 和 out 的使用详解
  • 【Spring快速入门】不断更新...
  • 蚁剑(AutSword)的下载安装与报错解决
  • 深拷贝和浅拷贝的区别
  • 深入解析队列与广度优先搜索(BFS)的算法思想:原理、实现与应用
  • who knows the answer
  • 软件测试基础知识
  • 【Pandas】pandas Series isin
  • Transformer技术报告:架构与原理
  • Node.js 入门
  • [LeetCode力扣hot100]-链表
  • 【Python pro】组合数据类型
  • 基于YOLO11深度学习的心脏超声图像间隔壁检测分割与分析系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标分割、人工智能
  • Leetcode1299:将每个元素替换为右侧最大元素
  • 【DL】浅谈深度学习中的知识蒸馏 | 2019 CVPR | 中间层知识蒸馏
  • MQ导致的系统登录没反应
  • 根据POD名称生成 三部曲:get、describe、log、exec
  • 超新星|18岁冲击中超金靴,王钰栋的未来无限可能
  • 比特币挖矿公司GRYP股价涨超171%:将与特朗普儿子创设的公司合并
  • 飙升至熔断,巴基斯坦股市两大股指收盘涨逾9%
  • 中共中央、国务院印发《生态环境保护督察工作条例》
  • 【社论】人工智能将为教育带来什么
  • 我国成功发射遥感四十号02组卫星