分支与循环1(初识c语言)

if语句

if语句的基本形式:

if(表达式)
{
   语句
}

当表达式成立时,就执行{语句},否则跳过语句。在c语言中,0为假,非0为真,当判断结果为非0时语句执行。

e.g:输入一个整数,判断是否为偶数

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

else

else一般跟if搭配,表示如果....否则...的意思。例如,如果一个数不是奇数,就是偶数,那么这里就需要用到if...else...语句。

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

 再比如,输入一个人的年龄,如果>18就输出成年人,否则输出未成年。

#include <stdio.h>
int main()
{
int age=0;
printf("请输入你的年龄: \n");
scanf("%d",&age);
if(age>18)
{
printf("您已成年,游戏开始!\n");
}
else
{
printf("未成年,游戏退出");
}
return 0;
}

 分支中包含多条语句

默认在if和else语句中都只控制一条语句。e.g

#include <stdio.h>
int main()
{int age=0;
scanf("%d",&age);
if(age>=18)
printf("成年了\n");
printf("可以开始游戏了");
return 0;
}

在这个代码中当你输入的数字>=18时,就会输出第一个printf语句,当<18时就不会输出第一个printf语句,但是不论你输入的是什么数字,第二个print语句同样会被执行,不信可以尝试运行一下。

那么为 什么会造成这种结果呢?因为在if和else语句中默认值控制一条语句,而第二条语句不接受if的控制也就自然不会循序if执行语句的规则,相当于第二条语句在规则之外,不管规则怎样限制,第二个语句照常输出。那如果我们要if或else控制多条语句呢,我们应该怎么办?答案自然是让第二条语句 也在规则控制的范围内,这个时候我们就可以添加一个{ },把多条语句控制在if里面,这样就可以实现语句按照规则去打印啦!

#include <stdio.h>
int main()
{
int age=0;
printf("请输入您的年龄");
scanf("%d",&age);
if(age>=18)
{
printf("您已成年\n");
printf("游戏开始\n");
}
else
{
printf("您未成年\n");
printf("游戏结束\n");
}
return 0;
}

嵌套if

在if-else语句中,else可以与另一个if进行配套,形成多重判断结构。e.g判断一个数字的正负

#include <stdio.h>
int main()
{
int a=0;
printf("请输入一个整数");
scanf("%d",&a);
if(a>0)
{
printf("%d 是正数",a);
}
else if(a<0)
{
printf("%d 是负数",a);
}
else
{
printf("%d =0",a);
}
return 0;
}

 上面的代码中的else if 的if一直到最后一个else及其所包含的语句是嵌套在前面的else子句中,形成嵌套结构。

再比如,输入一个 整数,如果该数>0,则对它进行奇偶判断,如果是负数,则直接输出。

#include <stdio.h>
int main()
{
int a=0;
scanf("%d",&a);
if(a>0)
{if(a%2==0)
printf("偶数");
else
printf("奇数");
}
else{
printf("负数");
}
return 0;
}

在上述代码中,第二个if就是嵌套在第一个if中,有了嵌套if语句,我们就可以进行多重判断。

悬空else问题

当出现多个if和else时,可以记住这么一个规则,else总是和离他最近的一个if进行搭配。e.g

#include <stdio.h>
int main()
{
int a=1;
int b=2;
if(a==0)
if(b==2)
printf("haha");
else
printf("hehe");
return 0;
}

当咱运行这个代码时,什么都不会输出。因为这里的else和第二个if搭配,而第二if得到执行的前提是第一个if的判断条件为真,但是很明显可以知道1!=0,so第一个if没法执行,自然也就无法执行下一个if语句咯,所以最后什么都不会输出啦。如果还不明白的话,请看下一个代码:

#iclude <stdio.h>
int main()
{
int a=1;
int b=2;
if(a==0)
{
if(b==2)
{
printf("haha");
}
else
{
printf("hehe");
}
}
return 0;
}

这个代码就是上一个代码的转换,其实也属于 if的嵌套结构,else和内层的if进行搭配,形成一个嵌套结构,也就是原来悬空的else和第二个if进行了搭配,遵循“就近原则”。

switch语句

Switch语句其实是一种特殊的if-else语句,就是条件的分支呗,可以进行多重判断  。

具体结构如下:

switch(判断式)
{
case 1://如果结果是1就怎样
case 2://如果结果是2就怎样
case 3://如果结果是3就怎样
default://如果都不是就怎样
}

 注意:Switch后面必须是整型表达式,case后面必须是整型常量表达式

下面比对一下Switch语句和if-else语句的形似性和区别。e.g输入一个整数,输出除以3之后的余数。

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

如果改成Switch语句,那么应该是这样的

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

注意:

1.在case后面的数字必须要有空格

2.在case语句执行完之后要加上break

今天就先写这么多,下期预告:

1.Switch语句中的break

2.switch语句中的default

3.switch语句中的case和default的顺序问题

4.while循环

5.for循环的实践

6.do-while循环

********************************观众老爷们点个赞吧(磕头)(痛哭)(抱头)***********************

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值