程序的三种结构:顺序、分支、循环

1、顺序 按照先后顺序执行

int a = 5;

int b =7;

先执行a= 5,在执行b=7.

2、分支:if分支有三种形式

形式1:

if(条件表达式){

语句

}

先执行()内的条件表达式,如果条件表达式结果为真,则执行if后面{}内的代码;如果条件表达式结果为假,则跳过{ }内的代码,执行if语句后面的代码。

注意:

上述代码表达式括号()后面跟了’;',导致if语句为空语句,大括号内的语句跟if语句没有关系,无论条件真假都会执行语句。

在if条件表达中,等号== 常量写于变量前面,为了防止等号 == 写不全。

一般的声明的变量只能写在 = 前面。

形式2:

if(条件表达式){

语句1;

}else{

语句2;

}

当条件表达式为真时,执行语句1,否则执行语句2.

例题:

输入一个年份,判断该年份是否是闰年?如果是闰年,则输出该年是闰年,否则输出该年不是闰年

提示:闰年:能被400整除或者能被4整除但是不能被100整除

int year = 0;

printf("Pleaseenter a year: \n");

scanf("%d",&year);

if((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) {

printf("The year is a leap year. \n");

}

else{

printf("The year ia a non-leapyear. \n");

}

注意:

if中的条件表达式比较复杂,可读性差。最好的在括号外面定义,增强可读性。如下:

BOOL r1 = (year % 400 == 0);

BOOL r2 = (year % 4 == 0) && (year % 100 != 0);

if (r1 || r2) {

printf("该年是闰年. \n");

}else {

printf("该年不是闰年. \n");

}

形式3、

if(条件表达式1){

语句1;

}else if(条件表达式2){

语句2;

}else{

语句3

}

如果条件表达式1为真,执行语句1。如果条件表达式1为假,条件表达式2为真,执行语句2。如果条件表达式1与条件表达式2都为假,执行语句3。

注意:if-else 最多使用2组。多于2组的使用switch –case函数。

例题:

从键盘输入一个字符,如果是数字打印this is digital。如果是大写字母,打印this is capital letter。如果是小写字母,打印this is letter。如果是其他字符,打印 other。

char m = 0;

printf("please enter a character; \n");

scanf("%c", &m);

if (m >= '0' && m <= '9') {

printf("this is digital. \n");

}else if (m >= 'A' && m <= 'Z'){

printf("this is capital letter. \n");

}else if (m >= 'a' && m <= 'z'){

printf("this is letter. \n");

}else{

printf("other \n");

}

3、条件运算符  ?

公式:条件表达式 ? 表达式1 :表达式2

条件表达式结果是:真或假

如果条件表达式结果为真,则运算结果为表达式1的结果;

如果条件表达式结果为假,则运算结果为表达式2的结果;

例题:

比较两个数,定义变量接受两个数中的最小值

if/else 实现

int num1 = 2;

int num2 = 4;

int minValue = 0; //存放最小值

if (num1 > num2) {

minValue = num2; //num1的值大于num2

}else {

minValue = num1; //num1的值小于num2

}

printf("minValue = %d", minValue);

条件运算符实现:

minValue = num1 > num2 ? num2 : num1;

printf("minValue= %d", minValue);

4、switch语句

格式:

switch(整型/字符型表达式) {

case 值1:{   语句1;break;  }

case 值2:{   语句2;break;  }

…….

case 值n:{   语句n;break;  }

default:{    语句n+1;break;  }

}

1、如果表达式的值没有和任何一个case后面的值匹配成功,程序直接执行default语句。

2、default分支如果没有语句,可以没有{},但是必须要有break。

3、break语句在switch中的作用:结束当前case分支的执行,并且结束switch语句

4、多个case可以运行同一个代码段

5、整个default语句都可以去掉

6、case中定义变量需要加{ }。case后面的值是整型或字符型常量、整型常量表达式。不能使用变量。

例题:

按照考试成绩(A、B、C、D)的等级输出百分制分数段,A、B、C :输出60分以上 D:输出60分以下

char level = 'A';

switch (level) {

case 'A':

case 'B':

case 'C':{

printf("60分以上 \n");

break;

}

case 'D':{

printf("60分以下 \n");

break;

}

default:

break;

}

return 0;

}

