(一)为什么要在c语言中使用if,switch?
我们在平常写代码时,一定不会只局限于1+1,或只让你输入输出一种情况,随着需求的提高,我们写代码的难度和要求也会越来越高,肯定会出现多种情况,比如让你去判断是非对错,让你比较大小,让你去判断多种情况等等。这时候,就需要if或switch出场了。它们在c语言中就是用来实现分支语言的。
(二)如何用if实现分支语句
if使用的格式如下
{
if(表达式)
语句
}
if顾名思义,就是如果的意思,使用if的时候要在后面添上(),并在括号里面填上条件,如果()里面的条件为真,那么就执行这个if后面的语句,如果为假那么就不执行,如下图
#include <stdio.h>
int main()
{
int a;
scanf("%d",&a);
if(a%2==0) //判断是否为偶数,是偶数就输出
printf("是偶数");
return 0;
}
且在 if后面只能跟一个语句,如果要在if后面添加多个语句也是可以的,到要在if后面加上{},在{}里面添加多个语句,如下图
#include <stdio.h>
int main()
{
int a;
scanf("%d",&a);
if(a<=18)
{
printf("还未成年\n");
printf("还不能早恋哦");
}
return 0;
}
(三)if…else语句的使用
if可以单独使用,也可以和else搭配使用,比如还是让你判断数字的奇偶,很显然,结果无非就两种情况,要么是奇数要么是偶数,那么我们就可以用if…else语句实现代码,如下图
#include <stdio.h>
int main()
{
int num;
scanf("%d",&num);
if(num%2==0)
printf("偶数");
else
printf("奇数");
return 0;
}
当然,if和else可以多次使用,比如说让你编写一个代码:让你给人的年龄分级,<=44输出青年人;45-59输出中年人;60-74输出年轻老年人;75-89输出老年人;=>90输出长寿老人。这时用一个if…else语句肯定不好实现这串代码,那么多次套用if…else语句就可以实现,代码如下
#include <stdio.h>
int main()
{
int age;
scanf("%d",&age);
if(age<44)
printf("青年人");
else if(age<=59)
printf("中年人");
else if(age<=74)
printf("年轻老年人");
else if(age<=89)
printf("老年人");
else
printf("长寿老人");
return 0;
}
注意⚠️:在多次套用if…else语句时,要明白else与哪个if相匹配,这时要记住,else默认与最近的if相匹配,如下图
#include <stdio.h>
int main()
{
int a=1;
int b=2;
if(a==0)
if(b=2)
printf("hi");
else
printf("hello");
//以为else和第一个if配对,因为a=1,不等于0,所以输出hello,实际上else与最近的if配对,所以这里不输出任何信息
}
如果我们想要让else与第一个if匹配,我们可以使用{},如下图
#include <stdio.h>
int main()
{
int a=1;
int b=2;
if(a==0)
{
if(b=2)
printf("hi");
}
else
printf("hello");//这里else与第一个if配对,a不等于0,所以输出hello
}
(四)关系操作符与逻辑操作符
注意⚠️:在关系表达式里使用的符号叫做关系操作符,而关系表达式里通常返回的值为1/0,表达真假。如下图
2<4 //因为2小于4为真,所以这里的最终返回值是1
2<1 //因为2小于1为假,所以这里的最终返回值是0
常见的关系操作符有如下符号
<:小于
>:大于
<=:小于等于
>=:大于等于
==:相等
!=:不相等
常见的逻辑操作符如下
&&:表示并且
‖:表示或
!:表示取反
注意⚠️:在c语言中,表达两个值相等的时候用==而不是=,=在c语言中表达的是赋值,也就是把=右边的数的值赋给左边的数
注意⚠️:在c语言中,在多次使用关系运算符时不像我们日常写数学题,或比大小。比如1<2<3,这在数学中表示1,2,3之间的大小关系,但在c语言中,它会先计算1<2,为真,返回1,然后1<3,为真,最终的结果就是1
如果想要达到让2在1和3之间的这种关系,我们可以运用逻辑操作符,可以写为
1<2&&2<3,这样就表示2在1和3之间了。如果以后想要表示一个变量的值在某两个常数之间就可以运用&&符号,比如
10<a&&a<100就表示变量a在10-100之间
(五)条件操作符
条件操作符格式如下
exp1?exp2:exp3
条件操作符的计算逻辑是,如果exp1为真,只计算exp2,如果exp1为假,那么只计算exp3,如下图
#include <stdio.h>
int main()
{
int a=0;
int b=0;
scanf("%d %d",&a,&b);
int i=a>b?a:b; //如果a>b那么为真,i等于a,如果a<b那么为假,i等于b;
printf("%d\n",i);
}
(六)短路
在c语言中,在使用逻辑运算符时,它总是会先对左侧的表达式求值,然后再求右边的,但是如果左边的表达式不满足逻辑运算符的条件,那么就不会对右边的表达式求值,这就叫短路
&&:要求其左右两边的值都为真,最终结果才为真,如果左边为假,那么右边表达式就不用计算
‖:要求只要左右一边为真,那么最终返回值为真,如果左边为真,那么右边表达式也不用计算,如果左边为假,那么还要继续计算右边
练习1:如下图,阅读代码,计算结果
#include <stdio.h>
int main()
{
int i=0,a=0,b=2,c=3,d=4;
i=a++&&++b&&d++;
printf("a=%d\n b=%d\n c=%d\n d=%d\n",a,b,c,d);
return 0;
}
//a,b,c,d的值分别为1,2,3,4
因为a++是后置自增,所以a使用时为0,是假,所以后面的计算都不执行
练习2:判断闰年
#include <stdio.h>
int main()
{
int year;
scanf("%d",&year);
if(year%4==0&&year%100!=0||year%400==0)
printf("是闰年“);
else
printf("不是闰年");
}
(七)switch的使用
switch是if…else的一种特殊结构,可以判断多个结果的情况,其格式如下
#include <stdio.h>
int main()
{
switch(expression)
{
case value1:
statement;
case value2:
statement;
......
default:
statement;
}
return 0;
}
它会根据表达式不同的值执行相应的case分支,如果都找不到对应的值,那么就执行default分支
注意⚠️:switch后必须是整型表达式
case后的值也必须是常量表达式
case和后边的数字必须有空格
每个case语句中的代码执行后,要加上break,才能跳出switch语句
举一个具体的例子,如将学生成绩分等级,90及以上为A,80-89为B,70-79为C,60-69为D,60分以下为E,代码如下
#include <stdio.h>
int main()
{
int score;
scanf("%d", &score);
switch (score / 10)
{
case 9:
printf("A");
break;
case 8:
printf("B");
break;
case 7:
printf("C");
break;
case 6:
printf("D");
break;
case 1:
case 2:
case 3:
case 4:
case 5:
printf("E");
break;
default:
printf("输入错误,请输入合法的成绩");
break;
}
return 0;
}
&spm=1001.2101.3001.5002&articleId=160026691&d=1&t=3&u=d805cb7bab3b4ff6af5b6bee7707d34a)
1504

被折叠的 条评论
为什么被折叠?



