在上一章我们知道了运算符有好多好多,有一个就是逻辑运算符,还有就是我并没讲赋值运算符什么“==,!=等”这些因为这一章节我们将会领略到。那么开干!!!算了,我在这里说下吧:我八月底就会在小破站上发表讲解视频:隐官陈清都的个人空间-隐官陈清都个人主页-哔哩哔哩视频大家记得关注我
然后这是我的gitte上关于这个仓库的地址,大家可以下源代码查看:安徽省专升本C程序设计: C程序设计讲解的源代码及题目解析
git使用即安装:【狂神说Java】Git最新教程通俗易懂_哔哩哔哩_bilibili以后这些话我放在文章最底部
一、if结构
- 定义:if在英语中表如果(英语考点如虚拟语气);在这就是说如果满足这个条件我就执行包含的语句,如果不满足我就不执行if包含的语句。以下为基本结构:
if(表达式){ //如果满足这个我就执行这个
语句1
}else if(表达式){ //上面那个没满足但是满足了这个我就执行这个
语句2
}
else{ //以上都没满足那就执行这个
语句3
}
/*
这是基本结构而已你可以只写一个if,此处不想废话太多
一句话总结:“如果”,“那么”,“否则”分别表示以上if,else if,else
所以根据自己需要的结构进行搭配即可
*/
#include <stdio.h>
main() {
//现在我要通过输入的年纪表示你是否是成年还是中年还是老年
unsigned int age; //因为年纪不可能取负数所以选择无符号数
printf("请输入你的年龄:");
scanf("%u", &age); //这里注意要是%u(输入一个无符号数)更加严谨,
//如果是%d在我这也可以但是不严谨!考试最重要的就是严谨
if (age < 18) { //此处写的就是如果没到18
printf("您还未成年,此页面你不能查看!!");
}
else if (age>=18 && age<30) { //这里就是判断是否大于18并且要小于30
printf("您已成年");
}
else if (age >= 30 && age<60) { //&&表示and既满足大于等于30 又要小于60
//你不这么写淡饭是满足以上大于18的就在上面的判断分支中执行了
printf("您以中年");
}
else if (age >= 60 && age<=100) {
printf("您以老年,老不羞的还看此页面!!!!");
}else {
printf("你看看你输入的年龄可是能达到的?");
}
}
解答:
- &&表示并且(同真为正,否则为假),||表示或者(同假为假,否则为真),!表示取反(这个一般在!=中看到的多,但是有点差距这里是取反,即真为假,假为真!而!=表示不等于)
- 为什么加上unsigned后输入负数能走进else而不加则进入小于18的分支?because:如输入-12时,有符号整数
-12
,其二进制表示(假设为 32 位)为11111111 11111111 11111111 11110100
。当把这个二进制解释为无符号整数时,它就变成了一个很大的数4294967284
。 - 其实我还想讲>,<,>=,<=,!=的但是我觉得这个吧就是数学里面的常识,需要注意的就是=要一直在右边,不要写成=>
补充:
最后本帅哥再来讲解&&这个逻辑运算符和&这类运算符的区别哈!
- 首先此选择结构可以里面再嵌套判断的,知道吧!然后后续讲解的循环也是可以嵌套的,你只用记住考试中的嵌套指的就是:大盒子里面还装了小盒子,执行最终那个满足条件的盒子里面的语句!我是害怕新手不明白嵌套这个概念。因为我会最后(总结整本书指点的时候)写好多练习题里面就会出现嵌套呀什么的!关注我持续更新
#include <stdio.h>
//经典判断润平年题。即闰年年份只能被4或400整除不能被100整除
main(){
int year;
printf("请输入年份:");
scanf("%d",&year);
if(year%400==0 || year%4==0 && year%100!=0){
printf("是闰年");
}else{
printf("不是闰年");
}
}
二、switch实现分支结构
- 定义:switch 语句是⼀种特殊形式的 if...else 结构,⽤于判断条件有多个结果的情况。它把多重的 else if 改成更易⽤、可读性更好的形式。
//基本结构
switch(变量){
cash 常量值1:
语句1;
break; //跳出判断
cash 常量值2:
语句2;
break;
default: //若以上的cash都不满足则执行这个
语句;
}
#include <stdio.h>
main() {
Switch_Test(); //调用判断星期函数
}
Switch_Test() {
int week;
printf("请输入1-7数字:");
scanf("%d",&week);
switch (week) { //对变量中的常数值开始以下的判断
case 1:
printf("周一");
break; //break跳出判断的,不写他将会执行下面能满足语句
case 2:
printf("周二");
break;
case 3:
printf("周三");
break;
case 4:
printf("周四");
break;
case 5:
printf("周五");
break;
case 6:
printf("周六");
break;
case 7:
printf("周日");
break;
default: //若以上的都不满足将执行这条语句,因为这个是最后一条语句也必须是,不用加break
printf("输入数字不满足条件");
}
}
三、逻辑运算符与位运算符的区别
逻辑运算符 &&
(逻辑与)、||
(逻辑或)和 !
(逻辑非)用于对条件的逻辑组合和取反操作,操作数通常是布尔值(真或假),其结果也是布尔值。
&&
:当且仅当两个操作数都为真时,结果为真;否则为假。||
:当至少有一个操作数为真时,结果为真;只有两个操作数都为假时,结果为假。!
:对操作数取反,如果操作数为真,则结果为假;如果操作数为假,则结果为真。
位运算符 &
(按位与)、|
(按位或)和 ~
(按位取反)用于对操作数的位进行操作。
&
:对两个操作数的对应位进行与运算,只有当两个对应位都为 1 时,结果位才为 1,否则为 0。|
:对两个操作数的对应位进行或运算,只要两个对应位中有一个为 1,结果位就为 1,只有当两个对应位都为 0 时,结果位才为 0。~
:对操作数的每一位取反,1 变为 0,0 变为 1。
主要区别在于逻辑运算符是基于布尔值进行逻辑判断,而位运算符是直接对操作数的位进行操作。所以在考试时擦亮双眼辨别