分支语句和循环语句(一)

文章目录

  1. 分支语句
  2. 循环语句

文章内容

   1.分支语句

  • if语句

     c语言是结构程序化的设计语言,有顺序结构,选择结构和循环结构。

     c语言的语句可以分为一下的五大类:

      1. 表达式语句
      2. 函数调用语句
      3. 控制语句
      4. 复合语句
      5. 空语句

     又可以分成以下三类:

     1. 条件判断语句也叫分支语句:if语句、switch语句;
     2. 循环执行语句:do while语句、while语句、for语句;
     3. 转向语句:break语句、goto语句、continue语句、return语句。

     if语句的语法结构为

语法结构:
if(表达式)
  语句;

if(表达式)
  语句1;
else
  语句2;

//多分支  
if(表达式1)
  语句1;
else if(表达式2)
  语句2;
else
  语句3;

    举例

//int main()
//{
//	int age = 0;
//	//输入
//	scanf("%d", &age);
//
//	if (age < 18)
//		printf("未成年\n");
//
//	return 0;
//}
//int main()
//{
//	int age = 0;
//	//输入
//	scanf("%d", &age);
//
//	if (age < 18)
//		printf("未成年\n");
//	else
//		printf("成年\n");
//
//	return 0;
//}

 以上两个if语句较为简单,我们下面举一个多分支的例子

//int main()
//{
//	int age = 0;
//	//输入
//	scanf("%d", &age);
//
//	//<18 青少年
//	//18~30 青年
//	//31~50 中年
//	//51~80 中老年
//	//81~100 老年
//	//101+ 老寿星
//
//	//if (age < 18)
//	//	printf("青少年\n");
//	//else if (age >= 18 && age <= 30)
//	//	printf("青年\n");
//	//else if (age >= 31 && age <= 50)
//	//	printf("中年\n");
//	//else if (age >= 51 && age <= 80)
//	//	printf("中老年\n");
//	//else if (age >= 81 && age <= 100)
//	//	prnitf("老年\n");
//	//else
//	//	printf("老寿星\n");
//

//	return 0;
//}

      悬空else

        此处什么都没有打印,我们预计的结果是打印 ‘haha’ ,但是却没有打印,因为else是和它最近的if匹配,这样当 a!= 1 时就无法进入里面的循环,所以就什么都没有打印

  正确的写法如下;

          这样就有我们想要的结果了!

          这里的一对 { } 就是一个代码块。

          适当的使用{}可以使代码的逻辑更加清楚。


   练习
1. 判断一个数是否为奇数
2. 输出1-100之间的奇数

int main()
{
	int a = 0;
	scanf("%d",&a);
	if (a %2 == 1)
	{
		printf("奇数");
	}
	else
	{
		printf("非偶数");
	}
	return 0;
}
int main()
{
	int i = 0;
	while (i <= 100)
	{
		if (i % 2 == 1)
		{
			printf("%d\n",i);
		}
		i++;
	}

	return 0;
}
  • switch语句 

     switch语句也是一种分支语句, 常常用于多分支的情况。

//int main()
//{
//	int day = 0;
//	//输入
//	scanf("%d", &day);
//	if (1 == day)
//		printf("星期1\n");
//	else if (2 == day)
//		printf("星期2\n");
//	else if (3 == day)
//		printf("星期3\n");
//	else if (4 == day)
//		printf("星期4\n");
//	else if (5 == day)
//		printf("星期5\n");
//	else if (6 == day)
//		printf("星期6\n");
//	else if (7 == day)
//		printf("星期天\n");
//	else
//		printf("输入错误\n");
//
//	return 0;
//}

  此时用if语句就显得比较笨,这时候就应该用switch语句了

//int main()
//{
//	int day = 0;
//	const int n = 1;
//	scanf("%d", &day);
//	switch (day)
//	{
//	default:
//		printf("输入错误\n");
//		break;
//	case 1:
//	case 2:
//	case 3:
//	case 4:
//	case 5:
//		printf("weekday\n");
//		break;
//	case 6:
//	case 7:
//		printf("weekend\n");
//		break;
//	}
//
//	return 0;
//}

    注意 break;

          如果不加‘break’ 还是会打印weekend,因为此时代码没有跳出循环,在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。break语句 的实际效果是把语句列表划分为不同的分支部分。

      default 子句;

     如果表达的值与所有的case标签的值都不匹配怎么办,其实也没什么,结构就是所有的语句都被跳过而已。
     程序并不会终止,也不会报错,因为这种情况在C中并不认为是个错误。
     但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢?
     你可以在语句列表中增加一条default子句,把下面的标签
     default:
     写在任何一个 case 标签可以出现的位置。
     当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。
     所以,每个switch语句中只能出现一条default子句。
     但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。


    2.循环语句

  •     while语句

    当条件满足的情况下,if语句后的语句执行,否则不执行。
    但是这个语句只会执行一次。
    由于我们发现生活中很多的实际的例子是:同一件事情我们需要完成很多次。
那我们怎么做呢?
    C语言中给我们引入了: while 语句,可以实现循环。 

  如打印一到十的数字,

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

 break 在while中的使用

//int main()
//{
//	int n = 1;
//	while (n<=10)
//	{
//		if (n == 5)
//			break;
//		printf("%d ", n);
//		n++;
//	}
//	return 0;
//}

  break在while循环中的作用:
  其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。
  所以:while中的break是用于永久终止循环的

continue  在while中的使用

int main()
{
	int n = 1;
	while (n <= 10)
	{
		n++;
		if (n == 5)
			continue;//跳过本次循环continue后边的代码,直接去while循环的判断部分
		printf("%d ", n);
		
	}
	return 0;
}

  continue在while循环中的作用就是:
  continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,
  而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。 


  • 12
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值