C语言分支和循环语句

分支语句       1.if

                      2.switch

循环语句        1.while

                      2.for

                      3.do     while

转向语句        goto语句

1.分支语句

1.1if语句

if语句的三种形式

1.if                                 2.   if                               3.   if

                                           else                                else  if

                                                                                  else

int main()
{
	int n = 0;
	scanf("%d", &n);
	if (n < 18)
	{
		printf("青少年\n");
	}
	else if (n >= 18 && n < 30)
	{
		printf("青年\n");
	}
	else if (n >= 30 && n < 50)
	{
		printf("中年\n");
	}
	else if (n >= 50 && n < 60)
	{
		printf("中老年\n");
	}
	else
	{
		printf("老年\n");
	}
	return 0;
}

1.11表达式中的值,0表示假,1表示真

int main()
{
	int n = 0;
	scanf("%d", &n);
	if (18 <= n < 30)
	//此时先判断n是否大于等于18,8<18,不成立返回0
	//再判断0是否小于30,0<30成立返回1,	非0表示真执行if
	{
		printf("青年\n");
	}
	return 0;
}

1.12if语句中大括号的作用

if   else是一条语句。在没有大括号时if和else后面只能接一条语句

int main()
{
	int n = 0;
	scanf("%d", &n);//输入8
	if (n >= 18)
		printf("成年了\n");//在没用大括号时只能控制第一条printf语句
	                       //第二条printf语句不受if语句控制
	printf("找工作了\n");
	return 0;
}

1.13else和if的匹配讲究就近原则

注意if  else语句在写时最好应该有大括号这样更规范

int main()
{
	int a = 0, b = 2;
	if (a == 1)//a不等于1所以不执行里面的if  else语句,所以不输出
		if (b == 2)
			printf("hehe\n");
		else
			printf("haha");
	//if else匹配无大括号时有就近原则,所以else和第二个if匹配
	return 0;
}

1.13if语句的两个练习

1.判断一个数是否为奇数

//奇数也就是不能被2整除的数,除以2余数为1
int main()
{
	int n = 0;
	scanf("%d", &n);
	if (n % 2 == 1)
	{
		printf("%d这个数是素数\n", n);
	}
	return 0;
}

 

2.输出1~100之间的奇数

int main()
{
	int i = 1;
	for (i = 1; i <= 100; i++)
	//这里用到了循环,会在后面提
	{
		if (i % 2 == 1)
		{
			printf("%d ", i);
		}
	}
	return 0;
}

1.2switch语句

switch语句的基本结构

switch(整型表达式

{

  case 整型常量表达式

    语句;

}

1.21Switch语句中break的用法

break的作用把语句列表划分为不同的分支部分

没有break时

int main()
{
	int day = 0;
	scanf("%d", &day);
	//这里输入1到7之间的数字
	switch (day)
	{
	case 1:
		printf("星期一\n");
	case 2:
		printf("星期二\n");
	case 3:
		printf("星期三\n");
	case 4:
		printf("星期四\n");
	case 5:
		printf("星期五\n");
	case 6:
		printf("星期六\n");
	case 7:
		printf("星期天\n");
	}
	return 0;
}

有break时

int main()
{
	int day = 0;
	scanf("%d", &day);
	//这里输入1到7之间的数字
	switch (day)
	{
	case 1:
		printf("星期一\n");
		break;
	case 2:
		printf("星期二\n");
		break;
	case 3:
		printf("星期三\n");
		break;
	case 4:
		printf("星期四\n");
		break;
	case 5:
		printf("星期五\n");
		break;
	case 6:
		printf("星期六\n");
		break;
	case 7:
		printf("星期天\n");
		break;
	}
	return 0;
}

当以1到5是工作日,6、7为休息日时,代码也可以简化

int main()
{
	int day = 0;
	scanf("%d", &day);
	//这里输入1到7之间的数字
	switch (day)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		printf("工作日\n");
		break;
	case 6:
	case 7:
		printf("休息日\n");
		break;
	}
	return 0;
}

2.22default的作用

当switch中的值和case所有值对应不上是执行default

default后面应该再加上break

int main()
{
	int day = 0;
	scanf("%d", &day);
	//这里输入1到7之间的数字
	switch (day)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		printf("工作日\n");
		break;
	case 6:
	case 7:
		printf("休息日\n");
		break;
	default:
		printf("这一天与星期无关\n");
		break;
	}
	return 0;
}

练习

读代码,算出m,n的值

int main()
{
	int n = 1,m = 2;
	switch(n)
	{
	case 1:
		m++;
	case 2:
		n++;
	case 3:
		switch (n)
		{
		case 1:
			n++;
		case 2:
			m++;
			n++;
			break;
		}
	case 4:
		m++;
		break;
	default:
		break;
	}
	printf("%d,%d\n", m, n);
	return 0;
}

2.循环语句

2.1while循环

while循环主要有三部分

1.初始化部分   2.判断部分   3.调整部分

//打印1到10的数字
int main()
{
	int i = 1;//初始化部分
	while (i <= 10)//判断部分
	{
		printf("%d ", i);
		i++;//调整部分
	}
	return 0;
}

2.11while语句中的break

while循环中break是永久的终止循环,即一但执行break直接跳出循环

