C语言:分支和循环(上)

分支和循环内容很多,因此分为上下两讲。本讲呢,主要是对分支和循环上讲做一个系统的介绍。可以根据目录知晓大概内容。

前言:C语言其实是一种结构化的程序设计语言,其基本结构分为顺序结构,选择结构,循环结构。顺序结构其实就是一条路走到尽头;选择结构相当于分岔路口,比如switch语句,if语句;循环结构则是转圈,比如while,do...while,for。

一切技术源于生活,C语言也不例外。生活中很多事其实都可以抽象成这三种基本结构或者它们的组合。程序员就是一位艺术家


1.if语句

1.1 if语句的基本语法形式

if(表达式)

     执行语句;

表达式成立则结果为真,表达式不成立,则结果为假。C语言中一般用0表示假,一切非零表示真。

例子:判断某个数是否是奇数

1.2 else语句

如上述例子,一个整数不是奇数就是偶数咯,else则引出了奇数的对立情况。语法形式如下:

if(表达式)

    语句1;

else

        语句2;

例子:判断成年(如果年龄大于等于18,打印输出“是成年人”,否则打印输出“不是成年人”)

1.3分支中包含多条语句

默认if...else 语句只能控制一条语句,若想控制多条语句,则使用大括号代码块

上图中所示代码表示IQ值大于115时,智商高于常人,我们称他为天才,大神。而输入41时,却也输出了大神,说明这一条语句是不受if语句控制的。

要想if来控制多条语句,就使用代码块。

此时,输入IQ小于115时,什么也没有输出。

1.4嵌套if

即多种判断结果。拿IQ值举例。

进阶练习:各个年龄阶段的称呼

上图是没有大括号的样子 ,下图是加入大括号的样子

建议还是加入大括号的好,逻辑清晰,容易看懂,而且也会避免一些问题。养成好的代码习惯是非常重要的。

1.5 悬空else问题

上面提到加上大括号有助于养成好的代码习惯。即使一条语句也要加入大括号也是为了避免一些不必要的麻烦。什么样的麻烦呢?列位看官,请看代码!

看官,请问它的打印输出结果是什么?hehe?还是haha?很有可能你是判断发现a不等于1,然后执行else语句输出haha。但实际上它什么也不输出!

再来一记!下面的代码输出结果又是什么?

您可能会判断a不等于1,则执行下一个if,发现b确实是2,于是打印输出hehe。结果有是错的!原因很简单,代码风格要良好!

其实以上两个代码是一样的,第二个if和else语句组成一个结构,再和第一个if语句组成一个嵌套结构。首先判断a不等于1,则不再执行后面的代码了。

为了看的更加明白,我们可以适当加入大括号。如下:

 由此可见,严谨的代码风格对于程序员来说是多么重要!

2.关系操作符

关系表达式中的运算符主要就是关系操作符,主要有以下几种:

> 大于操作符

<小于操作符

>=大于等于操作符

<=小于等于操作符

==判断相等操作符,注意和赋值运算符“ = ”区分

!=判断不相等操作符

关系表达式的值通常都是返回1表示真,返回0表示假。 

当“ == ”和“ = ”混淆的时候容易出现error。如下代码:“ a = 3 ”就是一个赋值表达式,恒为真。

解决办法就是:操作数写在"=="左边,表达式写在==右边,也就是将变量写在左边。如果误将==写成=,编译器就会报错!

 还有一个需要注意的事:多个关系运算符不宜连用!比如if(18 <= age <= 28)应该写成if(age >= 18 && age  <= 28)。&&表示并且。用它连接的两个表达式必须要同时为真,整个表达式才为真,if语句才会执行。

3. 条件操作符

条件操作符即三目操作符,需要三个操作数。格式: 表达式1?表达式2:表达式3

计算方法是 如果表达式1成立,计算表达式2;如果表达式1不成立,计算表达式3

举个例子:判断两个数中的较大数

4. 逻辑操作符:&&   ||    !

4.1 逻辑运算符

! 表示逻辑取反操作符,它可以把假的变成真的,把真的变成假的。

&& 与运算符,表示并且,上面简单提到过了的,&&两边的表达式为真,整个表达式的结果才为真,否则结果为假。

|| 或运算符 ,表示或者,||两边的表达式结果全为假,整个表达式结果才为假。

以上三个运算符都是双目操作符,只需要两个操作数。

对编程的学习是一个实践的过程。因此,来看一个例子巩固一下

运行结果: 

4.2 短路

这是C语言逻辑运算符的一个特点:从左往右对表达式依次计算。当左边的表达式满足后就不再对后面的表达式进行计算时,这种现象称为短路。

上图中的代码,month = 1时,if(month == 1 || month == 2 || month == 12)第一个表达式为真,后面的表达式就都没有计算了,这就是短路。还有一种短路:

这个代码就是满足左边的条件就看右边。如果左边不满足,那么整个表达式就不满足了。

简言之,短路有两种情况:A. a && b 中,左边的表达式不满足,就不再计算右边的表达式。B. a || b 中,左边的表达式满足了,即不再计算右边的表达式了。

5. switch语句

switch语句是if......else.......语句的一种表达方式,它也可以实现分支。

5.1 if语句和switch语句

例子巩固:

 

5.2 switch语句中的break

由图可知,break是用来跳出switch语句的,如果没有break,case将会继续往下执行。switch语句是入口,break语句是出口。

5.3 switch语句中的default

default用于表示case没有的情况。在switch语句中case和default没有顺序要求。

竟然都看到这儿了,点个赞支持一下呗!

​​​​​​​

  • 34
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值