正文 | 开始 |
前言:在C语⾔中 0为假 ⾮0表⽰真
也就是表达式的结果如果是0,则语句不执⾏,表达式的结果如果不是0,则语句执⾏
一:操作符
-
1关系操作符
C语⾔⽤于⽐较的表达式,称为“关系表达式”(relationalexpression),⾥⾯使⽤的运算符就称 为“关系运算符”(relationaloperator),主要有下⾯6个
> ⼤于运算符
< ⼩于运算符
>= ⼤于等于运算符
<= ⼩于等于运算符
== 相等运算符
!= 不等运算符
关系表达式通常返回 0 或 1 ,表⽰真假。
C语⾔中, 0 表⽰假,所有⾮零值表⽰真。
例如
关系表达式常⽤于 if 或 while 结构。
注意:相等运算符 == 与赋值运算符 = 是两个不⼀样的运算符
if(3=x) --------------------------------(此时永远判断为真)
if(3==x)---------------------------------(此时判断x是否等于3)
另⼀个需要避免的错误是:多个关系运算符不宜连⽤
i < j < k
实际执⾏的是
(i < j) < k----------------上⾯式⼦中, i < j 返回 0 或 1 ,所以最终是 0 或 1 与变量 k 进⾏较
#include <stdio.h>
int main()
{
int a = 0;
scanf("%d", &a);
if(a>=80 && age<=100)
{
printf("优秀\n");
}
return 0}
2 条件操作符
条件操作符也叫三⽬操作符,需要接受三个操作数的,形式如下:
1 exp1 ? exp2 : exp3
条件操作符的计算逻辑是:
如果exp1 为真, exp2 计算,计算的结果是整个表达式的结果;
如果 exp1 为假,exp3 计算,计算的结果是整个表达式的结果;
4. 逻辑操作符: && || !
逻辑运算符提供逻辑判断功能,⽤于构建更复杂的表达式
! 逻辑取反运算符 改变单个表达式的真假
&& 与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)
|| 或运算符,就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假)
!--------------是改非;非改是
&&-------------两真才为真
||----------------一真可为真
代码练习:闰问题
#include <stdio.h>
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;
}
C语⾔逻辑运算符还有⼀个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是 保证的。
所以如果左边的表达式满⾜逻辑运算符的条件,就不再对右边的表达式求值。
if(12>15&&a++) ----------------------此时左边的表达式已经满足逻辑运算符的判断条件
右边表达式不再执行
二:分⽀结构
1 :if 语句
由一个问题引入if的讲解
即成绩划分
(一) 两种基本形式
1 if ( 表达式 )
语句
输入一个分数,大于60,就是及格
#include <stdio.h>
int main()
{
int a = 0;
scanf("%d", &a);
if(a>=60)
printf("=及格=\n");
return 0;
2 if ( 表达式 )
语句 1
else
语句 2
输入一个分数,大于60,就是及格,小于60,就是不及格
#include <stdio.h>
int main()
{
int a = 0;
scanf("%d", &a);
if(a>=60)
printf("及格\n");
else
printf("不及格\n“)
return 0;
}
(二) 嵌套if
那么,你已经学会骑自行车了
可以开始驾驶坦克了
现在让我们写一个完整的代码
#include<stdio.h>
main()
{
float a;
printf("请输入分数");
scanf("%f",&a);
if(a<60){
printf("%f不及格",a);
}
else if(a==60){
printf("%f及格",a);
}
else if(a<=80){
printf("%f中等",a);
}
else if(a<=89){
printf("%f良好",a);
}
else if(a<=100){
printf("%f优秀",a);
}
}
if else 语句中, else 可以与另⼀个 if 语句连⽤,构成多重判断,这就是if嵌套
(三)else与if的配对
记住一句话:else永远最近的if配对
2:switch语句
那么,
#include<stdio.h>
main()
{
float a;
printf("请输入分数");
scanf("%f",&a);
if(a<60){
printf("%f不及格",a);
}
else if(a==60){
printf("%f及格",a);
}
else if(a<=80){
printf("%f中等",a);
}
else if(a<=89){
printf("%f良好",a);
}
else if(a<=100){
printf("%f优秀",a);
}
}
这个可以替代吗?
#include <stdio.h>
int main()
{
printf("输入成绩");
int a;
scanf("%d", &a);
grade /=10;
switch ( a ) {
case 10:
case 9:
printf("优秀\n");
break;
case 8:
printf("良好\n");
break;
case 7:
printf("中等\n");
break;
case 6:
printf("及格\n");
break;
default:
printf("不及格\n");
break;
}
return 0;
}
下面介绍一下SWITCH
switch 语句是⼀种特殊形式的结构,⽤于判断条件有多个结果的情况。它把多重if 改成更易⽤、可读性更好的形式。
基本形式:
switch (expression)
{ case value1: statement
case value2: statement
default: statement
}
上⾯代码中,根据表达式 expression 不同的值,执⾏相应的 case 分⽀。如果找不到对应的值, 就执⾏ default 分⽀。
注: • switch 后的 expression 必须是整型表达式
• case 后的值,必须是整形常量表达式
•case 和后边的数字之间必须有空格
• 每⼀个 case 语句中的代码执⾏完成后,需要加上 break ,才能跳出这个switch语句。
1,在 switch 语句中 break 语句是⾮常重要的,能实现真正的分⽀效果
当然,break也是要看需求的;
2,switch语句中的default
在使⽤ switch 语句的时候,我们经常可能遇到⼀种情况,⽐如 switch 后的表达式中的值⽆法匹 配代码中的 case 语句的时候,这时候要不就不做处理,要不就得在 switch 语句中加⼊ default ⼦句。
在 switch 语句中 case ⼦句和 default ⼦句有要求顺序吗? default 只能放在最后吗?
其实,在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要你的顺序是满⾜实际需求的就可以。 不过我们通常是把 default ⼦句放在最后处理