分支语句可以在程序执行的时候从几组语句里选择一组,执行而忽略其他组,在编写程序的时候如果遇到多种可能性,每种可能性需要专门的语句处理,这种情况下就可以考虑采用分支结构解决问题

if关键字可以用来编写分支,if分支里需要为每种可能性编写专门的处理语句,每组语句需要一个配对的逻辑表达式,如果某个逻辑表达式结果为真就执行它后面大括号里面的语句

/*
* if分支演示
* */
#include <stdio.h>
int main() {
int num = 0;
printf("请输入一个数字:");
scanf("%d", &num);
/*if (num >= 0) {
printf("非负数\n");
}
else if (num < 0) {
printf("负数\n");
}*/
if (num > 0) {
printf("正数\n");
}
else if (num < 0) {
printf("负数\n");
}
else {
printf("零\n");
}
return 0;
}

编写if分支的时候最好首先把所有可能性的个数确定下来

/*
* if分支演示
* */
#include <stdio.h>
int main() {
int num = 0;
printf("请输入一个数字:");
scanf("%d", &num);
if (num < 0) {
printf("负数\n");
}
else if (num & 1) {
printf("奇数\n");
}
else if (!(num & 1)) {
printf("偶数\n");
}
return 0;
}

只有不会同时出现的多种可能性才可以用一个分支处理

如果一个if分支的多种可能性里必然有一种可能性,会出现就可以省略最后一组语句的逻辑表达式和if关键字

如果一个if分支里的多个逻辑表达式同时为真就执行第一个为真的逻辑表达式对应的语句,可以利用这一点简化if分支里的逻辑表达式,if分支里的每组语句和它前面的所有逻辑表达式都有关系(当前面的所有逻辑表达式都为假并且它配对的逻辑表达式为真的时候才会执行这组语句),编写if分支的时候尽可能把逻辑表达式简单的写在前面

/*
* if分支练习
* */
#include <stdio.h>
int main() {
int num = 0, num1 = 0, num2 = 0;
printf("请输入三个数字:");
scanf("%d%d%d", &num, &num1, &num2);
/*if (num < num1 && num < num2) {
printf("最小数字是%d\n", num);
}
else if (num1 < num && num1 < num2) {
printf("最小数字是%d\n", num1);
}
else if (num2 < num && num2 < num1) {
printf("最小数字是%d\n", num2);
}*/
if (num > num1) {
if (num1 > num2) {
printf("最小数字是%d\n", num2);
}
else {
printf("最小数字是%d\n", num1);
}
}
else {
if (num > num2) {
printf("最小数字是%d\n", num2);
}
else {
printf("最小数字是%d\n", num);
}
}
return 0;
}

如果每种可能性都可以用一个唯一的整数代表就可以采用switch...case格式编写分支解决

/*
* switch...case分支演示
* */
#include <stdio.h>
int main() {
int season = 0;
printf("请输入一个代表季节的整数:");
scanf("%d", &season);
switch (season) {
case 0:
printf("春天\n");
break;
case 1:
printf("夏天\n");
break;
case 2:
printf("秋天\n");
break;
case 3:
printf("冬天\n");
break;
default:
printf("不认识的数字\n");
break;
}
return 0;
}

循环语句可以让一组语句反复多次执行,for关键字可以用来编写循环语句,for循环里可以让一个变量依次代表一组数字,然后使用同样的语句对它代表的每个数字进行处理,这个变量叫做循环变量,按照统一的规律从第一个数字开始把每个数字都计算出来然后用循环变量代表它们采用如下结构描述循环变量的变化过程(把开始数字赋值给循环变量;用逻辑表达式描述循环变量和结束数字之间的关系;从前一个数字计算后一个数字的规则),如果一个问题的解决步骤可以用一组数字的变化过程描述就可以采用for循环解决这个问题

/*
* for循环演示
* */
#include <stdio.h>
int main() {
int num = 0;
for (num = 1;num <= 5;num++) {
printf("%d ", num);
}
printf("\n");
return 0;
}

假设有如下的for循环
for (1;2;3) {
4
}
它按照如下方式分组执行
[1,2][4,3,2][4,3,2]...[4,3,2]
第一组和其它组都不同,正常情况下for循环一定在两个相邻的组之间结束,如果某一组最后编号为2的逻辑表达式结果为真就启动下一组,否则立刻结束循环,当for循环正常结束后循环变量一定落在指定数字范围之外,for循环有可能不执行大括号里面的语句

for循环小括号里的每条语句都可以省略,如果省略中间的逻辑表达式就表示逻辑表达式的结果永远为真。这种循环不能正常结束,它们叫做死循环。

for循环小括号里最前面和最后面的部分可以是用逗号连接的多条语句

C99规范里允许在小括号里临时声明循环变量,这种循环变量只能在循环里使用,循环结束后这种循环变量就消失了

可以在循环里使用break;语句立刻结束循环的执行,一旦执行了break;语句之后循环里的所有语句都不再执行,包括循环变量也不再变化,如果循环采用break;语句结束则循环结束后循环变量一定落在指定范围之内,如果编写循环的时候不知道循环需要重复多少次就可以编写一个死循环,然后在循环里用break;语句结束它

/*
* for循环
* */
#include <stdio.h>
int main() {
int num = 0;
for (num = 0;num <= 40;num++) {
if (4 * num + 2 * (40 - num) == 100) {
printf("兔子有%d只,鸡有%d只\n", num, 40 - num);
break;
}
}
printf("num是%d\n", num);
return 0;
}

可以在循环里使用continue语句直接跳到循环大括号的末尾,中间的所有语句这次循环都不执行

