【C语言入门教程】3.3 条件控制语句
在程序的 3 种基本结构中,第二种是选择结构,选择结构是根据程序运行时获得的条件,决定程序执行情况。条件控制语句可用来实现这种结构,C 语言提供了 if 语句和 switch 语句两种条件控制语句,if 语句用于二选一的情况,而 switch 语句用于多选一的情况。
3.3.1 if 语句
if 语句通过表达式的值判读是否执行与其关联的代码,当表达式结果为 0 时,不执行关联的代码,当表达式结果为非 0 时,则执行关联的代码。使用 if 语句的格式为:
if (表达式) { 语句 }
如下例所示:
int a, b; // 声明两个整型变量
printf("请输入数值,格式为:a,b\n"); // 提示数据输入的格式
scanf("%d,%d", &a, &b); // 输入两个数值,存入变量 a 和 b 中
if (a > b) // 判读变量 a 是否大于 b
{
printf("数值 a 大于数值 b"); // 当变量 a 大于变量 b 时,执行此输出语句
} if (a <= b) // 判读变量 a 是否不大于 b
{
printf("数值 a 不大于数值 b");
}
该代码的作用是比较输入的两个变量的大小,其中使用了两组 if 语句实现,将问题分解为两种不同的条件。在这种情况下,可加入 else 语句简化代码,else 的作用是在前面的 if 条件表达式为 非0 的情况下,执行其后一组关联的代码。如下例所示:
if (a > b)
{
printf("数值 a 大于数值 b");
}
else
{
printf("数值 a 不大于数值 b");
}
if 语句也可以实现多选一的条件判读。在比较两个数值的大小时,如果需要考虑两个数值相等的情况,则可以使用 else if 语句实现。如下例所示:
if (a > b)
{
printf("数值 a 大于数值 b");
}
else if (a == b)
{
printf("数值 a 等于数值 b");
}
else
{
printf("数值 a 小于数值 b");
}
if 语句可多层嵌套,即在关联代码中,包含另外的 if 语句。需要注意的是,没组 if 语句要与同一层次的 else if 语句 和 else 语句条件相对应,否则会出现程序逻辑错误。前面的数值比较问题没有判读输入数值是否合法,可加入一组 if 语句解决此问题,如下例代码所示:
if (scanf("%d,%d", &a, &b) != 2) // 根据 scanf()函数的返回值,检查输入是否为 2 个数值
{
printf("输入的数值格式不合法");
}
else
{
if (a > b)
{
printf("数值 a 大于 数值 b");
}
else if (a == b)
{
printf("数值 a 等于数值 b");
}
else
{
printf("数值 a 小于数值 b");
}
}
上例利用了 scanf() 函数的返回值判读输入的数据是否合法,scanf() 函数会返回有效取得数值的个数。在第一组的 if 语句内,嵌套了比较两个变量大小的 if 语句。
注意:被嵌套的代码可增加每行前的空格缩进,这种书写习惯能提高代码的可读性,避免混淆了不同层次的条件语句。
3.3.2 switch 语句
当需要使用多选一的选择结构时,可使用 switch 语句实现相当于 if 语句与多个 else if 语句的组合,并且能实现将多个满足条件的分支执行。switch 语句的基本结构如下:
switch (表达式)
{
case 常量表达式 1 :
关联代码 1;
<break 终止命令>
case 常量表达式 2 :
关联代码 2;
<break 终止命令>
.
.
.
case 常量表达式 n :
关联代码 n;
<break 终止命令>
default : 关联代码 n+1;
}
switch 语句的表达式与 case 子语句的常量表达式进行比较。如果结果相等,则执行 case 子语句内相关联的代码。switch 语句会依次执行每个满足条件的 case 子语句,当一个 case 子语句条件满足后,如果希望终止 switch 语句的执行,可加入 break 命令。break 命令执行后,其后的 case 子语句 和 default 子语句 和 default 子子语句都被跳过。default 子语句是默认执行条件,如果没有 case 子语句满足条件,或者 执行的case 子语句没有使用 break 命令终止 switch 语句执行,则 default相关联的代码被执行。如下例所示:
int c;
printf("请输入五分制成绩:");
scanf("%d", &c);
switch (c)
{
case 5 :
printf("\n成绩为 优秀");
break;
case 4 :
printf("\n成绩为 良好");
break;
case 3 :
printf("\n成绩为 及格");
break;
default :
printf("\n成绩为 不及格");
}
switch 语句可嵌套使用,与 if 语句一样需要注意没组语句的对应关系。另外,case 子语句必须用常量表达式作为条件,否则会造成语法错误。
【C语言入门教程】3.3 条件控制语句的更多相关文章
- 《Ruby语言入门教程v1.0》学习笔记-01
<Ruby语言入门教程v1.0> 编著:张开川 邮箱:kaichuan_zhang@126.com 想要学习ruby是因为公司的自动化测试使用到了ruby语言,但是公司关于ruby只给了一 ...
- 《JavaScript语言入门教程》记录整理:入门和数据类型
目录 入门篇 js介绍 历史 基本语法 数据类型 概述 null 和 undefined 数值 字符串 对象 函数 数组 本系列基于阮一峰老师的<JavaScrip语言入门教程>或< ...
- 《JavaScript语言入门教程》记录整理:运算符、语法和标准库
目录 运算符 算数运算符 比较运算符 布尔运算符 二进制位运算符 void和逗号运算符 运算顺序 语法 数据类型的转换 错误处理机制 编程风格 console对象和控制台 标准库 Object对象 属 ...
- C语言入门教程-(5)格式化输入输出
1.输入和输出 在程序的使用中,我们经常可以看的这么一个场景:用户需要输入数据,经过程序运算,得到结果后输出.在C语言中,输入数据和输出数据都是由库函数完成的,通过语句来输入/输出. 2.格式化输出— ...
- Go语言入门教程(十)之函数
Hello 各位小伙伴大家好,我是小栈君,假期一眨眼就过去了.不知道大家玩的是否开心呢? 上次我们讲到了关于Go语言的流程控制,小栈君也希望小伙伴跟着小栈君一步一个脚印的敲一下代码,相互进步.本期我们 ...
- c语言该怎么入门?C语言入门教程(非常详细)
C语言是一门面向过程的编译型语言,它的运行速度极快,仅次于汇编语言.C语言是计算机产业的核心语言,操作系统.硬件驱动.关键组件.数据库等都离不开C语言:不学习C语言,就不能了解计算机底层. 这套「C语 ...
- 《JavaScript语言入门教程》记录整理:面向对象
目录 面向对象编程 实例对象与 new 命令 this关键字 对象的继承 Object对象的方法 严格模式(strict mode) 本系列基于阮一峰老师的<JavaScrip语言入门教程> ...
- Go 语言入门教程,共32讲,6小时(已完结)
Go语言入门教程,共32讲,6小时(完结) 在B站:https://www.bilibili.com/video/BV1fD4y1m7TD/
- 【C语言入门教程】3.4 循环控制语句
循环结构又称重复结构,是程序的 种基本结构之一.它反复执行循环体内的代码,解决需要大量重复处理的问题.循环结构由循环控制语句实现,其中内建有条件控制语句,用来判读是否继续执行循环操作.C 语言提供了 ...
随机推荐
- 帝国cms一些常用的修改路径
1.信息提示改成弹出框提示 修改e/message/index.php 2.修改提示信息 语言包e/data/language/gb/pub/q_message.php 3.文章设置权限后没登录提示模 ...
- Guava集合-BiMap
在本篇文章中我们将介绍Guava集合中的BiMap这个接口. com.google.common.collect Interface BiMap<K,V> BiMap接口的父接口是Map& ...
- MySQL安装问题
win8.1安装mysql5.6时遇到问题,主要出现最后一步配置卡在了start server这一步会弹窗配置时间过长. 在网上查找方式并尝试之后都不能解决问题,尝试了卸载软件,清理注册表中的mysq ...
- 【原】requirejs学习笔记
随着JS越来越庞大,已经不仅仅是以前复制粘贴做特效的时代了,JS越来越偏向于业务逻辑与应用.JS在web开发中占有越来越重要的地位. 由于JS代码庞大,文件数目多,传统的使用<script sr ...
- geoip scala api
#!/bin/bash /home/hadoop/spark-1.6.2/bin/spark-shell --master spark://hbase11:7077 --executor-memory ...
- javaWeb加载Properties文件
public static Properties loadProps(String fileName) { Properties props = null; InputStream is = null ...
- CodeForces 459A Pashmak and Garden(水~几何-给两点求两点组成正方形)
题目链接:http://codeforces.com/problemset/problem/459/A 题目大意: 给出两个点(在坐标轴中),求另外两个点从而构成一个正方形,该正方形与坐标轴平行. 如 ...
- CentOS_PHP_NGINX_FastCGI
yum安装nginx,它会默认作为一个服务加到系统中,启动nginx: service nginx start/nginx -s start 他有4个参数(start|stop|restart|rel ...
- init.php 建立自己的前端共享文件
文件位置:include/init.php 1.新建文件lib_xxx.php(lib_liangxin.php) 2.在文件init.php 第74行加入代码 require(ROOT_PATH . ...
- CSS3 让图片镜像对称
1.HTML代码 <!DOCTYPE html> <html> <head> <title>test</title> </head&g ...