【C语言】以深厚地基筑伟岸高楼-基础篇(四)

嵌套的if-else语句

当if的条件满足或者不满足的时候要执行的语句也是一个if或者if-else语句,这就是嵌套的if语句
小例子:

#include <stdio.h>
int main()
{
	int a = 10;
	int b = 20;
	int c = 15;
	int d = 25;
	if ( a < b ){
		if ( b < c ){
			if ( c < d ){
			printf (" 1 ");
			}
			else {
			printf (" 2 ");
			}
		}
		else {
			printf (" 3 ");
		}
	}

return 0;	

这个代码并没有什么实际意思,仅仅是展示嵌套的if语句这个格式可以这样写而已。

else的匹配

  • else总是和最近的那个if相匹配
  • 缩进格式并不能代表或者驱使if,else之间的匹配
  • 注意大括号的位置,在不同大括号之内的if与else并不能进行匹配

良好的编程习惯

  • 在每写一个if或者else之后,在其后总是带上{}这样的大括号来进行表达
  • 即使只有一个语句,也需要放在大括号内哦

级联的if-else语句

一般的写法为:
if ( exp 1 )
st 1;
else if ( exp 2 )
st2;
……
else if ( exp n-1 )
st n-1;
else
st n;
通过一个代码来切实的展示一下这个格式,
来看一个分段函数:

#include <stdio.h>
int main()
{
	double x ;
	scanf("%lf", &x);
	double f = 0;
	if ( x < 0){
		f = -1;
	}
	else { if ( x == 0){  
				f = 0 ;          
			}
			else{             
				f = 2*x;    
			}
		}
		
	printf("%f", f);
	return 0;
}

这个就是一个级联的if-else语句
但是它看着会不会很复杂,很难看懂呢?
我们可以对它进行一下简化:

#include <stdio.h>
int main()
{
	double x ;
	scanf("%lf", &x);
	double f = 0;
	if ( x < 0){
		f = -1;
	}else if ( x == 0){   
		f = 0 ;         
	}else{             
		f = 2 * x;    
	}	
	printf("%f", f);
	return 0;
}

这样代码是不是看起来简单易懂了很多呢,其实在这个代码中的else后边也是需要大括号的,但是为了提高代码的可读性,而去掉了。所以当else和if连在一起时,中间不再有大括号,而这样的if-else语句,也被称为级联的if-else

if语句的常见错误

  • 忘了带上大括号 大括号是一定要带的,这样方便自己检查,也方便阅读if和else间的关系
  • 在if后边带上了分号 分号代表一个语句的结束,如果if后边有分号,那么程序就无法进入到if后的大括号之内了
  • 错误的使用==和= 在程序运行中“==”表示相等的关系,而“=”表示一个赋值语句
  • 在if与else的匹配上出现失误

多路分支

我们来看一个代码:

#include <stdio.h>
int main()
{
	int type ;
	scanf("%d", &type);
	printf("\n");
	if ( type==1 )
		printf("你好\n");
	else if ( type==2 )
		printf("早上好\n");
	else if ( type==3 )
		printf("晚上好\n");
	else if ( type==4 )
		printf("再见\n");
	else 
		printf("啊,你在讲什么啊?\n");
		
	return 0; 
}

这个代码在作用是一个具有简单答复功能的语句,我们输入数字,它给我们打印出对应数字返还的语句。
这个程序在运行的时候是从上往下一个语句一个语句的检验是否符合条件,如果符合就进入语句执行,不符合就进行下一个语句。但是我们在写代码的时候往往有这样一个想法:不进行多次的检验,直接得到结果。
那么新的关键字switch就来了

switch-case语句

来看看运用switch-case语句改编后的代码:

#include <stdio.h>
int main()
{
	int type ;
	scanf("%d", &type);
	
	switch ( type ) {
	case 1:
		printf("你好");
		break;
	case 2:
		printf("早上好\n");
		break;
	case 3:
		printf("晚上好\n");
		break;
	case 4:
		printf("再见\n");
		break;
	default:
		printf("啊,你在讲什么啊?\n");
		break;
	}
	return 0;
 }

switch-case这个语句十分的有趣,它通过type 这个变量(只要是变量就都可以,也可以是a,b等等,也可以是一个表达式)所被赋予(或者计算后)的值来直接匹配到我们所设计好的对应的case语句内,如果没有我们所设计的值,则会跳转到default语句内,不必一步一步的每个环节都计算,检验一遍了。
就比如我们输入1(对应的case1),就会得到这个:

我们输入5(对应的default)就会得到这个:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值