/*
* for循环练习
* */
#include <stdio.h>
int main() {
int min = 0, num = 0;
printf("请输入一个数字:");
scanf("%d", &min);
for (num = min;num <= 100;num++) {
if (num % 10 == 7) {
continue;
}
if (num / 10 == 7) {
continue;
}
if (!(num % 7)) {
continue;
}
printf("%d ", num);
}
printf("\n");
return 0;
}

标准C语言(4)的更多相关文章

  1. 关于标准C语言的预定义宏【转】

    标准C语言预处理要求定义某些对象宏,每个预定义宏的名称一两个下划线字符开头和结尾,这些预定义宏不能被取消定义(#undef)或由编程人员重新定义.下面预定义宏表,被我抄了下来. __LINE__  当 ...

  2. 【部分原创】标准C语言的优先级、结合性、求值顺序、未定义行为和非确定行为浅析

    零. 优先级    在C++ Primer一书中,对于运算符的优先级是这样描述的:     Precedence specifies how the operands are grouped. It ...

  3. 标准SQL语言的用法

    原文链接:http://www.ifyao.com/2015/05/18/%E6%A0%87%E5%87%86%E7%9A%84sql%E8%AF%AD%E8%A8%80%E4%BD%BF%E7%94 ...

  4. 关于标准C语言的预定义宏

    标准C语言预处理要求定义某些对象宏,每个预定义宏的名称一两个下划线字符开头和结尾,这些预定义宏不能被取消定义(#undef)或由编程人员重新定义.下面预定义宏表,被我抄了下来.__LINE__  当前 ...

  5. UML标准建模语言与应用实例

    一.基本信息 标题:UML标准建模语言与应用实例 时间:2012 出版源:科技创新导报 领域分类:UML标准建模语言 面向对象 系统分析与设计 二.研究背景 问题定义:UML建模语言用图形来表现典型的 ...

  6. UML(统一建模语言)是通用的可视化标准建模语言。由构造块、公共机制、构架三部分组成。

    UML UML(统一建模语言)是通用的可视化标准建模语言.由构造块.公共机制.构架三部分组成. 1.构造块:包括基本的UML建模元素(类.接口.用例等).关系(关联关系.依赖关系.泛化关系.实现关系) ...

  7. 标准C 语言总结

    ***************C语言****************** --day01-- Linux是一个和Windows类似的操作系统 通常通过终端软件使用Linux操作系统 终端软件里只能使用 ...

  8. 标准C语言(1)

    C语言程序的绝大部分内容应该记录在以.c作为扩展名的文件里,这种文件叫源文件,C语言里还包含以.h作为扩展名的文件,这种文件叫做头文件 C语言程序里可以直接使用数字和加减乘除四则运算符号(*代表乘法, ...

  9. 【M35】让自己习惯于标准C++语言

    1.最近一些年C++语言增加的特性有: a.RTTI,namespace,bool,关键字mutable和explicit,enums,以及const static int可以直接初始化. b.扩充了 ...

  10. 标准C语言的输入输出流(i/o)方法详解

    cppreference.com -> 标准 C I/O ->详细说明 标准 C I/O clearerr 语法: #include <stdio.h> void cleare ...

随机推荐

  1. springboot集成springcloud,启动时报错java.lang.AbstractMethodError: null

    出现这个问题是springboot和springcloud的版本不匹配. 我此处使用了springboot 2.0.4.RELEASE,springcloud 使用了Finchley.SR2. 修改方 ...

  2. golang(10)interface应用和复习

    原文链接 http://www.limerence2017.com/2019/10/11/golang15/ interface 意义? golang 为什么要创造interface这种机制呢?我个人 ...

  3. Asp.Net Core 反向工程

    反向工程1.反向工程是实体类型类和一个基于数据库架构的 DbContext 类的基架的过程2.Scaffold-DbContext(数据库上下文脚手架)    使用Scaffold-DbContext ...

  4. 8 Spring / Spring MVC / Mybatis 框架相关知识点

    1)Spring 的 IOC 和 AOP 有了解吗? IOC:控制反转,不需要手动 new 对象,将其交给 Spring 容器,降低程序耦合度. AOP:面向切面编程,动态代理技术.

  5. 一个SQL注释引发的线上问题

    最近开始服务拆分,时间将近半个月.测试阶段也非常顺利,没有什么问题. 但上线之后的第二天,产品就风风火火的来找我们了,一看就是线上有什么问题.我们也不敢说,我们也不敢问,线上的后台商品忽然无法上架了, ...

  6. 小记--------spark内核架构原理分析

      首先会将jar包上传到机器(服务器上)     1.在这台机器上会产生一个Application(也就是自己的spark程序)     2.然后通过spark-submit(shell) 提交程序 ...

  7. # 模乘(解决乘法取模爆long long)

    模乘(解决乘法取模爆long long) 二进制思想,变乘法为多次加法,具体思想跟着代码手算一遍就理解了,挺简单的 ll qmul(ll a,ll b,ll m) { ll ans=0; while( ...

  8. c++学习之对象和类——构造函数和析构函数

    再认真理一遍~ 0.类 这里先来定义一个类,便于后面的理解.参考C++ Primer Plus class Stock { private: std::string company; long sha ...

  9. linux基础命令<二>

    1.关机 init 0   poweroff   halt  shutdown –h   now 2.重启 init 6   reboot  shutdown –r now 3.查询都有那些用户在系统 ...

  10. Codeforces 1178B. WOW Factor

    传送门 显然对每个 $o$ ,考虑左边和右边分别有多少 $w$,那么这个 $o$ 的贡献就是左右 $w$ 的出现次数相乘 $w$ 的出现次数可以直接根据每一段连续的 $v$ 得到 那么从左到右扫一遍, ...