对C语言分支与循环的介绍

大家好,今天为大家介绍一下C语言分支与循环的相关知识,初次写文章如果有不妥或错误之处欢迎大家留言批评指正.

C语言属于结构化的程序语言.这个结构指的是程序的三种基本结构顺序结构分支(选择)结构和循环结构.

顺序结构不用多说依据顺序依次进行,分支结构知道是满足一定的不同条件执行相应语句,而循环结构则是对一个语句反复执行直到不再满足条件为止,它与分支语句有相似之处但是有本质上的区别,因为循环只有一个条件分支有多个条件.

先来介绍一下最简单的if-else语句

if (age > 18)
{
	printf("成年")
}
else **if (age < 45)
{
	printf("壮年")
}
else**
{
	printf("中老年")	
}

if对应语句只有在条件为真的情况下执行,特别注意以下两个语句区别有关系操作符的叫关系表达式返回的值0(假)或1(真)
注意在C语言中一切非0的数都表示真

	if (a == 5)//判断a是否为5
	if (a = 5)//把5赋值给a,丧失了判断真假的过程

注意两者有本质的不同,第二行代码通常不是我们的本意,可能导致死循环!!!(若想避免可将两端颠倒)
注意一个分支语句中只有一个if,一个else,但可以有多个else if.大括号的作用是可以将多条语句和前面的if-else匹配,因为在默认情况下if-else语句只和后面一条语句匹配.建议全都加上大括号防止出错.

在C语言中允许嵌套的if语句实际上以上的加粗即**内部部分已体现了这一点.但是如果是真正的嵌套即if里面套了一个完整的分支结构,由于编译器喜欢偷懒总是把else和最近的if配对(这叫悬挂else问题),为了避免这种问题在嵌套的外层加上大括号如下
以下所有分支循环都有类似注意点不再赘述.

if (age > 18)
{
	printf("成年")
}
else//age >= 18
{
	if (age < 45)
{
	printf("壮年")
}
	else
{
	printf("中老年")	
}
}

注意所有循环体条件后面加分号属于空语句分号等于一个语句结束的标志如

int num = 0;
	scanf("%d",&num);
	//判断和输出
		if (num % 2 == 1)
		{
			;
			printf("%d是奇数\n", num);
		}
	
	//特别注意第二行输出不属于if语句即使加大括号也不行因为第一行是空语句已经和if绑定完成了

所有以上代码无论奇数还是偶数都会输出奇数.

if (num % 2 == 1);

等价于上面的代码把分号放到第二行注意空语句单独成为代码块,即使大括号里面加了其他语句但是只有包含空语句大括号形同虚设,其他语句并不和if-else语句绑定在一起所有无论条件是否成立其他语句都会执行但是这一般不是我们相要的结果.
注意C语言中经过如下代码不会报错但一般也不是我们预期结果

	if (a < b < c)//从左到右先判断a < b 显然返回1或0

这由于关系运算符值总是0或1所带来的
因此可用如下代码替换

	if (a < b && b < c)

其中&&是逻辑与关于与和或的知识可以查找资料这儿我就不详细说明了注意无论是逻辑与还是逻辑和,基于编程的核心思想能高效就高效所有如果第一个表达式已经可以决定整个表达式的值的话便不再计算这也减少了犯错误的可能性.

属于三目操作符有三个操作数形式如下

exp1 ? exp2 : exp3 

这段代码先判断是否为真,真计算exp2,返回计算结果反正,计算exp3.
##3.switch语句
属于特殊的if-else结构,但不是所有的if-else都可以转变成switch语句的形式如下

switch (expression)//必须是整型表达式
	case value1://statement//expression值为对应value执行相应语句value1必须是常量表达式
	case value2://statement
	case value3://statement
	default://statement//如果上述都找不到执行default语句

注意:需要情况下会在每个case后面加上break以终止整个语句否则会一直往下执行,但是如果有重复结构可能不需要break,default顺序随意.

和if类似但是执行多次只有条件为假时不再执行先判断条件真假也就是说可能一次都不执行.形式如下

while()
{
	//语句;
}

此种语句在循环中最为常见形式如下和while循环很相似只是形式不同

for (int i = 0 ;i < 10 ; i ++)//变量初始化(唯一),条件,调整
{
	//语句;
}

这种语句显然和之前的循环语句有本质区别因为循环体至少执行1次之后再判断条件形式如下

do
{
	//语句
}
while(条件);

break:终止整个循环只能结束所在的那个循环
continue:终止本次循环不再执行后面的代码开始下一次循环
注意在循环体中调整和continue位置关系至关重要不恰当的顺序可能导致死循环,
例如


int i=0;
while (i<10)
{
	i++;
	if (i == 5)
	continue;
printf("%d ",i);
}

int i=0;
while (i<10)
{
	
	if (i == 5)
	continue;
	i++;
printf("%d ",i);
}

显然第二个代码会陷入死循环因为i永远没有了调整的机会被continue直接强行中断了显然for循环避免了这一点因为调整过程永远在循环体之后不可能被continue中断.
相信你看到这里已经明白了continue在各个循环体中的区别.

它可以通过goto和跳转标号来跳转到指定位置处goto语句如果使用的不当,就会导致在函数内部随意乱跳转,打乱程序的执行流程,所以我们的建议是能不用尽量不去使用;但是 goto语句也不是一无是处,在多层循环的代码中,如果想快速跳出使用 goto就非常的方便了。例如

	printf("hehe\n");
	goto next;
	printf("haha\n");
next:
	printf("跳过了haha的打印\n");

//以下是多次嵌套
	for(...)
 {
 for(...)
 {
 for(...)
 {
 if(disaster)
 goto error;
 }
 }

分支和循环是C语言中控制程序流程的基石。通过合理使用if、else if、switch等分支结构,以及for、while、do-while等循环结构,可以构建出逻辑清晰、结构紧凑的程序。同时,合理利用break和continue控制语句可以更灵活地控制程序的执行流程。掌握这些基本结构,对于编写高效、可维护的C程序至关重要。今天我们一起学习了C语言的分支与循环语句相信大家应该大体上掌握了,但是俗话说实践出真知,希望大家阅读完后自己敲代码熟练掌握.

  • 14
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值