C语言第三节--分支

ni在C语言中,有三种结构,分别是顺序结构,选择结构,循环结构。

一、if语句

1.1

if格式:

if(表达式)
   语句    //注意要对齐缩进
//表达式为真则执行

接下来做一个简单的例子:判断一个数字是否为奇数

思路:定义一个变量,使它除2取余

实现:

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

1.2

if - else

当if需要有多个条件的时候,需要用else来表达

具体格式为:

if(表达式)
  语句
else
   语句

做一个实例:现在做一个实例,上面我们已经做个做一个奇数的代码,那么如果判断,不是奇数就是偶数的时候,我们需要用else来实现

代码如下:

#include <stidio>
int main()
{
    int num = 0;
    scanf("%d",&num);
    if(num % 2 == 1)
       printf("是奇数\n");
    else
       printf("是偶数\n");  //注意格式缩进,else应该和if对齐
    return 0;
}

接下来,我们在做一个案例:判断一个人是否成年:

和判断奇数大抵相同

代码如下:

#include <stidio>
int main()
{
    int age = 0 ;
    scanf("%d",&age);
    if(age>=18)
       printf("成年\n");
    else
       printf("未成年\n");
    return 0;
}

注意:做循环操作的时候一定要注意缩进

1.3

多种循环结构

if  else语句只能控制一条语句,如果想要If控制多条语句,就应把要控制的语句用{}括起来。

1.4

嵌套if

if下面可以用多个else连用

接下来做一个案例:

判断输入的一个数是0,正数还是负数

代码如下:

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

接下来做一个练习:

输⼊⼀个⼈的年龄

如果年龄18岁,打印"少年"

如果年龄在18岁⾄44岁打印"⻘年"

如果年龄在45岁⾄59岁打印"中⽼年"

如果年龄在60岁⾄89岁打印"⽼年"

如果90岁以上打印"⽼寿星"

思路:根据条件可以得出有五个条件,也就是一个if  四个else

代码如下:

#include <stdio.h>
int main(){
    int age = 0 ;
    scanf("%d",&age);
    if(age<18)
       printf("少年");
    else  if (age <= 44)
          printf("青年\n");
    else  if(age <= 59)
          printf("中老年\n");
    else  if(age <= 90)
          printf("老年\n");
    else  
          printf("老寿星\n");

return 0;
}

1.5

悬空else:else总是跟最接近的if匹配。

我们来看一个代码:

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

这里很容易看成打印haha,但是其实什么都不打印

因为这里else是与内层if最近,所以当a != 0;时函数已经结束。

二、关系操作符 

2.1

C语言用于比较的表达式,称为:”关系表达式“,主要有下面6个:

>  大于

< 小于

> = 大于等于

<= 小于等于

== 等于

!=不相等

系表达式通常返回 0 或 1 ,表⽰真假。0假1真。

2.2

多个关系运算符不宜连用:

i < j < k

该表达式从左到右运算,如果i<j,那么则不执行下一个运算。

三、条件操作符

条件操作符也被称为三目操作符,格式如下:

exp1 ? exp2 : exp3
//如果 exp1 为真, exp2 计算,计算的结果是整个表达式的结果;如果

//exp1 为假, 就计算exp3

  接下来做一个案例:

找出两个数中的最大值:

使用if后,代码如下:

#include <stdio.h>

int main()
{
    int a = 0;
    int b = 0;
    scanf("%d %d",&a,&b);
    if(a > b)
      printf("最大值为a\n");
    else  if (a < b)
          printf("最大值为b");
    else
          printf("相等");
   
   return  0 ;
}

用三目操作符改变之后为:

#include <stdio.h>

int main()
{
 int a = 0;
 int b = 0;
 scanf("%d %d", &a, &b);
 int m = a > b ? a : b;   //a是否大于b?如果大于b那么就输出a否则输出b
 printf("%d\n", m);
 
 return 0;
}

四、

逻辑操作符:

!取反

| | 或运算,一真为真

&&与运算,都真为真

4.1

取反运算符

定义一个变量flag,判断flag真假执行相应的条件:

#include <stidio.h>

int main()
{
  int flag = 0 ;
  if(!flag)
   {
     printf("Ture\n");
   } 
  return 0;
}

4.2与运算符

&&与运算,代码如下:

include <stdio.h>

int month = 0 ;
scanf("%d",&month);
if(month >= 3 && month <= 5)
{
   printf("春季\n"); 
}

4.3

或运算,代码如下:

int month = 0;

scanf("%d", &month);

if(month == 12 || month==1 || month == 2)
{
 printf("冬季\n");
}

4.5

短路

C语言先对左侧的表达式求值,再对右边的表达式求值,如果左边的表达式满⾜逻辑运算符的条件,就不再对右边的表达式求值。

五、switch语句

5.1

switch也是一种分支结构,⽤于判断条件有多个结果的情况。

格式为:

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

有两点需要注意:

switch 后的 expression 必须是整型表达式

case 后的值,必须是整形常量表达式

接下来我们来看一下和if函数的差别:

计算一个数被3除后的余数:

先看一下if函数

#include <stdio.h>

int main()
{
 int n = 0;
 scanf("%d", &n);
 if(n%3 == 0)
 printf("整除,余数为0\n");
 else if(n%3 == 1)
 printf("余数是1\n");
 else

 printf("余数是2\n");
 return 0;
}

那么用switch如下:

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

有两点要注意:

case 和后边的数字之间必须有空格

 每⼀个 case 语句中的代码执⾏完成后,需要加上 break ,才能跳出这个switch语句

如果在case下没有break那么在执行一个case后会继续执行知道结束或者跳出。

5.2

default

类似于py中的else,如果在其中都不能执行,需要有一个结束语句。

注意:default可以放在任意位置

接下来我们来做一个实例:

输⼊⼀个1~7的数字,打印对应的星期几

例如:

输⼊:1输出:星期⼀

输⼊:2输出:星期⼆

输⼊:3输出:星期三

输⼊:4输出:星期四

输⼊:5输出:星期五

输入:6输出:周末

输入:7输出:周末

代码如下:

#include <stdio.h>

int main()
{
 int day = 0;
 scanf("%d", &day);
 switch(day)
 {
 case 1:

 printf("星期⼀\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;
 }
 return 0;
}

若将周一到周五改成工作日,可以简化为:

#include <stdio.h>

int main()

 int day = 0;
 scanf("%d", &day);
 
 switch(day)
 {
 case 1:

 case 2:
 case 3:
 case 4:
 case 5:
 printf("⼯作⽇\n");
 break;
 case 6:
 case 7:
 printf("休息⽇\n");
 break;
 }
 return 0;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值