//打印1到10的数字
int main()
{
	int i = 1;//初始化部分
	while (i <= 10)//判断部分
	{
		if (i == 5)
		{
			break;
			//当i=1,2,3,4时不执行if里面部分
			//当i=5时,执行break,跳出循环
		}
		printf("%d ", i);
		i++;//调整部分
	}
	return 0;
}

2.12while循环中的continue

while循环中的continue的作用:是跳过本次循环后面的代码直接去判断部分

//打印1到10的数字
int main()
{
	int i = 1;//初始化部分
	while (i <= 10)//判断部分
	{
		if (i == 5)
		{
			continue;
			//当i=1,2,3,4时不执行if里面部分
			//当i=5时,执行continue,跳过本次循环后面的代码,直接去判断部分
			//此时i依然是5,陷入了死循环
		}
		printf("%d ", i);
		i++;//调整部分
	}
	return 0;
}

当调整部分在放在if语句前面时

//打印1到10的数字
int main()
{
	int i = 1;//初始化部分
	while (i <= 10)//判断部分
	{
		i++;//调整部分
		//当i=1进入循环时先自加
		if (i == 5)
		{
			continue;
			//当i=2,3,4时不执行if里面部分,此时打印了2、3、4、
			//当i=5时,执行continue,跳过本次循环后面的代码,直接去判断部分,然后i自加变为6
		    //i=6、7、8、9、10,当i=10时依然进入循环,自加变为11,打印11进入判断部分不成立退出循环
		}
		printf("%d ", i);
	}
	return 0;
}

2.2for循环语句

for循环语句也有三个部分

1.初始化部分   2.判断部分  3.调整部分

int main()
{
	int i = 1;
	for (i = 1; i <= 10; i++)
	{
		printf("%d ", i);
	}

	return 0;
}

1、2、3、4表示执行次序

2.21for循环语句中的continue

在for循环中,如果遇到continue,会跳过continue后边的代码,直接去循环的调整部分和while循环中的continue有些区别的,while是跳过后面的代码去判断部分

int main()
{
	int i = 1;
	for (i = 1; i <= 10; i++)
	{
		if (i == 5)
		{
			continue;
			//先打印1、2、3、4,当i=5是跳过本次循环后面的代码去调整部分
			//此时i=6,继续打印6,7,8,9,10
		}
		printf("%d ", i);
	}

	return 0;
}

2.22for循环语句中的break

break在for循环中也是直接终止循环,只要遇到break,循环就直接结束,break在while循环和for循环中一样

int main()
{
	int i = 1;
	for (i = 1; i <= 10; i++)
	{
		if (i == 5)
		{
			break;
			//先打印1、2、3、4,i=5时直接终止循环
		}
		printf("%d ", i);
	}

	return 0;
}

for循环的一些变种

1.全部省略

代码会一直循环

2.初始化部分的省略

int main()
{
	int i = 0, j = 0;
	for (; i < 3; i++)
	{//初始化部分省略i=0进入循环,执行第二个for循环
		for (; j < 3; j++)
		{//i=0时,j=0、1、2都打印hehe,再自加变为3,不打印
	     //i=1时,因为没用初始化部分j=3,直接跳出,i=2时同理
	     //所以打印了三次hehe

			printf("hehe\n");
		}
	}
	return 0;
}

2.3do    while循环

注意while();    while中一定要有分号

do  while循环也可以看作三部分

1.初始化部分   2.调整部分    3.判断部分

do    while循环中,不管是否符合判断部分都先执行一次


int main()
{
	int i = 1;//初始化部分
	do {
		printf("%d ", i);
		i++;//调整部分
	} while (i <= 10);//判断部分
	return 0;
}

2.31 do    while语句中的break

do   while循环的break和while循环中的相同都是直接终止循环

int main()
{
	int i = 1;//初始化部分
	do {
		if (i == 5)
		{
			break;
			//先打印1、2、3、4,当i=5时执行break直接终止循环
		}
		printf("%d ", i);
		i++;//调整部分
	} while (i <= 10);//判断部分
	return 0;
}

2.32 do    while语句中的continue

do  while循环中的continue和while循环中的continue作用是相同的

int main()
{
	int i = 1;//初始化部分
	do {
		if (i == 5)
		{
			continue;
			//先打印1、2、3、4,当i=5时执行continue即跳过本次循环后面的代码去判断部分
			//此时i始终等于5,陷入死循环
		}
		printf("%d ", i);
		i++;//调整部分
	} while (i <= 10);//判断部分
	return 0;
}

把判断部分放在if前面时

int main()
{
	int i = 1;//初始化部分
	do {
		i++;//调整部分
		//i=1时直接自加变为2,打印2、3、4。
		if (i == 5)
		{
			continue;
			//当i=5时执行continue即跳过本次循环后面的代码去判断部分
			//此时i等于5,再次进入循环然后自加变为6打印6、7、8、9、10、11
		}
		printf("%d ", i);
		
	} while (i <= 10);//判断部分
	return 0;
}

3.goto语句

goto语句就是跳过goto语句后面的语句直接去

​
int main()
{
	printf("hehhe\n");
	goto flag;
	printf("haha\n");
flag:
	printf("wuwuwu\n");
	//跳过goto后面的语句直接去flag部分执行
	return 0;
}

​

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值