C语言基础(五)——分支语句

C语言是结构化的程序设计语言,这里的结构指的是顺序结构,选择结构,循环结构。我们可以使用if,switch实现分支结构,使用for,while,do while实现循环结构,对生活中的常见事情进行拆分。

if语句

if和else语句

语法形式:

if ( 表达式 )
 语句1
else
 语句2

在C语言中,0为假,非0表示真,也就是表达式的结果如果是0,则执行语句2,表达式的结果如果不是0,则执行语句1;

分支中包含多条语句

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

⽐如:要求输⼊⼀个整数,判断输⼊的整数是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;
}

再比如:输⼊⼀个整数,如果是正数,再判断是奇数还是偶数,并输出;如果不是正数则输出:正数。

#include <stdio.h>
int main()
{
 int num = 0;
 scanf("%d", &num);

if(num>0)
 {
     if(num%2 == 0)
         printf("偶数\n");
     else
         printf("奇数\n");
 }
 else
 {
     printf("⾮正数\n");
 }

 return 0;
}

注:如果有多个 if else ,可以记住这样⼀条规则, else 总是跟最接近的 if 匹配。

关系操作符

C 语⾔⽤于⽐较的表达式,称为 “关系表达式”,主要有:
  • > 大于运算符
  • < 小于运算符
  • >= 大于等于运算符
  • <= 小于等于运算符
  • == 相等运算符   判断两个值是否相等,例如:(3==x),注意不要写成=;
  • != 不相等运算符

以上操作符常常用作判断,关系表达式通常返回0或1,表示真假。

条件操作符

条件操作符也叫三⽬操作符,需要接受三个操作数的,形式如下:
exp1 ? exp2 : exp3
条件操作符的计算逻辑是:如果 exp1 为真, exp2 计算,计算的结果是整个表达式的结果;如果
exp1 为假, exp3 计算,计算的结果是整个表达式的结果。

练习:

改造前:
#include <stdio.h>
int main()
{
     int a = 0;
     int b = 0;
     scanf("%d", &a);
     if (a > 5)
         b = 3;
     else
         b = -3;
     printf("%d\n", b);
     return 0;
}
#include <stdio.h>
int main()
{
     int a = 0;
     int b = 0;
     scanf("%d", &a);
     b = a>5 ? 3:-3;
     printf("%d\n", b);
     return 0;
}

逻辑操作符

逻辑运算符提供逻辑判断功能,⽤于构建更复杂的表达式,主要有下⾯三个运算符。
  • ! :逻辑取反运算符(改变单个表达式的真假)。//a=0,则!a=1
  • && :逻辑与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)。
  • || :逻辑或运算符,就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假)
注:C语⾔中,⾮0表⽰真,0表⽰假
练习: 输⼊⼀个年份year,判断year是否是闰年
闰年判断规则:
  1. 能被4整除并且不能被100整除是闰年
  2. 能被400整除是闰年
#include <stdio.h>
//代码1
int main()
{
     int year = 0;
     scanf("%d", &year);
     if(year%4==0 && year%100!=0)
         printf("是闰年\n");
     else if(year%400==0)
         printf("是闰年\n");
 
     return 0;
}
//代码2
int main()
{
 int year = 0;
 scanf("%d", &year);
 if((year%4==0 && year%100!=0) || (year%400==0))
     printf("是闰年\n");
 
 return 0;
}

短路(逻辑操作符)

C语⾔逻辑运算符还有⼀个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是保证的。
如果左边的表达式满⾜逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为“短路”
例如:a||b 如果a=1是,那a||b就已经为真了,就不再对b进行判断;同理:a&&b,如果a=0是,那a&&b就为假,就在对b进行判断或运算;

switch语句

switch语法形式:

switch (expression) {
 case value1: statement
 case value2: statement
 default: statement
}
上⾯代码中,根据表达式 expression 不同的值,执⾏相应的 case 分⽀。如果找不到对应的值,
就执⾏ default 分⽀。
注: switch后面的expression必须是整型表达式,case后面的值,必须是整型常量表达式

switch中的break

练习:输⼊任意⼀个整数值,计算除3之后的余数

正确写法:

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

如果去掉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;
}

注:case和后边的数字之间必须有空格;每一个case语句中的代码执行完成后,需要加上break,才能跳出这个switch语句;

swtich中的default的顺序问题

switch 语句中 case 语句和 default 语句是没有顺序要求的,只要你的顺序是满⾜实
际需求的就可以。
不过我们通常是把 default ⼦句放在最后处理的。
  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值