分支与循环结构(上):if语句、switch语句

语言结构介绍

C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实现这三种结构的,其实我们如果仔细分析,我们⽇常所⻅的事情都可以拆分为这三种结构或者这三种结构的组合。
我们可以使⽤ if 、 switch 实现分⽀结构。使⽤ for 、 while 、 do while 实现循环结构。

if语句

if语法如下:在表达式判定为真的情况下就执行语句,为假就跳过该语句。(在C语言中数字0表示为假,不为零表示真)

if(表达式)
语句

例如判断一个数是奇数还是偶数:

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

如果输入的数字num对2取余为1,也就是说“num % 2 == 1”为真,则打印奇数。那一个整数不是奇数就是偶数,想要判断奇偶并打印出来就要用到“if…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;
}

同时注意“if”和“else”都只能控制一条语句,如果在if或者else后面直接写入多行代码可能会使输出结果与预期不符。
那怎么解决呢?很简单,在if和else语句后加上“{}”将要执行的代码括起来就好了(同时这也是C语言书写的规范格式),如下所示:

include <stdio.h>
int main()
{
 int age = 0;
 scanf("%d", &age);
 if(age >= 18) //if 后使⽤{} 控制多条语句-这个块也叫:程序块,或者复合语句 
 {
 printf("成年了\n");
 printf("可以谈恋爱了\n");
 }
 else //else 后使⽤{}控制多条语句-这个块也叫:程序块,或者复合语句 
 {
 printf("未成年\n");
 printf("不可以早恋哦\n");
 }
 return 0;
}

在 if else 语句中, else 可以与另⼀个 if 语句嵌套⽤,构成多重判断。⽐如:要求输⼊⼀个整数,判断输⼊的整数是0,还是正数或者负数。请看如下代码:

#include <stdio.h>
int main()
{
 int num = 0;
 scanf("%d", &num);
 if(num == 0)
 printf("输⼊的数字是0\n");
 else if(num > 0) //这⾥的if 相当于嵌套在else语句中,形成了嵌套结构 printf("输⼊的数字是正数\n");
 else
 printf("输⼊的数字是负数\n");
 
 return 0;
}

注意:在嵌套使用时我们需要注意else语句总是跟上一个离它最近的if语句匹配的。

switch语句

除了 if 语句外,C语⾔还提供了 switch 语句来实现分⽀结构。
switch 语句是⼀种特殊形式的 if…else 结构,⽤于判断条件有多个结果的情况。它把多重的 else if 改成更易⽤、可读性更好的形式。

switch (expression) 
{
 case value1: statement
 case value2: statement
 default: statement
}

expression 必须是整型表达式,他的结果会与case后面的某一个或者多个value相匹配,从而执行后面的statement(也就是需要运行的代码)

#include <stdio.h>
int main()
{
 int n = 0;
 scanf("%d", &n);
 switch(n%3)
 {
 case 0:
 printf("整除,余数为0\n"); 
 break;
 case 1:
 printf("余数是1\n"); 
 break;
 case 2:
 printf("余数是2\n"); 
 break;
 }
 return 0;
}

如上是一个计算对3取余的代码,输入的数字除以3(就是“n%3”),当计算出结果时在下面的case里面找对应的结果执行代码;
同时switch语句的一些格式需注意:
1.case 和后边的数字之间必须有空格
2. 每⼀个 case 语句中的代码执⾏完成后,需要加上 break ,才能跳出这个switch语句。(如果没有break,将导致运行结果错误)

#include <stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	switch (n % 3)
	{
	case 0:
		printf("整除,余数为0\n");
	case 1:
		printf("余数是1\n");
	case 2:
		printf("余数是2\n");
	}
	return 0;
}

如图,去掉break后程序不会直接跳出switch,而是接着执行后面的代码。在这里插入图片描述
最后介绍一下switch里面的default语句,它的意思是在case里面没有匹配的结果的时候就执行default语句里面的内容。

#include <stdio.h>
int main()
{
 int day = 0;
 scanf("%d", &day);
 switch(day)
 {
 case 1printf("星期⼀\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;
 defaultprintf("输入错误\n");
 }
 return 0;
}

在这里插入图片描述

如图,当输入8时,在上面的case里面没有匹配的结果,这个时候会直接转到default执行对应的代码。
-----------------------------------------------------分割符
到这我对if和switch语句的讲解就结束了,若有需要更正的地方请在评论区指正,共勉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值