C语言中的控制语句(分支语句 if、switch、三目运算符)

程序执行的三大流程

  • 顺序 : 从上向下, 顺序执行代码
  • 分支 : 根据条件判断, 决定执行代码的分支
  • 循环 : 让特定代码重复的执行

分支语句

条件语句用来根据不同的条件来执行不同的语句,C语言中常用的条件语句包括if语句和switch语句。

if 语句

                                                        

if (条件) {
    条件成立时,要做的事
    ……
}

案例需求:

  • 定义一个整数变量记录年龄
  • 判断是否满 18 岁 (>=)
  • 如果满 18 岁,允许进网吧嗨皮
#include <stdio.h>

int main() {
    // 定义一个整数变量记录年龄
    int age;
    printf("请输入年龄:");
    scanf("%d", &age);
    // 判断是否满 18 岁 (>=)
    if (age >= 18) {
        // 如果满 18 岁,允许进网吧嗨皮
        printf("允许进网吧嗨皮\n");
    }

    return 0;
}

if...else 语句

语法格式: 

if (条件) {
    条件成立时,要做的事
    ……
} else {
	条件不成立时,要做的事 
    ……
}

案例需求:

  • 定义一个整数变量记录年龄
  • 判断是否满 18 岁 (>=)
  • 如果满 18 岁,允许进网吧嗨皮
  • 否则,提示回家写作业

示例代码:

#include <stdio.h>

int main() {
    // 定义一个整数变量记录年龄
    int age;
    printf("请输入年龄:");
    scanf("%d", &age);
    // 判断是否满 18 岁 (>=)
    if (age >= 18) {
        // 如果满 18 岁,允许进网吧嗨皮
        printf("允许进网吧嗨皮\n");
    } else {
        // 否则,提示回家写作业
        printf("回家写作业\n");
    }

    return 0;
}

三目运算符

运算符

术语

示例

结果

?:

三目运算符

a>b?a:b;

如果a>b,整体为结果a,否则整体结果为b

 示例代码:

#include <stdio.h>

int main() {
    // 通过三目运算符求2个数的最大值
    int a = 10;
    int b = 20;
    int c = a > b ? a : b;
    printf("最大值:%d\n", c);

    return 0;
}

if…else if…else语句

语法格式:

if (条件1) {
    条件1成立时,要做的事
    ……
} else if(条件2) {
	条件2成立时,要做的事 
    ……
} else {
	条件不成立时,要做的事 
    ……
}

案例需求:

  • 天猫超市双 11 推出以下优惠促销活动:
    • 购物满 50 元,打 9 折;
    • 购物满 100 元,打 8 折;
    • 购物满 200 元,打 7 折;
    • 购物满 300 元,打 6 折;
  • 编程计算当购物满 s 元时,实际付费多少?

示例代码:

#include <stdio.h>

int main() {
    // 1.定义变量记录购买金额 定义变量记录实际费用
    float money, real_money;
    // 2.输入购买金额
    printf("请输入购买金额:");
    scanf("%f", &money);
    // 3.根据购买金额判断折扣
    if (money >= 50 && money < 100) {
        // 购物满 50 元,打 9 折;
        real_money = money * 0.9;
    } else if (money >= 100 && money < 200) {
        // 购物满 100 元,打 8 折;
        real_money = money * 0.8;
    } else if (money >= 200 && money < 300) {
        // 购物满 200 元,打 7 折;
        real_money = money * 0.7;
    } else if (money >= 300) {
        // 购物满 300 元,打 6 折;
        real_money = money * 0.6;
    } else {
        // 不满50 原价
        real_money = money;
    }
    
    printf("购买金额: %f  实际价格: %f\n", money, real_money);

    return 0;
}

 优化后的代码:

#include <stdio.h>

int main()
{
    // 1.定义变量记录购买金额 定义变量记录实际费用
    float money, real_money;
    // 2.输入购买金额
    printf("请输入购买金额:");
    scanf("%f", &money);
    // 3.根据购买金额判断折扣   
    if (money >= 300) {
        // 购物满 300 元,打 6 折;
        real_money = money * 0.6;
    } else if (money >= 200) {   
        // 购物满 200 元,打 7 折;
        real_money = money * 0.7;
    } else if (money >= 100) { 
        // 购物满 100 元,打 8 折;
        real_money = money * 0.8;
    } else if (money >= 50) { 
        // 购物满 50 元,打 9 折;  
        real_money = money * 0.9;
    } else {
        // 不满50 原价
        real_money = money;
    }

    printf("购买金额: %f  实际价格: %f\n", money, real_money);

    return 0;
}

 switch语句

  • 测试一个表达式是否等于一些可能的值,并根据表达式的值执行相应的代码块,可以使用switch语言实现
  • switch可以支持数据类型:
    • int
    • 枚举类型
    • char类型
  • switch和if区别:
    • 需要根据布尔条件来执行不同的代码块,则应使用if语句
    • 需要根据表达式的值来执行不同的代码块,则应使用switch语句

语法格式:

