选择结构中的关系运算

目录

目录

前言

一、选择结构中的关系运算

1.关系运算符及其优先级

2.关系表达式

二、选择结构中的逻辑运算

1.逻辑运算及其优先级

2.逻辑表达式

三、C语言中的选择结构语句

1.if语句

①if语句的三种形式

②if语句——单分支结构

2.if语句——双分支结构

3.if语句的嵌套

4.switch语句


前言

九月四、五号笔记

一、选择结构中的关系运算

1.关系运算符及其优先级

关系运算符是用来对两个数值进行比较的比较运算符。

C语言提供6种运算符:

>(大于)               >=(大于或等于)

<(小于)             <=(小于或等于)

==(等于)           !=(不等于)

算数运算符        高

关系运算符        ↑

赋值运算符       

2.关系表达式

用关系运算符将两个表达式连接起来的式子。

关系表达式的值是一个逻辑值,即“真”或“假”。

在C的关系运算中,以“1”代表“真”,以“0”代表“假”。

若变量a=3,b=2,c=1,则:

表达式a>b的值为“真”,表达式的值为1.

表达式a>b==c的值为“真”(因为a>b的值为1),表达式的值为1。

表达式b+c<a的值为“假”,表达式的值为0。

表达式a=b>c的值为1(b>c的值为1,赋给a)。

表达式a==b>c的值为0(b>c的值为1,不等于a)。

注意:不能将关系运算符“==”误写成赋值运算符“=”。

二、选择结构中的逻辑运算

1.逻辑运算及其优先级

C语言提供了3种逻辑运算符:

运算符含义举例                       说明
&&逻辑与a&&b如果a和b都为真,则结果为真,否则为假
∣∣逻辑或a∣∣b如果a和b中有一个或一个以上为真,则结果为真,两个都为假时,结果为假
!逻辑非

!a

如果a为真,则!a为假,如果a为假,则!a为真

 逻辑运算符的优先次序:

由低到高依次为:∣∣→&&→!

关系、算数、逻辑和赋值运算符的优先级:

       !                                               (高)

算术运算符

关系运算符                                          ↑

&&和∣∣

赋值运算符                                     (低)

2.逻辑表达式

①用逻辑运算符将关系表达式或逻辑量连接起来的式子。

x>1&&x<10

a+b>c&&a+c>b&&b+c>a

age>=70∣∣age<=12

1&&0     !0       !1

!4          4&&5      'c'∣∣'d'         

数值0的逻辑值为假,非0的数,逻辑值为真

 ②逻辑表达式的值是一个逻辑值,即“真”或“假”,以“1”代表“真”,以“0”代表“假”。

③在对逻辑表达式的求解中,并不是所有的逻辑运算符都被执行。

a&&b&&c,只有a为真,才继续右面的运算。

a∣∣b∣∣c,只有a为假,才继续右面的运算。

三、C语言中的选择结构语句

C语言中,选择结构语句可分为if语句和switch语句

1.if语句

①if语句的三种形式

-if语句          单分支结构

-if...else语句          双分支结构

-if...else if...else语句      多分支结构

②if语句——单分支结构

例:如何判断一个数为正数?

如果一个数大于0,那么这个数就是正数。

if       a         >0          a是正数

if(a>0)      a是正数

if(表达式)    {语句块}

-语法格式

if(表达式)

{

语句块

}

-如果表达式的值为真,则执行语句块。

-在程序设计中处理选择问题的关键在于进行条件判断,即如果满足某种条件,就进行相应的处理。

 

-如何判断一个数为正数?

#include <stdio.h>
int main()
{
	int a;
	scanf_s("%d", &a);
	if (a > 0)
	{
		printf("%d是正数.\n", a);
	}
}

 

2.if语句——双分支结构

-语法格式

if(表达式)

{

          语句1

}

else

{

          语句2

}

if...else if...else语句——多分支结构

用于对多个条件进行判断,从而进行多种不同的处理。

-语法格式

if(表达式1)   {语句块1}

else  if(表达式2){语句块2}

else  if(表达式3 ){语句块3}

······

else  if(表达式n){语句块n}

else    {语句块m}

举例:字符类型判断

从键盘输入任意一个字符,判断该字符是英文字母(不区分大、小写)、数字字符还是其它字符,并分别输出相应的信息。

若输入字母,则屏幕显示:It is an English character.

若输入数字,则屏幕显示:It is a digit character.

若输入其它字符,则屏幕显示:It is other character.

英文字母的判断条件  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_s("%c1", &c,sizeof(int));
		if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')
			printf("It is an 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;
}

3.if语句的嵌套

临近原则:else和if成对出现,并且总是与最近的未配对的if配对。

建议:在if后面使用{}将要执行的语句括起来,避免程序代码混乱。

-正确使用if语句的嵌套

例:有一函数

 

编写程序,要求输入一个x后,输出y值。

解法1:

#include<stdio.h>
int main()
{
	int x, y;
	printf("please input x:");
	scanf_s("%d", &x);
	if (x < 0)   y = -1;
	else if (x == 0)  y = 0;
	else y = 1;
		printf("x=%d,y=%d\n", x, y);
	return 0;
}

解法2:

#include<stdio.h>
int main()
{ 
int x,y;
printf("please input x:");
scanf_s("%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
}

4.switch语句

-switch语句的一般形式

switch表达式)     整数、字符、枚举类型

{

case 常量表达式1:语句块1;break

case 常量表达式2:语句块2;break

······

case 常量表达式n:语句块n;break

default:语句块n+1

}

-执行流程:

  1. 首先计算表达式的值;
  2. 与各个case后的常量表达式的值进行比较,当表达式的值于某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。
  3. 如果表达式的值与所有case后的常量表达式均不相同,则执行default后的语句。
    #include<stdio.h>
    int main()
    {
    	int a;
    	printf("Input integer number:");
    	scanf_s("%d", &a);
    	switch (a)
    	{
    	case 1:printf("Monday\n"); break;
    	case 2:printf("Tuesday\n"); break;
    	case 3:printf("Wednesday\n"); break;
    	case 4:printf("Thursday\n"); break;
    	case 5:printf("Friday\n"); break;
    	case 6:printf("Saturday\n"); break;
    	case 7:printf("Sunday\n"); break;
    	default:printf("error\n");
    	}
    	return 0;
    
    }
    

在使用switch语句时应注意以下几点:

①表达式的值为整数、字符、枚举类型。

②常量表达式的值必须互不相同,否则会出现分支现象。

③case后面的常量表达式只起标号作用,而不起条件判断作用,即“只是开始执行处的入口标号”。一般情况下需用break语句跳出switch语句。

④语句块可以是一条语句,或复合语句,可以不用花括号{}。

⑤各个case和default出现的先后次序,并不影响执行结果,习惯上将default子句放在switch的末尾。

⑥多个case标号可共用一组执行语句。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值