关系表达式
1.关系运算符的作用:用来对两个数值进行比较的比较运算符。
2.c语言提供的六种关系运算符:
>(大于) | >=(大于或等于) |
<(小于) | <=(小于或等于) |
==(等于) | !=(不等于) |
3.运算符的优先级:算数运算符>关系运算符>赋值运算符
4.关系表达式的值是一个逻辑值,即真或假
5.在c的关系运算中,1代表为真,0代表为假。
若变量a=3,b=2,c=1,则: 表达式a>b的值为1, 表达式a>b==c的值为真,即值为1 , 表达式b+c<a的值为假,即值为0, 表达式a=b>c的值为1(b>c的值为真,即值为1,把1赋值给a,) 表达式a==b>c的值为假,即值为0 |
注意:不能将关系运算符==误写成赋值运算符=。
逻辑表达式
1.逻辑表达式的意义:用逻辑运算符将关系表达式或逻辑量连接起来的式子。
2.c语言中的三种逻辑运算符
运算符 | 含义 | 举例 | 说明 |
&& | 逻辑与 | a&&b | a和b都为真,结果才为真 |
|| | 逻辑或 | a||b | a和b中只要有一个为真,结果就为真 |
! | 逻辑非 | !a | 若a为真,则!a为假。反之则!a为真。 |
3.逻辑运算符的优先级:||<&&<!
4.关系,算数,逻辑,赋值的优先级:!>算数>关系>&&>||>赋值运算符
5.举例:
若变量a=3,b=4,c=5,则:
a+b>c&&b==c的值为假,表达式的值为0
(根据运算符的优先级,先将a+b进行运算,然后将其值与c进行比较,同时将b==c进行比较,最后进行逻辑运算。)
6.在对逻辑表达式的求解中,并不是所有的逻辑运算符都被执行。
a||b+c&&b-c的值为真(因为a的值为1),不会进行后面的运算。
if语句的三种形式
一·if语句----单分支结构
1. 如果一个数大于0,,那么这个数就是正数
↓ ↓ ↓ ↓
if a >0 a为正数
if(a>0) a为正数
语法格式: if(表达式) {语句块}
2.如果表达式的值为真,则执行语句块。在程序设计中处理选择问题的关键在于进行条件判断,如果满足某种条件,就进行相应的处理。
↓
表达式→→→(假)→→输出
↓真
语句块→→输出
#include<stdio.h>
int main()
{
int a;
scanf("%d",&a);
if(a>0)
{
printf("%d是正数.\n",a);
}
}
二.if 语句------双分支结构
1.语法格式:
if(表达式)
{
语句块1
}
else
{
语句块2
}
表达式为真,则执行语句块1,否则执行语句块2.
double x,y;
double result;
printf("请输入被除数:");
scanf("%lf,&x);
printf("请输入除数:");
scanf("lf",&y);
result=x/y;
printf("两个数的商:%.2f\n",result);
if(y!=0)
{
result=x/y;
printf("两个数的商:%.2f\n",result);
}
eles
{
printf("除数为0!\n");
}
三.if语句----多分支结构
1.用于对多个条件进行判断,从而进行多种不同的处理。
2.语法格式:
if(表达式1) {语句块1}
else if(表达式2) {语句块2}
…………
else if(表达式n) {语句块n}
else {语句块m}
3.判断字符类型的条件
英文字母的判断条件:c>=‘a’&&c<=‘z’ || c>=‘A’&&c<=‘Z’ 表达式1
数字字符的判断条件:c>=‘0’&&c<=‘9’ 表达式2
include<stdio.h>
int main()
{
char c;
printf("input a character:");
scanf("%c",&c);
if(c>=‘a’ && c<=‘z’ || C>=‘A’ && c<=‘Z’)
printf("It is a English character.\n");
else if(c>=‘0’&& c<=‘9’)
printf("It is a digit character.\n");
else
printf("It is other character.\n");
return 0;
}
if语句的嵌套
1.遵守临近原则:else和if成对出现,并且总是 与最近的未配对的if配对
2.在if后面使用{}将要执行的语句括起来,避免程序代码混乱。
3.真确使用if语句的嵌套
eg:给出变量y,当x=o时,y的值为0;当x>o时,y的值为1;当x<0时,y的值为-1
if的单分支结构
int main()
{ intx,y;
printf("please input x:");
scanf("%d",&x);
if(x<0) y=-1;
if(X==0) y=0;
if(x>0) y=1;
printf("x=%d,y=%d\n",x,y);
return 0;
}
if的多分支结构
int main()
{ int x,y;
printf("please input x:");
scanf("%d",&x);
if(x<0) y=-1;
else if(x==O) y=0;
else y=1;
printf("x=%d,y=%d\n",x,y);
return 0;
}
嵌套在if语句中
int main()
{ int x,y;
printf("please input x:");
scanf("%d",&x);
if(x!=0)
if(x<0) y=-1;
else y=1;
else y=0;
printf("x=%d,y=%d\n",x,y);
return 0;
}
嵌套在else语句中
int main
{ int x,y;
printf("please input x:");
scanf("%d",&x);
if(x<0)
y=-1;
else
if(X==o) y=0;
else y=1;
printf("x=%d,y=%d\n",x,y);
return 0;
}
switch语句
1.switch 语句的作用:
switch语句是多分支条件判断语句ssw它能够根据表达式的值从多个分支中选择一个执行的分支。
2.switch语句的一般形式
switch(表达式) 表达式为整数,字符,枚举类型
{
case 常量表达式1:语句块1;break;
case 常量表达式2:语句块2;break;
…………
case 常量表达式n:语句块n;break;
default:语句块n+1
}
3.执行流程:
1)首先计算表达式的值
2)与各个case后的常量表达式的值比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不在进行判断,继续执行后面所有case后的语句。在每个case语句后加上break,则不会继续执行后面所有的case语句。
3)如果表达式的值与所有的case后的常量表达式均不相同,则执行default后的语句。
4.注意:
1)表达式的值为整数,字符,枚举类型。
2)常量表达式的值必须互不相同。
3)case后面的常量表达式只起标号的作用,而不起条件判断的作用。
4)语句块可以是一条语句,或复合句,可以不用花括号
5)多个case标号可以共用一组执行语句。