C语言之分支和循环(1)

目录

一、if语句

1.if

 2.else

3.分支中包含多条语句

4.嵌套if

二、switch语句 

1.if与Switch对比

2.case

3.default


一、if语句

1.if

if的语法形式如下:

if(表达式)
   语句;

表达式为真,语句执行;表达式为假,语句不执行。

在C语言中,0为假,非0为真。

例如: 

#include <stdio.h>
int main()
{
 int num = 0;
 scanf("%d", &num);
 if(num % 2 == 1)
 printf("%d 是奇数\n", num);
 return 0;
}

 2.else

#include<stdio.h>
int main()
{
	int num = 0;
	scanf("%d", &num);
	if ( num % 2 == 1)
		printf("%d,是奇数\n", num);
	else
		printf("%d,是偶数\n", num);
	return 0;

}

3.分支中包含多条语句

默认在 if else 语句中默认都只控制一条语句,比如:
#include<stdio.h>
int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age >= 18)
		printf("成年\n");
	else
		printf("未成年\n");
	return 0;

}

在if和else语句中默认只控制一条语句,所以如果要控制多条语句时就需要用{}括起来,此外为了避免错误,在只有一条语句时我们也可以加上{}

例如:

#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;
}

4.嵌套if

if else 语句中, else 可以与另一个 if 语句连用,构成多重判断。
例如:
#include<stdio.h>
int main()
{
	int age = 0;
	scanf("%d", &age);
	if(age<18)
	{
		printf("少年\n");
	}
	else
	{
		if (age <= 44)
		{
			printf("青年\n");

		}
		else
		{
			if (age <= 59)
				printf("中老年\n");
			else
			{
				if (age <= 90)
					printf("老年\n");
				else
					printf("老寿星\n");
			}
		}
	}

	return 0;
}

悬空else问题

else总是与最接近的if匹配,不是和代码中对齐的if相匹配,在写代码时应注意{}的合理使用,会使我们的代码可读性跟高。


 

二、switch语句 

1.if与Switch对比

除了 if 语句外,C语言还提供了 switch 语句来实现分支结构。
switch 语句是一种特殊形式的 if...else 结构,用于判断条件有多个结果的情况。它把多重
else if 改成更易用、可读性更好的形式。
例如:计算除3后的余数
if:
#include<stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	if (n % 3 == 0)
		printf("整除\n");
	else
	{
		if (n % 3 == 1)
			printf("余数为1\n");
		else
			printf("余数为2\n");
	}
	return 0;
}
#include<stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	switch (n % 3)
	{
	case 0://case后有空格
		printf("整除\n");
		break;//一定注意加break
	case 1:
		printf("余数为1\n");
		break;
	case 2:
		printf("余数为2\n");
		break;
	default://case和default没有顺序要求,但是default通常放在最后。
		printf("?\n");
	}
	return 0;
}

switch:

#include<stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	switch (n % 3)
	{
	case 0://case后有空格
		printf("整除\n");
		break;//一定注意加break
	case 1:
		printf("余数为1\n");
		break;
	case 2:
		printf("余数为2\n");
		break;
	default://case和default没有顺序要求,但是default通常放在最后。
		printf("?\n");
	}
	return 0;
}

2.case

注意:

case和后面的数字间必须有空格。

每个case执行完了以后都要加上break结束,否则会继续下一个case中的语句。

  switch 语句也是分支效果的,只有在 switch 语句中使用  break 才能在跳出 switch
句,如果某一个 case 语句的后边没有 break 语句,代码会继续玩下执行,有可能执行其他 case
语句中的代码,直到遇到 break 语句或者 switch 语句结束。

3.default

在使用  switch 语句的时候,我们经常可能遇到一种情况,比如 switch 后的表达式中的值无法匹
配代码中的 case 语句的时候,这时候要不就不做处理,要不就得在 switch 语句中加入default 子句。
switch 后边的 expression 的结果不是 value1 ,也不是 value2 的时候,就会执行
default 子 句。
switch 语句中 case 子 句和 default 子 句有要求顺序吗? default 只能放在最后吗?
其实,在 switch 语句中 case 语句和 default 语句是没有顺序要求的 ,只要你的顺序是满⾜实
际需求的就可以。
不过我们 通常是把 default 子句放在最后处理的。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值