一、C语言bool类型
可以使用逻辑运算的true、false
#include <stdio.h>
#include <stdbool.h>
int main(){
bool a=10>5;
bool b=true;
printf("a的值为%d b的值为%d",a,b);
\\b和a的值仍然是整数 只能输出1或者0
return 0;
}
二、逻辑运算
逻辑运算只能对逻辑量进行运算,运算结果只有0和1.
运算符 | 描述 | 实例 | 运算结果 |
---|---|---|---|
! | 逻辑非 | !a | 与a相反 |
&& | 逻辑与 | a&&b | 见0出0,两1出1 |
II | 逻辑或 | aIIb | 见1出1,两0出0 |
一般情况下逻辑运算符优先级低于比较运算符,但是单目运算符优先级要高于双目运算符。 | |||
如果我们需要对数学表达式中的开区间和闭区间进行表述 | |||
eg: | |||
判断 | |||
a∈[1,100] | |||
G∈[A,Z] |
#include <stdio.h>
int main(){
int a=30;
char b='G';
if(a>=1&&a<=100)
printf("a属于1到100闭区间\n");
if(b>='A'&&b<='Z')
printf("b内元素属于A到Z闭区间");
return 0;
}
结合各种运算的优先级
优先级 | 运算符 | 结合性 |
---|---|---|
1 | () | 从左到右 |
2 | (单目)+ - ++ – ! | 从右到左 |
3 | * / % | 从左到右 |
4 | + - | 从左到右 |
5 | < <= > >= | 从左到右 |
6 | == != | 从左到右 |
7 | && | 从左到右 |
8 | II | 从左到右 |
9 | += -= *= /= %= | 从右到左 |
注意逻辑运算的短路现象
<运算1>&&<运算2> 如果运算1判断为假则不会再进行运算2
<运算1>||<运算2>如果运算1判断为真则不会再进行运算2
三、条件运算符
<条件>?<条件满足时的操作>:<条件不满足时的操作>
优先级比赋值高比其他的都要低,自右向左结合。
eg:
我们输入两个数,输出最大的数。
#include <stdio.h>
int main(){
int a;
int b;
int max;
printf("请输入两个数:\n");
scanf("%d %d",&a,&b);
max=a>b?a:b;//注意优先级,由于优先级高于赋值所以:两侧条件不要出现赋值
printf("其中最大的数是:%d",max);
return 0;
}
四、逗号运算符
处于所有运算赋值的优先级最底层,自左向右计算。
<表达式1>,<表达式2>
作用:逗号用来连接两个表达式或赋值运算,其中会先计算表达式1再计算表达式2,
将表达式2的结果作为逗号运算的结果。
eg:
#include <stdio.h>
int main(){
int a;
int b;
a=5+3,4+7;
b=(5+3,4+7);
printf("其中a的值是%d\n",a);
printf("其中b的值是%d",b);
return 0;
}
五、级联与嵌套的if_else
对于多级联的if_else,else总是和最近的if进行匹配,若有大括号优先匹配括号内。
eg:我们需要比较三个数的大小从而输出最大的那个数。
#include <stdio.h>
int main(){
int a;
int b;
int c;
int max;
printf("请输入三个数:\n");
scanf("%d %d %d",&a,&b,&c);
if(a>b){
if(a>c){
max=a;
}else{
max=c;
}
}
else{
if(b>c){
max=b;
}else{
max=c;
}
}
printf("最大的数是:%d",max);
return 0;
}
eg:我们有一个分段函数
x=1,f(x)=5x+2;
x<1,f(x)=100;
x>0,f(x)=6x-5;
#include <stdio.h>
int main(){
int x;
int f;
printf("请输入x的值:\n");
scanf("%d",&x);
if(x==1)
f=5*x+2;
else if(x<1)
f=100;
else if(x>0)
f=6*x-5;
printf("函数f(x)的值是:%d",f);
return 0;
}
六、Switch_case语句
switch (<控制表达式>){
case <常量>:
<执行体>;
case <常量>:
<执行体>;
…
default:
<执行体>;
break;
}
注意:<控制表达式>只能是整数的结果
break:如果找到对应的case <常量>的值则程序会从匹配到的case
开始往下去执行,直到遇到break跳出switch_case 语句。
eg:
成绩转换程序
[90,100] 等级:A
[80,89] 等级:B
[70,79] 等级:C
[60,69] 等级:D
[0,59]等级:not pass
#include <stdio.h>
int main(){
int grade;
printf("请输入您的考试成绩:\n");
scanf("%d",&grade);
grade/=10;
switch (grade){
case 10:
case 9:
printf("您的等级为A");
break;
case 8:
printf("您的等级为B");
break;
case 7:
printf("您的等级为C");
break;
case 6:
printf("您的等级为D");
break;
default:
printf("not pass");
break;
}
return 0;
}
七、随机变量
rand()函数可以产生一个随机数
eg:
我们如果要做一个猜数游戏
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(){
srand(time(0));
int random=rand();
int digit;
int count=1;
digit=random;
printf("正确答案是%d\n",random);
while(digit>=10){
digit/=10;
count++;
}
printf("需要猜的数是%d位数\n",count);//提示信息
int guess;
do{
printf("请输入你猜的数:\n");
scanf("%d",&guess);
if(guess>random){
printf("你猜大了.\n");
}else if(guess<random){
printf("你猜小了.\n");
}
}while(guess!=random);
printf("恭喜你猜对了");
return 0;
}