1.if(else)语句
1.1if语句的形式
在C语言中if语句是常见的分支语句,if就像是我们生活中遇到的选择一样,具有较强的逻辑性,它的使用格式如下
这里的expression为条件判断语句,如果条件成立则执行statememnt语句,statement可以是一条语句也可以是复合语句。if语句与while循环十分相似不过if语句的条件如果成立的话statement只执行一次。
这时如果输入小于40的数字是不会出现运行结果的,我们可以采用两个if语句
像这种情况C语句给我们提供了if else语句,格式为
当if的判断表达式不成立时则执行else下面的语句,上面的例子也可以写成
1.2嵌套语句
当有很多种情况的时候,我们可以使用嵌套if else语句,比如贴近生活的阶梯电费
例如国家电玩好的收费标准为当用户每月用电量小于210度时,按0.5/度收费;当用电量大于210度但时小于400度时,每度电上调0.05元的费用;当用户用电量大于400度时,每度电加价0.3元。直观的表示为
接下来我们用if else语句来实现一下,这里就采用了嵌套else语句,if语句也可以嵌套,称为嵌套if语句
1.3悬空else
这里要谨记的一点就是else与离它最近的if配对,用一个简单的例子说明一下
int main()
{
int a, b;
scanf("%d %d", &a, &b);
if (a == 1)
if (b ==1)
printf("b is good");
else
printf("b is bad");
return 0;
我们来思考一下当我们分别输入0 0,0 1,1 0和1 1时输出分别是什么
从运行结果来看没有输出 ,并不是像我们想的那样if语句不成立就执行else,这是因为else并不与第一个if配对,它与离它最近的if也就是第二个if配对。当a为0时第一个if的条件判断语句不成立,而第二个ifelse语句时嵌套在它里面的,所以下面的程序不被执行没有输出。
当a为1时表达式成立,因此就可以进入下一个if else语句的判断,这时就有了输出。
其实我们能在平常写代码的时候VS的代码格式是很便于我理解的,这里主要是为了让大家学习悬空else的问题。
1.4else if 语句
else if语句主要是为了是我们的代码更简洁高效,如果在else后面有嵌套的if,那么就可以直接写成else if,用我们刚才举的例子
2.switch语句
在C语言中不止有一个分支语句,除了if外还有switch语句,如果程序有多重选择,我们可以考虑使用switch语句
2.1switch语句的形式
在这里必须要注意的两点就是
1.expression语句必须是int表达式,并且必须是能计算出结果的表达式,这一点与if不同,if后的表 达式可以是一个范围
2.case后的值必须是整形常量表达式
2.2switch语句的使用
1.break的使用
举个例子说明一下,比如输入编号输出对应的就诊信息
当我们输入1和2时并没有输出我们想要的结果,这是因为当我们输入1后执行了case的内容,但时没有遇到结束的指令所以程序会一直向下执行,大家可以对比着分析输入2的情况。解决这种问题我们只需要在要执行的语句后加上break即可。如下图所示这样就可输出我们想要的结果
2.default的使用
在上面的例子中如果输入4会是什么结果呢,case中没有与之相匹配的值该怎么输出?如果按照上面的程序运行的话将没有输出。当输入的数据不符合时,输出要用default定义。在上个例子中如果输入的不是1,2,3,我们将提示请重新输入。
注意:default的位置在switch语句中是任意的,不一定非要放到最后
3.跳转语句
break,continue和goto都能实现程序的跳转
在上次我们已经介绍过break和continue,break可以实现循环的终止,continue为跳过本次循环后面所剩下的代码。现在介绍一下goto语句。
在早期的BASIC和FORTRAN中经常使用goto语句。但在C语言中我们很少使用goto语句,因为没有goto语句程序也可以很好的运行,具体的来说就是break和continue很好的取代了goto语句的使用,并且goto语句有时候会带来一些不必要的麻烦。
3.1goto语句的使用
goto语句包含两部分,goto和标签名。例如goto end;程序就会跳到end所支配的语句,下面举例表示一下goto的用法,在C语言中几乎不使用goto语句,在这里我们只做一个简单的介绍。