超简单详细C语言分支语句(if,switch)望周知

1.if语句

if语句语法如下:


1.1  if(表达式)

          语句

在C语言中,0为假,非零为真,也就是表达式的结果是0,则语句不执行;又如果表达式的结果是非零,那么语句则执行

eg:输入一个整数判断是否为零

#include <stdio.h>

int main()

{

int num=0;

scanf("%d",&num);

if(num%2==1)

printf("%d是奇数\n",num);

return 0;

}

当我们输入一个奇数时,If后面的表达式为真,它就会打印这个奇数是奇数这句话,当我行输入一个偶数时,表达式结果为假,那么它就会直接跳过这个语句,直接return 0;然后结束程序。


1.2 else总是与if配对使用

   语法如下:

if(表达式)

     语句1

else

语句2

else语句可以和if语句配对使用,用来管理if表达式为0的部分

eg:输入一个数判断为奇数还是偶数

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语句先判断是否为奇,不是奇就是偶了。


1.3if或else后跟随多条语句

当后面跟随多条语句时if,else只分控制一条语句,若想执行多条语句时,应用{}括起来,使其整体成为一条复合语句。

eg:

int a=2;

if(a>3)

printf("he");

printf("he");

该代码的输出应该为he而不是空白,而如果把两个printf括起来则什么也不会打印。

else也同理


1.4嵌套if

if,else语句中,if和else内部也可与if连用,构成多重判断。即在它们原来条件的基础上再判断。

eg:输入一个数,如果是正数,再判断其是奇数还是偶数,如果不是正数则输出非正数

#include <stdio.h>

int main ()

{

int num=0;

scanf("%d",&num);

if(num>0)

{

if(num%2==1)

printf("%d是奇数\n",num);

else

printf("%d是偶数\n",num}

else

printf("%d是非正数\n",num)

return 0;

}


 1.5悬空else

如果有多个if和else,那么else总是与最接近的if相匹配。

eg:

int a=0;

int b=2;

if(a==1)

 if(b==2)

  printf("he");

else

printf("ha");

对于运行结果多人第一反应会是ha;而实际上结果是什么而不打应,因为if(b==2)被if(a==1)控制,而else又被最近if(b==2)控制,所以当if(a==1)为假时if(b==2)不会被执行,从而else也不会被执行,所以结果是什么也不打印


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


2.1switch语法

switch (整形表达式)

{

 case 整形常量1: 语句1

 case 整形常量2: 语句2

 default: 整形语句3

}

关于switch用代码更好理解

eg:

#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
switch(n)
{
case 0:
printf("0\n");
break;
case 1:
printf("1\n");
break;
case 2:
printf("2\n");
break;
default: 
printf("非0非1非2\n");
break;
return 0;

}

case用来接受switch (整形表达式)中表达式的结果,先判断结果是什么再去执行相应的语句,但switch的判断只会执行一次,所以常需要break来跳出分支判断。而default则是处理不包括case常量的部分。

上述的代码中,我们要注意的点有:
1. case 和后边的数字之间必须有空格
2. 每⼀个 case 语句中的代码执⾏完成后,需要加上 break ,才能跳出这个switch语句。
eg:(此代码用来说明switch只执行一次判断)
#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,当我输入3时,表达式结果为0,按常识是只执行case 0:下面的语句只打印余数为0,但事实3个printf的内容都会被打印,因为后续switch不再判断,而是直接执行。又例如,输入1,则会打印下余数为1和余数为2;所以switch常与break一同使用。

5.3 switch语句中的case和default的顺序问题
在 switch 语句中 case ⼦句和 default ⼦句有要求顺序吗? default 只能放在最后吗?
其实,在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要你的顺序是满⾜实
际需求的就可以。
不过我们通常是把 default ⼦句放在最后处理的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值