c语言分支程序讲解,C语言基础知识之(二):分支相关推荐

  1. 程序员必备计算机基础知识总结电子书下载

    程序员必备计算机基础知识总结电子书下载 日常 9分钟前 2阅读0点赞0评论 给大家推荐一本超级经典的计算机基础知识的书! 这本书主要是程序员必知的硬核基础知识,非常经典的入门书籍,小编吧内容看了适合看 ...

  2. 微信小程序开发数据缓存基础知识辨析以及运用实例

    微信小程序开发数据缓存基础知识辨析以及运用实例 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的 ...

  3. 计算机中央处理器相关知识,软考程序员考点计算机硬件基础知识之中央处理器CPU...

    下面希赛小编为大家整理的软考程序员考点计算机硬件基础知识之中央处理器CPU,希望能帮助学友们.具体内容如下: 中央处理器 中央处理器(CPU,Central Processing Unit)是一块超大 ...

  4. Java基础知识(二)(Object类的常用方法、日期时间类、System类、StringBuilder类、包装类、Collection集合、Iterator迭代器、泛型、list集Set接口...)

    文章目录 Java基础知识(二) 1.Object类的常用方法 1.1 toString方法 1.2 equals方法 1.3 Objects类 2.日期时间类 2.1 Date类 2.2 DateF ...

  5. Vue基础知识总结(二):进阶篇

    Vue基础知识总结(二):进阶篇 1.0 MVVM模式 MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式. MVVM模式将页面,分层了 M .V.和VM , ...

  6. Android基础知识(二十):Notification、提醒式通知(横幅)踩坑与通知界面设置跳转

    Android基础知识(二十):Notification.提醒式通知(横幅)踩坑与通知界面设置跳转 一.Notification通知与基本用法 通知Notification是Android系统中比较有 ...

  7. (硅谷课堂项目)Java开发笔记4:前端基础知识(二)

    文章目录 (硅谷课堂项目)Java开发笔记4:前端基础知识(二) 一.NPM 1.NPM简介 1.1.什么是NPM 1.2.NPM工具的安装位置 2.使用npm管理项目 2.1.创建文件夹npm 2. ...

  8. 办公自动化基础知识题二

    办公自动化基础知识题二 一.选择题 1.软盘不能写入只能读出的原因是___. (A) A)写保护 B)新盘未格式化 C)已使用过的软盘 D)软驱有问题  2.下列设备中属于计算机输入设备的是___.  ...

  9. ZigBee基础知识(二)

    目录 2.1 设备类型(Device Types) 2.1.1 Coordinator(协调器) 2.1.2 Router(路由器) 2.1.3 End-Device(终端设备) 2.2 协议栈规范( ...

最新文章

  1. 【考试认证专场】大牛带你全面掌握学习技巧,攻克考试难题(8.2-8.6精品课程限时特惠)...
  2. 我在想,技术博不能荒废
  3. ssm查询一条数据并显示_高亮显示查询数据,其实很简单
  4. Repeater嵌套HyperLink,前台代码中绑定参数
  5. 毕业多年,我们转变了多少?
  6. 如何理解在数据类型中元素不能修改?
  7. JavaScript从入门到放弃 -(五)函数进阶(高级用法)
  8. BatchNorm中forward未被调用原因
  9. 机器学习 | 算法笔记- 集成学习(Ensemble Learning)
  10. springboot中添加静态资源的方式,默认的静态资源文件夹有哪些
  11. QQ 木子版 vs 现在的某些修改版
  12. 生成条形码二维码DataMatrix条码.EAN码.39码.交叉25码.UPC码.128码.93码.ISBN码.Codabar等
  13. U盘制作微pe工具箱(实战)
  14. 临时的实验课记录+研究的代码+计算机文档目录管理
  15. 网页显示mysql数据库到表格数据_html表格显示数据库数据
  16. NoViableAltException(379@[2389:1: columnNameTypeOrConstraint : ( ( tableConstraint ) | ( columnNameT
  17. Win7 桌面右键一直转圈很慢
  18. EL表达式的语法、用法及说明
  19. 持安科技CEO何艺:零信任在实战攻防演练中的价值
  20. 每日一学:Python 将时间戳转换为指定格式日期

热门文章

  1. Springboot+学生作业管理系统 毕业设计-附源码251208
  2. Docker搭建STF
  3. Swagger2常用注解说明
  4. 高德地图API JS实现获取坐标和回显点标记
  5. java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.vick.myapp/com.vick.mya
  6. 中国科学院大学计算机学院夏令营,2019年中国科学院大学生数学夏令营招募通知...
  7. iNFTnews丨Web3正吸引着全球顶尖人才的目光
  8. PhpWind Wordpress Discus 论坛搭建
  9. 申请软著需要什么材料,多长时间下证?
  10. 我们该如何进行bug总结?