【C语言】分支与循环

一、if语句

1.if

语法形式:

if (表达式)
	语句

流程:
在这里插入图片描述
例子: 输入一个整数,判断是否为小于10的数。’

1  #include<stdio.h>
2  int main()
3  {
4		int i=0;
5   	scanf("%d",&i);
6	    if (i<10)
7		printf("hehe\n",i);
8	return 0;
9  }

2.else

如果需要表示if条件不成立这种情况及结果,则需要用到else语句。
语法形式:

1  if (表达式)
2   	语句:
3  else
4   	语句:

例子:输入一个非0整数,判断是否为正数,如果是正数则打印是正数,如果不是则打印是负数。

1  #include<stdio.h>
2  int main()
3  {
4		int i=1;
5		scanf("%d",&i);
6		if(i>0)
7			printf("%d 是正数\n",i);
8		else
9			printf("%d 是负数\n",i);
10	return 0;
11  }

3.分支中包含多条语句

分支默认只包含一条语句,若需包含多条语句应使用{ }
例子:

1  else
2  {
3   	printf("***\n");
4	    printf("###\n");
5  }

注意:else的匹配原则是:与最近的未成对if语句配对。

4.嵌套

例子:输入一个整数,判断是正数,负数还是0。

方式1:将输入正数或负数这两种情况,视作非0的一种情况,并入i=0的else语句下。代码如下图。

1  #include<stdio.h>
2  int main()
3  {
4		int i=0;
5		scanf("%d",&i);
6		if(i==0)
7			printf("输入了0\n");
8		else
9		{
10			if(i>0)
11				printf("输入了正数\n");
12			else
13				printf("输入了负数\n");
14	  	}
15	return 0;
16  }

方式2:遵照题目将三种情况依次讨论。代码如图。

1  #include<stdio.h>
2  int main()
3  {
4		int i=0;
5		scanf("%d",&i);
6		if(i==0)
7			printf("输入了0\n");
8		else if(i>0)
9			printf("输入了正数\n");
10		else
11			printf("输入了负数\n");
12 	return 0;
13  }

二、操作符

1.关系操作符

<小于运算符
>=大于等于运算符
<= 小于等于运算符
>大于运算符
== 相等运算符
!= 不相等运算符

c语言中,所有非0至表示真。
关系表达式通常返回1或0表示真假。
注意:运算符尽量不要连用。

2.条件操作符

即三目操作符

形式:
exp1?exp2:exp3

条件操作符的计算逻辑是:
如果 exp1 为真, exp2 计算,计算的结果是整个表达式的结果;
如果exp1 为假, exp3 计算,计算的结果是整个表达式的结果。

例子:

1  #include<stdio.h>
2  int main()
3  {
4		int a=0;
5		int b=0;
6		scanf("%d",&a);
7		//if(a>5)
8		//	b=3;
9		//else
10		//	b=-3;
11		b=(a>6?3:-3);
12	return 0;
13  }

注释部分,即为等价于b=(a>6?3:-3);的部分
在这段代码中,先判断a是否>6,a>6时b=3,反之则b=-3

3.逻辑操作符

  • !:逻辑取反运算符(改变单个表达式的真假)
  • &&:逻辑与运算符(即并且,两侧皆真方为真,其余为假)
  • ||:逻辑或运算符(即或者,两侧至少有一个为真则为真,其余为假)

注:c语言中非0为真,0为假。

5.闰年的判断

条件:1.能被4整除并且不能被100整除
2.能被400整除
(满足其中一项即可)

代码如下:

在这里插入图片描述

6.短路

成因:
c语言 逻辑运算符 特点是,先对左侧的表达式求值,如果左边的表达式可以满足条件,则不再对右边的表达式求值。

对于&&,若左边结果为0(假),则右边不再执行。
对于||,若左侧结果不为0(假),则右边不再执行。

三、switch语句

switch语句是一种特殊形式的if…else结构,用于判断条件有多个结果的情况。它把多重的else if改成更易用,可读性更好的形式。

1.语法形式:

1  switch(m){
2   	case 1:语句13			break;
4		case 2:语句25			break;
6		default:默认语句
7			break;
8  }

在上述代码中,根据m不同的值,执行相应的case分支,若找不到对应的值,则执行default分支。

注意:

switch后的m必须是整型表达式
case后的值,必须是整型常量表达式

例子:输入任意一个整数,计算除3之后的余数

2.break

break起到跳出循环的作用
如上题中,若将break都删去,则printf语句将依次打印。
即:输入6,打印余数是0,余数是1,余数是2

3.default

在switch语句中,case子句和default语句是没有顺序要求的,满足实际需求即可。
但通常情况下,我们把default子句放在最后处理。

四、while循环

1.语法形式:

1  while(表达式)
2  		语句;//如果循环体想包含更多的语句,可以加上大括号

2.流程:

在这里插入图片描述

3.练习:

(1)打印1到10的值

在这里插入图片描述

(2)输入一个正整数,逆序打印这个整数的每一位

分析:1.想得到n的最低位,可以使用n%10的运算,得到的余数就是最低位,如:1234%10得到4
2.要想去掉n的最低位,找出倒数第二位,则使用n=n/10操作就以去掉最低位的,如:n=1234/10得到123,
123相较于1234就去掉了最低位,123%10就得到倒数第二位3.
3.循环1和2两个步骤,在n变成0之前,就能到所有的位。

代码如下:
请添加图片描述

五、for循环

1.语法形式:

1  for(表达式1;表达式2;表达式3)
2  		语句://如果循环体想包含更多的语句,可以加上大括号

注意:

表达式1:初始化表达式
表达式2:判断表达式
表达式3:调整

2.执行流程:

在这里插入图片描述

3.练习

(1)计算1~100之间3的倍数的数字之和

在这里插入图片描述

六、do-while循环

1.语法形式:

1  do
2  		语句:
3  while(表达式):

2.执行流程:

在这里插入图片描述

3.例子:

(1)打印1到10的值

在这里插入图片描述

(2)输入一个正整数,计算它至少是几位数

在这里插入图片描述

七、break和continue

用于提前终止循环

1.while循环中

  • break: 永久终止,直接跳出循环向后执行
  • continue: 跳过本次循环中continue后的代码

如下:

i=5时,break终止循环,只打印1234
在这里插入图片描述
i=5时,continue跳过打印和i++,因此i一直是5,故只打印到4
在这里插入图片描述

2.for循环中

若用for循环改写上述continue代码,效果如下:
请添加图片描述
此处continue只跳过了5的打印

3.do-while循环中

效果如下:
在这里插入图片描述
在这里插入图片描述

八、goto语句

goto语句可以实现在同一个函数内跳转到设置好的标号处。
常用于多层循环中。
例子:

1  for(...)
2  {
3  		for(...)
4  		{
5			for(...)
6			{
7				if(disaster)
8					goto error;
9			}
10		}
11  }
12  error
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值