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

嵌入式初学-C语言-八

#接嵌入式初学-C语言-七#

分支结构

分支结构:又被称之为选择结构

选择结构的形式

多分支

语法:

if(条件1)
{
语句1;
} else if(条件2)
{
语句2;
}
...
else {
语句n+1;
}

案例:

#include <stdio.h>
int main()
{
// 需求:编一程序,要求输入一个x值,输出y值
// 方式1:嵌套的if..
int x,y;
printf("请输入一个整数:\n");
scanf("%d",&x);
// 条件判断
if(x < 0)
{
y = -1;
}
else
{
// x >= 0
if(x == 0)
{
y = 0;
}
else
{
y = 1;
}
}
printf("方式1:x=%d,y=%d\n",x,y);
// 方式2:多分支if..else if....else..
// 条件判断
if(x < 0)
{
y = -1;
}
else if(x == 0)
{
y = 0;
}
else
{
y = 1;
}
printf("方式2:x=%d,y=%d\n",x,y);
}

案例:

#include <stdio.h>
/**
* 需求:高校要求对实训学生根据实训成绩进行评级
范围:0 <= score <= 100;
评级:
score >= 90 优秀
score >= 80 良好
score >= 70 中等
score >= 60 及格
score < 60 不及格
*/
int main()
{
// 声明一个变量,存储成绩
int score;
printf("请录入学生成绩:\n");
scanf("%d",&score);
// 对score进行合法校验
if(score >= 0 && score <= 100)
{
// 对合法输入的成绩进行评级
if(score >= 90)
{
printf("优秀\n");
}
else if(score >= 80)
{
printf("良好\n");
}
else if(score >= 70)
{
printf("中等\n");
}
else if(score >= 60)
{
printf("及格\n");
}
else
{
printf("不及格\n");
}
}
else
{
printf("成绩录入不合法!\n");
}
}

switch

语法:

switch(表达式) // 不能是布尔型和 浮点型
{
case 常量表达式1:语句体1;break;
case 常量表达式2:语句体2;break;
...
case 常量表达式n:语句体n;break;
default:语句体n+1;break;// 可以省略
}

说明:

⑴ switch后括号内的表达式可以是任何类型的表达式;

⑵ 若表达式的值与某个常量表达式的值相等时,执行此case后面的语句;若没有相等的值时,执行 default后面的语句;

⑶ 每个case后面的常量表达式的值都必须不相同,否则出现矛盾;

⑷ 各个case 和default出现的次序不影响执行结果;

⑸ case后面的语句中如果没有break语句,则执行完本case后的语句会接着执行下面的case(case穿 透) ;

⑹ 多个case可共用一组语句。

注意:

1. 表达式一般写一个变量,变量的值是一个确定的常量。

2. 当遇到break或者switch语句的右大括号时,switch语句结束。

3. 表达式中的数据类型:char,short,int,long,long long,不能是浮点型。 表达式和常量的数据类型要一致(支持隐式转换),比较是否相同。

案例:

1.需求:根据成绩进行评级

评级:

90 <= score < 100 优秀 90~99/10 == 9 && 100/10 ==10

80 <= score < 90 良好 80~89/10 == 8

70 <= score < 80 中等 70~79/10 == 7

60 <= score < 70 及格 60~69/10 == 6

score < 60 不及格

#include <stdio.h>
int main()
{int score;// 成绩printf("请输入实训成绩:\n");scanf("%d",&score);if(score >= 0 && score <= 100){// 对成绩进行加工int l = score / 10;switch(l){case 10:// 100分case 9:// 90~99分printf("优秀\n"); // 这里:多个case共用一块代码break;case 8:printf("良好\n");break;case 7:printf("中等\n");break;case 6:printf("及格\n");break;default:printf("不及格\n");}}else{printf("成绩录入不合法!\n");}
}

2.需求:实现一个简易计算器,要求实现+,-,×,/运算

#include <stdio.h>int main()
{printf("简易计算器 v1.0\n");printf("请输入两个操作数:\n");double x,y;// 存放计算数char ch;// 运算符scanf("%lf,%lf",&x,&y);scanf("%c",&ch);// 消除上面产生的最后一个回车符printf("请输入运算符:(+、-、.*、/)\n");scanf("%c",&ch);
// 计算switch(ch){case '+':printf("%.2lf+%.2lf=%.2lf\n",x,y,x+y);break;case '-':printf("%.2lf-%.2lf=%.2lf\n",x,y,x-y);break;case '.':case '*':printf("%.2lf*%.2lf=%.2lf\n",x,y,x*y);break;case '/':if(y == 0){printf("除数不能为0\n");}else{printf("%.2lf/%.2lf=%.2lf\n",x,y,x/y);}break;default:printf("输入错误!");}return 0;
}

switch语句的case穿透:

1. case穿透:当case后的break被省略;就会直接执行它后面紧跟的case中的语句(不会判断表达式是 否和它后面的case常量是否相同),这样的现象称之为case穿透。

2. default语句一般放在所有case之后,表明所有的case都不成立时,执行default中的语句;default语 句可以放在switch语句{}内的任意位置。

扩展

条件表达式中的运算符优先级

逻辑非(!) > 算数运算符 (+-*/%)>关系运算符(> < >= 逻辑运算符(&&、||)> 赋 值运算符(=、+=)

设置vim中tab字符数

set tabstop=4

set shiftwidth=4

set expandtab

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Computer Analysis and Visualisation CITS2401
  • [C#]调用本地摄像头录制视频并保存
  • Python 环境管理大师:Virtualenv
  • redis存储结构
  • 蓝牙网关厂家推荐:北京桂花网科技有限公司
  • CSS 创建:从入门到精通
  • 力扣高频SQL 50题(基础版)第二十六题
  • 3.5.2、查找和排序算法-查找算法
  • 【区块链】浅谈面向小白的关于BlockChain那些事
  • 监控网络丢包脚本
  • C#中的泛型约束:如何利用泛型约束来提高代码的类型安全性和灵活性?
  • Git(分布式版本控制系统)、Gitlab、分支、分支冲突
  • 苦学Opencv的第十四天:人脸检测和人脸识别
  • Lambda和Stream让代码简洁的七大原则
  • Java常见的面试二
  • codis proxy处理流程
  • go append函数以及写入
  • JAVA多线程机制解析-volatilesynchronized
  • MySQL的数据类型
  • PAT A1120
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • Python学习之路16-使用API
  • Tornado学习笔记(1)
  • Vim 折腾记
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 盘点那些不知名却常用的 Git 操作
  • 浅谈Golang中select的用法
  • 如何胜任知名企业的商业数据分析师?
  • 网络应用优化——时延与带宽
  • 正则学习笔记
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 湖北分布式智能数据采集方法有哪些?
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • #NOIP 2014# day.2 T2 寻找道路
  • #stm32驱动外设模块总结w5500模块
  • #window11设置系统变量#
  • (2024,Flag-DiT,文本引导的多模态生成,SR,统一的标记化,RoPE、RMSNorm 和流匹配)Lumina-T2X
  • (4)(4.6) Triducer
  • (C语言)字符分类函数
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (JS基础)String 类型
  • (libusb) usb口自动刷新
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (苍穹外卖)day03菜品管理
  • (二)WCF的Binding模型
  • (力扣)1314.矩阵区域和
  • (四)js前端开发中设计模式之工厂方法模式
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • (自用)交互协议设计——protobuf序列化
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • *1 计算机基础和操作系统基础及几大协议
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .ai域名是什么后缀?
  • .bashrc在哪里,alias妙用