switch (expression) {
    case value1:
        // 代码块1
        break;
    case value2:
        // 代码块2
        break;
    default:
    	// 代码块3
}
    

案例需求:

  • 输入int类型的数据,根据结果输出不同的内容
    • 输入1:输出Monday
    • 输入2:输出Tuesday
    • 输入3:输出Wednesday
    • 输入4:输出Thursday
    • 输入5:输出Friday
    • 输入6:输出Saturday
    • 输入7:输出Sunday
    • 输入其它:输出error

示例代码:

#include <stdio.h>

int main() {
    // 1. 定义变量保存数据
    int i;
    // 2. 输入数据
    printf("请输入1~7的数字:");
    scanf("%d", &i);
    // 3. 使用switch根据数据不同输出不同的结果
    switch (i) {
        case 1:
            printf("Monday\n");
            break;
        case 2:
            printf("Tuesday\n");
            break;
        case 3:
            printf("Wednesday\n");
            break;
        case 4:
            printf("Thursday\n");
            break;
        case 5:
            printf("Friday\n");
            break;
        case 6:
            printf("Saturday\n");
            break;
        case 7:
            printf("Sunday\n");
            break;
        default:
            printf("error\n");
    }

    return 0;
}

分支综合案例

案例需求:

  • 输入:年份(整数)和月份(整数)
  • 输出:该月份的天数(整数)

思路分析:

1.定义变量保存年份、月份、天数
2.输入年份和月份
3.根据月份输出天数
	1、3、5、7、8、10、12月  31天
    4、6、9、11月			30天
    2月 	非闰年 28天  闰年 29天
	闰年判断:能被4整除,但不能被100整除的;或者能被400整除的年份

示例代码:

#include <stdio.h>

int main() {
    // 1.定义变量保存年份、月份、天数
    int year, month, day;
    // 2.输入年份和月份
    scanf("%d %d", &year, &month);
    // 3.根据月份输出天数
    switch (month) {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            day = 31;
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            day = 30;
            break;
        case 2:
            // 2月   非闰年 28天  闰年 29天
            // 闰年判断:能被4整除,但不能被100整除的;或者能被400整除的年份
            if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
                day = 29;
            } else {
                day = 28;
            }
            break;
        default:
            day = -1;
    }

    printf("%d 年 %d 月 有 %d 天\n", year, month, day);

    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/557173.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

lua 环境安装

下载地址&#xff1a; https://luabinaries.sourceforge.net/download.html 安装环境变量 检查一下是否安装成功&#xff0c;有版本号&#xff0c;打印一句话&#xff0c;如下表示成功 idea 安装插件&#xff0c;方便编写lua脚本 配置一下idea 运行测试 local function m…

python处理IP对应城市省份

python处理IP对应城市省份 IP地理地址库geoip2用法 数据包下载 数据包下载地址&#xff08;需要注册&#xff09; https://www.maxmind.com/en/accounts/258630/geoip/downloads 考虑到注册麻烦&#xff0c;可以到下面这个github的链接去直接下载 https://github.com/Hackl0…

LINUX网卡一般性问题分析

一、网卡相关概念 网卡&#xff1a;网卡是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件。 网络模型&#xff1a;OSI网络模型、TCP/IP网络模型 LINUX网络收发流程&#xff1a; 1. 内核分配一个主内存地址段&#xff08;DMA缓冲区)&#xff0c;网卡设备可以在…

混合云自动化优势有哪些?

随着云计算领域变得更加动态&#xff0c;全球各地的组织都开始将混合云作为其IT基础设施效率、灵活性、安全性、可扩展性和成本效益的支柱。混合云将本地数据中心与公有云结合起来&#xff0c;为企业提供了灵活性和可扩展性&#xff0c;同时又能满足其对安全性、合规性和控制力…

整除分块(上下取整)

参考&#xff1a; 整除分块 - 知乎 董晓算法 G33 整除分块&#xff08;数论分块&#xff09; 图都是摘的上面的。 整除分块 整除分块是数论中的一个知识点。一个整除式子在分母不固定的时候&#xff0c;得到的结果也有可能不同&#xff0c;但是因为是整除&#xff0c;所以…

登录解析(前端)

登录代码 1、登录之后做了什么&#xff1f; 执行登陆方法&#xff0c;成功之后&#xff0c;路由跳转到指定路径或者根目录 2、this.$store.dispatch是什么意思&#xff1f; this.$store.dispatch(‘Login’, this.loginForm) 来调取store里的user.js的login方法3、this.$r…

【学习】自动化测试有哪些优势和不足

在当今这个数字化时代&#xff0c;软件测试已经成为了任何一款产品成功的关键因素之一。而在诸多的测试方法中&#xff0c;自动化测试凭借着其独特的魅力吸引着越来越多的企业。今天就让我们一起走进自动化测试的世界&#xff0c;探讨它的优势与不足。 一、自动化测试优势 1.…

强化学习入门之MDP

系列文章目录 第一章 强化学习入门之基本概念 第二章 强化学习入门之MDP 强化学习入门之MDP 系列文章目录前言1. 简介1.1 状态值函数1.2 状态动作值函数1.3 策略 2. 最优策略求解2.1 思想2.2 策略评估2.3 策略改进 3. 最优值函数求解 前言 我们已经知道使用MDP来对强化学习进…

