C语言的分支和循环---分支

进入今天的主体之前,我们先思考一个问题,如果我们仔细去观察我们生活中发生的事,就可以发现,几乎所以的事情都可利用分支或循环来表述

例如:

分支:如果明天不下雨,我们就去公园玩,否则就在家看电视

           如果我能抢到演唱会的门票,那我就去看演唱会,否则我就去旅游

循环:在学校,我们会一直做作业, 重复做作业的这个动作,直到掌握知识点,考高分

           假如一个爱上头的游戏玩家,输了一把游戏,那么他就会一直重复的玩,直到取得一把胜利才甘心

这就是现实生活中的分支和循环,那我们应该怎样用c语言的形式表示这种关系呢?

正文:

要实现分支和循环,我们得先知道:C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实现这三种结构的,其实我们如果仔细分析,我们⽇常所⻅的事情都可以拆分为这三种结构或者这三种 结构的组合

那么我们可以使⽤ if 、 switch 实现分⽀结构,使⽤ for 、 while 、 do while 实现循环结构,下面我们介绍分支语句

If语句

表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏;在C语⾔中,0为假,⾮0表⽰真,也就是表达式的结果如果是0,则语句不执⾏,表达式的结果如果是 不是0,则语句执⾏

案例:

int main()
{
	int x= 0;
	scanf("%d", &x);
	if (x % 2 == 1)
		printf("%d 是奇数\n", x);
	else
		printf("%d 是偶数\n", x);
		return 0;
}

  1. scanf("%d", &x):scanf接收用户输入的值放入x
  2. if (x % 2 == 1):用if语句判断x%2后的值是否等于1,这里的运算是取模,得到的是x除2后的余数,判断余数是不是等于1,如果是那么就是奇数
  3. else printf("%d 是偶数\n", x):如果if判断为假,那么就结束of语句执行else语句,也就是打印是偶数

分支中包含多条语句

C语言中默认if和else都控制一条语句,如果要在if或else语句下执行多条语句,那么就需要添加{ }将多条语句放入里面,形成代码块

例如:

int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age >= 18)
	{
		printf("成年\n");
		printf("可以谈恋爱了\n");
	}
	else
	{
	printf("未成年\n");
	printf("不建议谈恋爱\n");
	}
	return 0;
}

这个时候就需要将两个printf放入{ }中了

嵌套if

在c语言中,if和else可以进行嵌套,进行多从判断

案例:

int main()
{
	int a = 0;
	scanf("%d", &a);
	if (a / 2 == 0)//对a除2的商进行判断
		printf("输入的数字是0");
	else
	{
		if (a / 2 > 0)
			printf("输入的数字是正数");
		else
			printf("输入的数字是负数");
	}	
	return 0;
}

例子:判断年龄

int main()
{
	int x = 0;
	scanf("%d", &x);
	if (x <= 18)
		printf("少年");
	else
	{
		if (x <= 44)
			printf("青年");
		else
		{
			if (x <= 59)
				printf("中老年");
			else
			{
				if (x <= 89)
					printf("老年");
				else
				{
					printf("老寿星");
				}
			}
		}
	}
	return 0;
}

悬空else

悬空else:如果有多个if和else,可以记住一条规则,else总是跟最接近的if匹配

案例:

int main()
{
	int a = 0;
	int b = 2;
	if (a == 1)
		if (b == 2)
			printf("hehe\n");
		else
			printf("haha\n");
	return 0;
}
  1. if (a == 1):判断a是否=0,
  2. if (b == 2) printf("hehe\n"):如果上面判断是等于0,那么就执行这一句语句,判断b是否等于2
  3. else printf("haha\n"):如果第二个if语句不成立,那么就打印haha

注意:在这段代码中,第一个if语句没有else,而代码中的else是隶属于第二个if语句的,因为else是与它最近的if进行匹配,那么又因为这第一个if语句就不成立,故就不继续执行子语句,故就什么都没有打印

Switch语句

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

基本语法:

int main()
{
	switch (x) {
	case value1: statement
		break;
	case value2: statement
		break;
	default: statement
	}
	return 0;
}

Switch语句:判断x表达式的值,如果是value1,那么就执行value1,如果不是就看value2,如果是那么就执行value2,如果都不是,那么就执行default语句

注意:.

  1. switch 后的 x表达式 必须是整型表达式 (字符也可以,存放的ascll码)
  2. case 后的值,必须是整形常量表达式
  3. 如果做分支,那么分支后要加上break,来退出case,防止系统进行进入下一条case
  4. Case后跟的是冒号不是分号

练习:

int main()
{
	int a = 0;
	scanf("%d", &a);
	switch (a % 3)
	{
	case 0:
			printf("余数是0");
			break;
	case 1:
			printf("余数是1");
			break;
	case 2:
			printf("余数是2");
			break;
	}
		return 0;
}
  1. switch (a % 3):用Switch函数代判断a % 3的余数,并将余数带入下面的代码
  2. case 0/1/2/:判断余数是否是相应数如果是就执行子语句,printf
  3. break:case停止执行标志符

练习:求星期                

int main()
{
	int a = 0;
	scanf("%d", &a);
	switch (a)
	{
	case 1:
		printf("星期一");
		break;
	case 2:
		printf("星期二");
		break;
	case 3:
		printf("星期三");
		break;
	case 4:
		printf("星期四");
		break;
	case 5:
		printf("星期五");
		break;
	case 6:
		printf("星期六");
		break;
	case 7:
		printf("星期日");
		break;
	default:
		printf("请输入正确的周期");
		break;
	}
}

练习求工作日:

int main()
{
	int a = 0;
	scanf("%d", &a);
	switch (a)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		printf("工作日");
		break;
	case 6:
	case 7:
		printf("休息日");
		break;
	default:
		printf("请输入正确的周期");
		break;
	}
	return 0;
}

因为没有了break,所以,系统会一直执行,也就是1-5都是工作日,6\7是休息日

if和Switch就到这了,循环将在下一章更新

如有错误请指出

猜你喜欢

转载自blog.csdn.net/2203_76023611/article/details/132044456