【C语言-分支与循环句 ]

一.分支语句--if语句

if语句的语法形式:

1 if(表达式)

2      语句

 表达式成立(为真),则语句执行,表达式不成立(为假),则语句不执行。

在C语言中,0为假(语句不执行),非0即为真(语句执行)。

其流程图如下:

a6ad6968e4c747e281e34148fe7229ce.jpeg

如果同级选择有两种及以上的的关系,就需要用到if...else...语句。

语法形式如下:

1 if  ( 表达式 )

2      语句1;

3 else

补充:ifelse语句中默认都只控制一条语句,那如果我们需要if或者else语句同时控制多条语句,那就需要我们用{}将其代码括起来。

eg:

#include <stdio.h>
int main()
{
    int age=0;
    scanf("%d",&age);
    if(age<=18)
    {
      printf("未成年人\n");
      printf("不可以谈恋爱\n");
    }
    else
    {
       printf("成年人\n");
       printf("可以谈恋爱\n"); 
    }
    return 0;
}

PS:还要注意 if语句的嵌套,和语句的适当简化,养成良好的代码风格。

悬空的else问题:

如果有多个if和else,请记住这样一条规则:else总是和最近的if匹配。

eg:

#include <stdio.h>
int main()
{
	int a = 0;
	int b = 2;
	if (a == 1)
		if (b == 2)
			printf("你好\n");
	else
			printf("你吃了吗\n");
	return 0;
}

改代码执行的结果并不是你吃了吗,而是根据以上规则快可知是啥也不运行。 

35eae4bd65f34bd39bbddfce1345f35e.png

二.操作符补充

1.关系操作符:

C语言用于比较的表达式,称为“关系表达式”,里面使用的运算符就称为“关系运算符”,主要有下面六个:

>          小于运算符

<          大于运算符

<=        大于等于运算符

>=        小于等于运算符

==        等于运算符

!=         不等于运算符

关系表达式通常返回0或1,表示真假。eg:20>10返回1。关系表达式常用于if或者while结构。 

PS:==与=是两个不一样的运算符,不要混淆。前者主要用于条件语句中的条件判断,后者则截然不同。为了防止这种情况的出现,有的程序员喜欢将变量写在等号的右边。此外,多个关系运算符不宜连用

2.条件操作符

条件操作符也叫三目操作符,需要接受三个操作数的,形式如下:

1 exp1 ? exp2 : exp3

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

3.逻辑操作符

逻辑运算符提供逻辑判断功能,用于构建更复杂的表达式,主要有下面3个:

!:逻辑取反运算符(改变单个表达式的真假);

&&:与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假);

||:或运算符,就是或者的意思(两侧至少有一个表达式为真,则为真,否则为假)。

 例题:输入一个年份year,判断year是否为闰年。

#include <stdio.h>
int main()
{
	int year = 0;
	scanf("%d", &year);
	if ((year%400==0)||((year%4==0)&&(year%100!=0)))
		printf("%d年为闰年\n",year);
	else
		printf("%d年不是闰年\n",year);
		return 0;
}

 补充:短路---C语言逻辑运算符还有一个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是保证的。如果左边的表达式满足逻辑运算符的条件,就不在对右边的表达式求值。这种情况称为“短路”。

      仅仅根据左操作数的结果就能知道整个表达式的结果,不再对右操作数进行计算的运算称为短路求值。

三.switch语句(实现分支结构)

1 switch (expression)

{

2           case value1: statement
3           case value2: statement

4           default: statement
}

PS:1.每个case和后边的数字之间必须有空格;

        2.每一个case语句中的代码执行完成之后,需要加上break,才能跳出这个switch语句。

       3.default语句和case语句是没有顺序要求的,只要你的顺序是满足实际需求的就可以。不过我们通常是把default子句放在最后。

四.循环语句

1.while循环

语法形式:

 1  while (表达式)

 2           语句;

c733cda331594d1db1c3301b6e2ad6a7.png

2.for循环(三种循环中使用最多的)

语法形式:

1  for(表达式1;表达式2;表达式3

2        语句;

注:1.表达式1 用于循环变量的初始化;

       2.表达式2 用于循环结束条件的判断;

       3.表达式3 用于循环变量的调整。

b3f5709c9e954672a13d71cb4e52eeaa.png

for和while在实现循环的过程中都有初始化,判断和调整这三个部分。但是for循环的三个部分非常集中,便于代码的维护,而如果代码较多的时候while循环的三个部分就比较分散,所以从形式上for循环要更优一些。

3.do-while循环

语法形式:

1 do

2     语句;

3 while(表达式);

a322115d1fbd4d7fbab6e637e7f6fa0f.png

五.break及continue语句,goto语句

break: 

        1.break的作用是永久的终止循环,只要break被执行,直接就会跳出循环,继续往后运行。for循环和while循环的break一样,都是用来终止循环的。

        2.Switch语句中的break语句是非常重要的,能实现真正的分支效果。当然break也不是每个case 一句都有,这句得根据实际情况来看了。

continue:

1.它的作用是跳过本次循环continue后边的代码,在for循环和while循环中有所差异的。

2.在for循环中continue的作用是跳过本次循环的中的continue后的代码,直接去到循环的调整部分。未来当某个条件发生的时候,本次循环的无需再执行后续某些操作的时候,就可以使用continue来实现。 

goto语句:

可以实现同一个函数内跳转到设置好的标号。goto语句如果使用的不当,就会导致在函数内部随意跳转,打乱程序的执行流程,所以建议是尽量不要去使用,但是goto语句也不是一无是处,在多层循环的代码中,如果想快速跳出就使用goto就非常的方便了。

eg:

#include <stdio.h>
int main()
{
	printf("hehe\n");
	goto next;
	printf("haha\n");
next:
	printf("heihei\n");
	return 0;
}

六.循环的嵌套

参考代码:找出100~200之间的所有素数。

#include <stdio.h>
int main()
{
	int i = 0;
	for (i == 100; i <= 200; i++)
	{
		int j = 0;
		int flag = 1;
		for (j = 2; j < i; j++)
		{
			if (i % j == 0)
			{
				flag = 0;
					break;
			}
		}
		if (flag == 1)
			printf("%d\n", i);
	}
	return 0;
}

关注博主,后期内容不断更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小峰编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值