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

news/2024/5/17 19:42:04

程序执行的三大流程

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

分支语句

条件语句用来根据不同的条件来执行不同的语句,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:// 代码块1break;case value2:// 代码块2break;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.mrgr.cn/p/67852785

相关文章

Ubuntu下部署gitlab

1.安装gitlab服务 1.安装依赖 在ubuntu下使用快捷键ctrl+alt+T打开命令行窗口,然后运行下面命令 sudo apt update sudo apt-get upgrade sudo apt-get install curl openssh-server ca-certificates postfixps:如果这一步有遇到弹出框的直接Tab切换到确定/ok按钮,然后回车即可…

组态控制方法

什么叫组态控制?从应用场景上来看,如果现在集成了一个系统,它既包括了生产A要用的全部I/O系统,又包括可生产B和C等等要用的全部I/O系统。但是ABC的生产I/O不一样(硬件组态不尽相同)。 这个时候我就想用一套程序(包括硬件组态)就能适配全部的ABC生产。另外我在切换硬件组…

模块介绍,包,json模块

【一】模块 1.什么是模块 模块就是一系列功能的结合体,可以直接使用 2.为什么要模块 极大地提升开发效率 3.模块的三种来源 【1】内置模块 无需下载,解释器自带,直接导入使用即可 【2】自定义模块 自己写的代码,封装成模块,自己用或者是发布到网上供别人使用 【3】第三方模…

七月论文审稿GPT第4.5版:通过15K条paper-review数据微调Llama2 70B(含各种坑)

前言 当我们3月下旬微调完Mixtral 8x7B之后(更多详见&#xff1a;七月论文大模型&#xff1a;含论文的审稿、阅读、写作、修订 )&#xff0c;下一个想微调的就是llama2 70B 因为之前积攒了不少微调代码和微调经验&#xff0c;所以3月底apple便通过5K的paper-review数据集成功…

v-bind与class,style属性的使用

class,style是各种dom元素的都具有的原生属性 class与:class的区别,直接使用class的话,后面跟的是常量,若使用:class,v-bind:class的话,后面需跟变量,可以实现动态地改变元素的样式 如下图代码: 在上述代码中,在button元素中,对class原生属性赋值了,也使用了:class的…

重温8年前项目部署

背景 同事表弟毕设&#xff0c;需要启动一个8年前GitHub项目&#xff01; 源码&#xff1a;GitHub - asinfo-ssyx/KindgartenPlatform: 幼儿园互动平台 部署步骤 一、Eclipse导入项目 使用 Projects from Folder or Archive 导入 选择项目目录 点击【选择文件夹】后如下 点…

WhaleScheduler为银行业全信创环境打造统一调度管理平台解决方案

项目背景 数字金融是数字经济的重要支撑和驱动力。近年来,我国针对数字金融的发展政策频频出台,《金融科技发展规划 (2022-2025年)》、《“十四五”数字经济发展规划》、《关于银行业保险业数字化转型的指导意见》、《金融标准化“十 四五”发展规划》等相继发布,顶层设计…

架构

我们以Spring Security中Servlet实现方式来介绍Spring Security整体架构,不会具体到具体的认证、授权来介绍Spring Security架构。如果让我们自己来写一个安全框架,我们需要将我们的框架置于项目中的哪个位置?很显然是在所有的请求到达Controller之前,在访问具体的某个Cont…

天花板!充值运营平台限时返场!

限时返场活动:活动有效期:2024-04-18 ~ 2024-04-28一、近期更新介绍 提现功能完善: 提现配置:多提现方式、日期限制、频率限制、金额限制、整数限制、单日限额、留存余额、代扣税率、手续费、可提现至余额(提现配置)提现记录:个人申请提现、后台审核自动(提现记录-及后…

【Docker系列】容器访问宿主机的Mysql

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

拖拽式工作流有哪几个优势?

拖拽式工作流优势特点突出,可以助力企业实现快速、高效、低成本的流程化办公。在信息技术迅猛发展的今天,如何助力中小型企业在数字化转型的过程中平稳过渡?又是如何让中小型企业摆脱数据孤岛、成本投入高等各种瓶颈和难题?低代码技术平台是近些年较为理想的平台产品,其中…

基于springboot的图书个性化推荐系统

介绍 图书个性化推荐系统的主要使用者分为管理员和学生,实现功能包括管理员:首页、个人中心、学生管理、图书分类管理、图书信息管理、图书预约管理、退换图书管理、管理员管理、留言板管理、系统管理,学生:首页、个人中心、图书预约管理、退换图书管理、我的收藏管理,前台…

java:多线程

多线程 在java程序中同时执行多个线程,每个线程独立执行不同的任务. 可以提高程序的性能和资源利用率,增加程序的并发性. 多线程的作用 1,提高程序性能 可以将一个任务分解成多个子任务并行处理,从而提高程序的运行速度 2,提高资源利用率 可以更好地利用CPU资源,提高CPU…

ThinkPHP 5.0.23 远程代码执行漏洞

漏洞检测工具 ThinkPHP 5.0 RCE检测工具 https://github.com/Lotus6/ThinkphpGUI/releases 解决办法 https://blog.csdn.net/sjsjshhs134654/article/details/131305418如果这篇文章对你有用,可以关注本人微信公众号获取更多ヽ(^ω^)ノ ~

【计算机毕业设计】点餐平台网站——后附源码

&#x1f389;**欢迎来到琛哥的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 琛哥&#xff0c;一名来自世界500强的资深程序猿&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 琛哥在深度学习任务中展现出卓越的能力&a…

Visual Components软件为您带来的价值 衡祖仿真

Visual Components具备丰富的3D仿真功能、快速建模能力、定制化应用程序逻辑和大量预定义组件库等多种特点,为自动化设备制造商、整合商、制造型公司提供简单、 快速和的设计方式,可以有效提高生产效率,并优化资源分配,避免制造过程中各种不可控事件带来的影响。Visual Com…

按吉他弦手不再疼痛的真正奧義!!~(姿勢

學吉他最痛苦的事情莫過”手痛”,網路上分析關於手痛的解決方式有好幾篇,不外乎就是…降弦、靠琴桁按弦、換弦的材質、換細弦、調弦距…等,我就不再多廢話講跟別人差不多的東西。但我發現有一件事情是很少老師提及的,那就是關於按弦的”姿勢”,其實姿勢/角度跟按弦的聲音好…

代码随想录图论

1. 所有可能的路径 class Solution:def allPathsSourceTarget(self, graph: List[List[int]]) -> List[List[int]]:def dfs(graph, result, path, root): #result 返回结果, path记录路径, root记录遍历到了第几个节点if root len(graph) - 1: #如果遍历到最后…

上海法院诉讼自如电费欺诈维权一审胜诉 All In One

上海法院诉讼自如电费欺诈维权一审胜诉 All In One 依法维权上海法院诉讼自如电费欺诈维权一审胜诉 All In One依法维权作为一个法律新手,从阅读学习有关法律法规,收集证据,法律咨询, 立案申请,法院受理,整理提交证据, 法院开庭,法庭辩论, 历时几个月的努力和耐心等待,最…