对比实验系列:Efficientdet环境配置及训练个人数据集

一、源码下载 可以通过下方链接下载Efficientdet源码 GitHub - zylo117/Yet-Another-EfficientDet-Pytorch: The pytorch re-implement of the official efficientdet with SOTA performance in real time and pretrained weights.The pytorch re-implement of the official …

检测一切YOLO-World的几个实用使用技巧,助力精准高效目标检测任务!

引言 YOLO-World 是一种最先进的零样本目标检测模型。您可以向 YOLO-World 提供任意文本提示&#xff0c;让模型在没有任何微调的情况下识别图像中的对象实例。没有预定义的类别列表&#xff1b;您需要尝试不同的提示&#xff0c;看看模型是否能够以对您的项目可接受的标准来识…

登录解析(后端)

调试登录接口 进入实现类可以有 验证码校验 登录前置校验 用户验证 验证码校验 通过uuid获取redis 中存储的验证码信息&#xff0c;获取后对用户填写的验证码数据进行校验比对 用户验证 1.进入控制器的 /login 方法 2.进入security账号鉴权功能&#xff0c;经过jar内的流…

element plus el-date-picker type=“datetime“ 限制年月日 时分秒选择

如何限制el-date-picker组件的时分秒选中&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 文档 文档在这里&#xff1a;DateTimePicker 日期时间选择器 | Element Plus 它提供的disabled-date给我们来限制日期选择 nice&#xff01;&…

Linux的图形资源及指令

一、火车 1.切换到超级用户 su 2.下载资源 yum install -y sl 3.输入指令 sl&#xff0c;得到火车图形 如果没有得到该图形&#xff0c;就将2处改为yum install -y epel-release。 二、Linux的logo 1.在超级用户模式下下载资源 yum install -y linux_logo 2.输…

Microchip逆市扩张,接连收购2家公司

尽管年初传来降薪停工的消息&#xff0c;全球领先的半导体解决方案供应商Microchip并未因此停下扩张的脚步。相反&#xff0c;该公司在短短的一个月内&#xff0c;接连宣布收购两家公司&#xff0c;展现了其坚定的市场布局和前瞻的战略眼光。 4月11日&#xff0c;Microchip成功…

【JavaEE初阶系列】——网络原理之进一步了解应用层以及传输层的UDP协议

目录 &#x1f6a9;进一步讲应用层 &#x1f388;自定义应用层协议 &#x1f388;用什么格式组织 &#x1f469;&#x1f3fb;‍&#x1f4bb;xml(远古的数据组织格式) &#x1f469;&#x1f3fb;‍&#x1f4bb;json(当下最流行得一种数据组织格式) &#x1f469;&…

1097 矩阵行平移(语文题,选做)

输入样例&#xff1a; 7 2 99 11 87 23 67 20 75 89 37 94 27 91 63 50 11 44 38 50 26 40 26 24 73 85 63 28 62 18 68 15 83 27 97 88 25 43 23 78 98 20 30 81 99 77 36 48 59 25 34 22 输出样例&#xff1a; 529 481 479 263 417 342 343 样例解读 需要平移的是第 1、…

ZYNQ-Vitis(SDK)裸机开发之(八)PS端QSPI读写flash操作(包括SPI、Dual SPI、Qual SPI的配置使用)

目录 一、Flash知识简介 二、SPI知识简介 1.SPI引脚介绍 2.SPI协议介绍 3.ZYNQ Quad SPI说明 三、Vivado工程搭建 四、编写Vitis程序 1.ZYNQ QSPI Flash操作的格式&#xff1a; 2.头文件&#xff1a;qspi_hdl.h 3.源文件&#xff1a;qspi_hdl.c 4.编写QSPI Flash读写…

已经下载了pytorch,但在正确使用一段时间后出现No module named torch的错误

问题描述 使用的是叫做m2release的虚拟环境&#xff0c;在此环境下使用conda list可以发现是存在pytorch的&#xff0c;但是运行代码时却报No module named torch的错误。 解决方案 想尝试卸掉这个pytorch重新装一次&#xff0c;但是想卸载会提示找不到&#xff0c;想重新…

redis写入和查询

import redis #redis的表名 redis_biao "Ruijieac_sta" #redis连接信息 redis_obj redis.StrictRedis(hostIP地址, port6379, db1, password密码) # keyytressdfg # value22 ##写入 # redis_obj.hset(redis_biao, key, value) #查询 req_redisredis_obj.hget(red…

Python面试十问

深浅拷贝的区别&#xff1f; 浅拷⻉&#xff1a; 拷⻉的是对象的引⽤&#xff0c;如果原对象改变&#xff0c;相应的拷⻉对象也会发⽣改变。 深拷⻉&#xff1a; 拷⻉对象中的每个元素&#xff0c;拷⻉对象和原有对象不在有关系&#xff0c;两个是独⽴的对象。 浅拷⻉(copy)…