要想代码写的好,分支循环少不了

分支结构与循环结构



前言

C语言为一门程序化设计语言,其逻辑主要为:顺序结构,分支结构和循环结构,事实上,每个事都可以细细拆分成这三种结构,足以见其在C语言的学习中的重要性。下面给大家分享一下我自己学习分支与循环这两种结构的心得以及需要注意的地方。


一、C语言语句的常见的操作符

1.关系操作符

关系操作符构成关系表达式,主要分为六种:
1.>
2.<
3.<=
4.>=
5.==(注意,在C语言中两个一样的“=”表达判断是否相等,若相等,返回逻辑1,若不相等返回逻辑0,在运用时,千万注意不要单码一个=,这样就成了赋值,导致程序出现问题)
6.!=

2.条件操作符

exp1?exp2:exp3

其逻辑为:如果exp1为真,则计算exp2为整个表达式的结果;如果exp1为假,则计算exp3为整个表达式的结果。
此表达式可以对一些复杂的代码进行改进。

3逻辑操作符(重要)

1.逻辑与(&&)
具体使用方法为:a&&b,当a语句和b语句同时为真时,整个表达式为真;当其中有任何一个不为真时,整个表达式为假;可以理解为电路的并联。
2.逻辑或(||)
具体使用方法为:a||b,当a语句和b语句中有一个为真时,整个表达式为假;只有a和b同时为假时,整个表达式才为假。但是在实际应用中要注意一些小细节,在C语言中,逻辑为从左到右,所以在判断逻辑或的时候,一旦左边的表达式为假,即可判断整个表达式为假,就不会再去看右边的表达式是什么,也成“短路”
3.逻辑非(!a)
对表达式的结果进行取反,如果a为真,那么a!就为假,在一些循环的判断中会用到。

二、分支语句

分支语句主要由if语句和switch语句构成。

1.if else

if语句的语法形式:

if(表达式)
     语句

注意,if表达式后不需要加分号“;”
若表达式结果为真,则执行语句,若表达式结果为假,则不执行语句。(在C语言中,一切非0即为真,0即为假)
如,判断一个数是否为奇数

#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
if(num % 2 == 1)//模2余1即为奇数
{
    printf("%d 是奇数\n", num)}
return 0;
}

else

if (表达式)
{
  语句1
}
else
{
  语句2
}

如果表达式为假,则语句1不执行,执行语句2
在实际应用if else 语句时,我们尽量要括号把语句扩上,因为if后表达式为真时,只会执行下一条语句,如果if后有两条或多条语句会导致代码出现问题,用括号将他们放在一起,会避免这种错误的出现,所以我们在写代码时,即使只有一条语句,也用括号将其括住,这是一个写好代码的小tip~
————————————————————————————
悬空else问题
在写代码时,尤其是分支语句,if 和else一定要进行配对,尽量把每一对if else 放在同一列上面,这样不仅能让写代码本身的你检查错误时方便明了,在给其他程序员看时,也能让他人觉得很清楚,很明白。因为在if else语句中,else 永远只和离它最近的if配对,如果不按规定进行书写代码,会出现程序错误的情况!!!

2.switch语句

switch语句也是C语言中常见的分支语句,而且在有的时候在使用switch语句会达到事半功倍的效果。
语句形式:

switch (expression) {
case value1: statement
case value2: statement
default: statement
}

根据expression的不同值,进入case,执行相应的语句,如果没有相应的case,会执行default语句。
注意:
expression必须是整形表达式
case 后的值,必须是整形常量表达式

#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
switch(n%3)
{
case 0:
printf("整除,余数为0\n");
break;
case 1:
printf("余数是1\n");
break;
case 2:
printf("余数是2\n");
break;
}
return 0;
}

每一个case语句与其对应的数值都要用空格隔开,并且每一句都要有break语句使其跳出。
但是在有些实际情况中,我们不一定非要在每一个case语句后都加上break语句,在实际情况下要做到活灵活现,比如我们想对输入的星期几进行判断,改日时工作日还是休息日,代码如下:

#include <stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
 switch(day)
{
case 1case 2:
case 3:
case 4:
case 5:
printf("⼯作⽇\n");
break;
case 6:
case 7:
printf("休息⽇\n");
break;
}
return 0;
}

在这种情况下,我们完全没有必要在每一个case语句后加上break语句。
default语句主要用来对expression语句输出结果无法匹配case的情况进行一个说明,C语言中对其位置不作要求,只要满足程序要求,在哪都可以,但为了方便,清晰,我们通常把default语句放在末尾。

三、循环语句

循环语句主要有while循环,do while循环和for循环

while循环和do while 循环

while(表达式)
  语句;

当表达式为真时,进入while语句在一定条件下可以达到循环的效果。
比如:在屏幕上打印1到10

#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
printf("%d ", i);
i = i+1;
}
return 0;
}

do while 循环在日常使用中,频率较低

do
语句;
while(表达式)

while循环在进入循环之前需要进行判断是否满足条件,若满足条件才会进入循环,若不满足条件则不会进入循环;在do while 语句中,在进入语句中不会进行判断,无论是否满足条件,都会先进行一次,然后再进行判断,若满足则继续执行,若不满足,跳出语句。

for循环

for循环是三种循环语句中应用最多的,不仅简单,而且更加清晰有条理。

for(表达式1;表达式2;表达式3{
  语句
}

表达式1用于循环变量的初始化
表达式2用于循环结束条件的判断
表达式3用于循环变量的调整
其实不难看出while循环中也包含for循环中三个表达式,只不过不像for循环这么清晰可见。

循环语句中的break和continue

continue 可以帮助我们跳过某⼀次循环 continue 后边的代码,直接到循环的判断部分,进行下⼀次循环的判断,如果循环的调整是在 continue 后边的话,可能会造成死循环。而break语句会停止,并直接跳出循环,这是两者的本质区别,在不同情况下可以合理应用。
for循环中break的用法以及结果:

#include <stdio.h>
int main()
{
	int i = 1;
	for (i = 1; i <= 10; i++)
	{
		if (i == 5)
			break;
		printf("%d ", i);
	}
	return 0;
}

在这里插入图片描述
for循环中continue的用法及结果:

#include <stdio.h>
int main()
{
	int i = 1;
	for (i = 1; i <= 10; i++)
	{
		if (i == 5)
			continue; 
		printf("%d ", i);
	}
	return 0;
}

在这里插入图片描述

快速跳出循环----goto语句

#include <stdio.h>
int main()
{
printf("hehe\n");
goto next;
printf("haha\n");
next:
printf("跳过了haha的打印\n");
return 0;
}

在遇到goto语句时,程序会跳到指定的位置,继续执行。
在某些特定情况下,使用goto语句会事半功倍

for(...)
{
     for(...)
{
           for(...)
{
if(disaster)
goto error;
}
}
}
error:
//...

在这种情况下,可以快速跳出循环,节省内存,节省时间。

  • 15
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值