c语言:分支与循环

 引言

        c语言当中有顺序结构、选择结构、循环结构,当我们仔细分析,不仅仅c语言中有这些结构,当我们仔细分析,实际生活中的事情也能拆分这三种结构,接下来就让我们看看C语言当种的这些结构吧。

在c语言中0为假,非0为真

#include <stdio.h>
int main()
{
	int a = 4;
	int b = 1;
	int c = a > b;
	int d = a < b;
	printf("%d,%d",c,d);
	return 0;
}

   以上代码的结果为1,0,因为a>b该表达式为真,所以c取1(当为真时默认为1),而a<b该表达式为假,所以d取值为0.

 分支       

        在c语言中我们可以用if,else,switch等等语句来实行分支结构。

        if

        if(表达式)

{

语句

}

#include<stdio.h>
int main()
{
	int age = 0;
	printf("请输入你的年龄:");
	scanf("%d", &age);
	if(age >18)
	{
		printf("可以谈恋爱\n");
	}
	return 0;
}

        if语句的使用格式如上所示,如果表达式为真即执行大括号当中的语句,若表达式为假则会跳过大括号当中的语句。

        if语句使用时大括号也不是一定要加,但若不加仅仅只能执行if下的一条语句,若该分支有多条语句时一定要加大括号。

        else

              else的使用需要与if配合使用,使用格式如下所示:

if(表达式)

{

语句1

}

else

{

语句2

}       

#include<stdio.h>
int main()
{
	int age = 0;
	printf("请输入你的年龄:");
	scanf("%d", &age);
	if(age > 18)
	{
		printf("可以谈恋爱\n");
	}
	else
	{
		printf("不可以谈恋爱\n");
	}
	return 0;
}

        如果表达式为真,则执行语句1,若表达式为假则执行语句2。

跟if同理大括号也并非必须要加。

else if

        else if使用格式如下:

if(表达式1)

{

语句1

}

else if(表达式2)

{

语句2

}

#include<stdio.h>
int main()
{
	int age = 0;
	printf("请输入你的年龄:");
	scanf("%d", &age);
	if (age > 18)
	{
		printf("可以谈恋爱\n");
	}
	else if(age==18)
	{
		printf("刚刚好可以谈恋爱\n");
	}
	else
	{
		printf("不可以谈恋爱\n");
	}
	return 0;
}

         else if与else相比多了一个(表达式2),也多了一个限制条件,若想执行语句2则必须表达式1为假,而表达式为真才能执行。

switch

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

        switch的使用常常需要case与break,default配合使用, 使用格式如下:

 switch(整型表达式)

{

case 整形常量表达式:

语句1(可以是多条语句)

break;

case 整形常量表达式:

语句2(可以是多条语句)

break;

default:

语句3(可以是多条语句)

break;

}

使用代码案例如下所示:

#include <stdio.h>
int main()
{
	int a=0;
	scanf("%d",&a);
	switch (a)
	{	
		case 1:
		printf("1\n");
		break;
		case 2:
			printf("2\n");
		break;
		default:
			printf("default\n");
            break;
	}
	return 0;	
}

输出结果:

以上代码输出结果如上图所示,可知当表达式等于哪个常数就执行哪的语句,当表达式中没有相等的常数时若有default则执行default当中的语句。

        delault

       通过以上代码,我们可以了解到当case当中的常数没有与表达式当中对应时,这时要不就不处理,要不我们就可以加入default。

        switch当中的break

        当我们去掉以上代码当中的break会发生什么呢,让我们看看吧。

        

#include <stdio.h>
int main()
{
	int a=0;
	scanf("%d",&a);
	switch (a)
	{	
		case 1:
		printf("1\n");
		case 2:
			printf("2\n");
		default:
			printf("default\n");
	}
	return 0;	
}

        运行结果如上图所示,当没有break时,代码会继续往下执行,有可能会执行到其他case当中的语句。这是为什么呢?原来break在switch当中取得作用是跳出这整个switch语句,因此是否加入break语句,这个就要根据实际情况了。

swich使用的注意事项

1.switch当中得顺序问题

        在switch语句中delault一定要放在最后面吗?其实并没有这个规则,delault,和case得顺序可以随意调换,但通常都是将delault放在最后面。

2.switch的使用

1、case后边必须要是整形常量表达式

2、case和后边的数字必须用空格隔开

3、switch后的表达式必须是是整型表达式

4、每⼀个 case 语句中的代码执⾏完成后,需要加上 break ,才能跳出这个switch语句。

循环

        在c语言中循环语句有while语句和do......while语句和for语句三种语句让我们看看这三种语句如何使用吧。

while

while与if语句的格式一样但作用不同如下:

while(表达式)

{
语句

}

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

        while为循环语句顾名思义即执行循环的语句,当表达式为真时而执行while当中的语句直到表达式的值为假的时候而停止执行。跟if同理没有大括号只能循环一条语句

do......while

do......while的使用格式如下:

do

{
语句

}

while(表达式)//注意这后面有分号

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

        do......while与while都是执行循环的语句,但二者的进行顺序不同,while是先判断表达式真假,若为真则执行while当中的语句,若为假则停止循环,而do......while与while相反,do......while是先执行当中的语句在判断表达式的真假,若do......while当中表达式为真则继续循环,若为假则停止循环。同理若没有大括号只能循环一条语句。

for

        for循环与while和do......while相比就更为的复杂了使用格式如下:

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

{

语句

}

#include<stdio.h>
int main()
{
	int a = 0;
	for(a=1;a<=10;a++)
	{
		printf("%d ",a);
	}
}
表达式1 ⽤于循环变量的初始化

表达式2 ⽤于循环结束条件的判断

表达式3 ⽤于循环变量的调整

        for循环首先执行表达式1初始化变量,然后执行表达式2判断是否符合循环的条件,然后在去执行循环中的语句,最后执行表达式3,调整循环变量,然后在执行表达式二判断是否在进行循环,如此往复,直到表达式2为假时,循环停止。

循环当中的break和continue

        break 的作⽤是⽤于永久的终⽌循环,只要 break 被执⾏,直接就会跳出循环,继续往后执
⾏。而continue是跳过本次的循环中后边的代码。
接下来让我们体会一下两种语句在循环中的区别吧
#include<stdio.h>
int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int i;
	for (i = 0; i < 10; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}

    运行结果:

#include<stdio.h>
int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int i;
	for (i = 0; i < 10; i++)
	{
        if (arr[i] == 6)
			break;
		printf("%d ", arr[i]);
	}
	return 0;
}

运行结果:

#include<stdio.h>
int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int i;
	for (i = 0; i < 10; i++)
	{
        if (arr[i] == 6)
			continue;
		printf("%d ", arr[i]);
	}
	return 0;
}

        在以上代码中可以看出若加上break被执行,则与原来相比5后面的数都没有打印出来,而若是continue被执行也就仅仅6没有被打印出来因为break 的作⽤是⽤于永久的终⽌循环continue是跳过本次的循环中后边的代码。

  • 28
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值