C语言——选择结构

C语言------选择结构

关系运算符及关系表达式

关系运算符

关系运算实际上是比较运算,C语言提供了六种关系运算符分别为:

这六种关系运算符的优先级:

(1) 种关系运算符(<,<=,>,>=)的优先级别相同,后 种也相同。前4高于后2种。例如,">"优先于"=="。而">"与"<"优先级相同。

(2) 关系运算符的优先级低于算术运算符。

(3) 关系运算符的优先级高于赋值运算符。

关系表达式

关系表达式的定义:

用关系运算符将两个表达式(可以是算术表达式或关系表达式、逻辑表达式、赋值表达式、字符表达式)连接起来的式子 称关系表达式。

例如:a > b,(a + b) > (c + d),'a' < 'b',等等。

逻辑运算符和逻辑表达式

逻辑运算符

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

(1) &&逻辑与,一假则假,同真才真;

(2) ||逻辑或,一真则真,同假才假;

(3) ! 逻辑非,!a若a为假则!a为真,反之为假;

逻辑运算符的优先级:

逻辑表达式

逻辑表达式的值是一个逻辑量"真"或"假"。C语言编译系统在表示逻辑运算结果时,以数值 代表"真",以 代表"假",但在判断一个量是否为"真"时,以代表"假",以非 代表"真",在C语言中用int来保存逻辑值。

在进行逻辑运算时要注意:

c 复制代码
int a = 1;
int b = 0;
b = (a < 0) && (++a);
printf("a = %d b = %d\n", a, b);

如果(a < 0)这个表达式为假时整个表达式九尾假,不会继续执行后面的语句,即逻辑与的短路特性,最后程序输出 1 1。

c 复制代码
int a = 1;
int b = 0;
b = (a > 0) || (++a);
printf("a = %d b = %d\n", a, b);

如果(a > 0)这个表达式为真则整个表达式为真,不会继续执行后面的语句,即逻辑或的短路特性,最后程序输出1 1。

选择语句

if语句

if语句总有三种形式:

1、if(表达式) 语句 ,用于处理一种情况的单分支结构;

例如:

c 复制代码
if(a > b)
	printf("a\n", a);

需要注意的是当if后只跟一条语句时可以不用加{}号,如果if后的语句为复合语句必须要加上{};

2、if( 表达式)语句1 else 语句2,其中的语句1和2可以是一条语句或者是多条语句,用于处理两种情况的双分支结构,常见例子如下:

输入两个数输出两个数中的最大值;

c 复制代码
#include <stdio.h>

int main()
{
	int a, b;
	printf("请输入两个数:\n");
	scanf("%d %d", &a, &b);
	
	if(a > b)//如果a大于b就输出a
	{
		printf("最大值为:%d\n", a);
	}
	else//否则就输出b
	{
		printf("最大值为:%d\n", b);
	}

	return 0;
}

3、if( 表达式 1) 语句1
else if( 表达式 2) 语旬2
else if( 表达式 3) 语句3
else if( 表达式 4) 语句4
.
.
.
else 语句n
,用于处理多种情况的多分支结构,常见例子如下:

输入三个数输出三个数中的最大值:

c 复制代码
#include <stdio.h>

int main()
{
	int num1, num2, num3, max;
	printf("输入三个数:\n");
	scanf("%d %d %d", &num1, &num2, &num3);

	if(num1 > num2)
	{
		max = num1;
	}
	else
	{
		max = num2;
	}

	if(max < num3)
	{
		max = num3;
	}

	printf("max = %d\n", max);

	return 0;
}

将分数转换为ABCDE等级制:

c 复制代码
#include <stdio.h>

int main(void)
{
	int score;
	printf("input your core:\n");
	scanf("%d", &score);

	if(score >= 0 && score <= 100)
	{
		if(score >= 90 && score <= 100)
		{
			printf("rank: A\n");
		}
		else if(score >= 80 && score <= 89)
		{
			printf("rank:B\n");
		}
		else if(score >= 70 && score <= 79)
		{
			printf("rank:C\n");
		}
		else if(score >= 60 && score <= 69)
		{
			printf("rank:D\n");
		}
		else 
		{
			printf("rank:E\n");
		}
	}
	else
	{
		printf("input error\n");
	}
	return 0;
}

上述代码可以直到if语句可以嵌套语句的,可以根据实际的需求去嵌套相应的if语句。

条件运算符

条件运算符要求有3个操作对象,称三目(元)运算符,它是C语言中唯一的一个三目运算符。条件表达式的一般形式为:

表达式 1? 表达式 2: 表达式3;

其实条件运算符相当于if else语句,条件运算符用法的例子如下:

输出两个数中的最大值:

c 复制代码
#include <stdio.h>

int main (void)
{
	int num1, num2;
	int ret;
	printf("input num1 and num2:\n");
	scanf("%d %d", &num1, &num2);

	ret = num1 > num2 ? num1 : num2;

	printf("num1和num2中最大值为:%d\n", ret);

	return 0;
}

如果num1大于num2就把num1赋值给ret否则就把num2赋值给ret;

switch case语句

switch 语句是处理多分支的选择,它的一般形式如下:

switch( 表达式)

{

case 常量表达式 1:

语句1;

break;

case 常量表达式 2:

语句2;

break;

.

.

.

case 常量表达式 n:

语句n;

break;

default :

语句n + 1;

}

switch语句是利用表达式的结果与下面case后的常量表达式的结果进行匹配,如果匹配成功就执行相应的语句直到遇到了break或者遇到了switch语句中的"}"右括号就结束,每一个case后都跟着一个break的原因是只让case匹配一次,还有需要注意的是default的位置不一定是最后,default的意思是缺省如果没有相应的case匹配就和缺省匹配;

switch case语句的用法例子:

输入分数等级输出相应的数据范围:

c 复制代码
#include <stdio.h>

int main(void)
{
	char grade;
	printf("input grade:\n");
	scanf("%c", &grade);

	switch(grade)
	{
	case 'A':
		printf("85 ~ 100\n");
		break;
	case 'B':
		printf("70 ~ 84\n");
		break;
	case 'C':
		printf("60 ~ 69\n");
		break;
	case 'D':
		printf("<60\n");
		break;
	default:
		printf("error\n");
		break;
	}

	return 0;
}

文章到此就结束啦!以后还会持续更新。

相关推荐
Wang's Blog7 小时前
Java 项目实战: 交友项目 - FastDFS:入门案例
java·开发语言·交友
apcipot_rain8 小时前
C++转Java日记(03)
java·开发语言·c++
布莱克6058 小时前
C++ 中 map 的 insert 与 emplace:key 已存在时会覆盖吗?
开发语言·数据结构·c++·算法·map
xys_6788 小时前
深挖C++:类和对象(中)
开发语言·c++
灿飞屋9 小时前
Rust 编程其实很简单
开发语言·rust
MOONICK10 小时前
QT元数据
开发语言·qt
D e re k ZH11 小时前
C++ 系统学习手记:从语法细节到工程实践
开发语言·数据结构·c++·算法
灿飞屋12 小时前
Kotlin与Java虚拟机三:控制流
android·java·开发语言·后端·python·kotlin·安卓
xiaoye-duck12 小时前
《C++ 项目:手写大模型接入 SDK》Ollama接口设计(上):初始化、全量响应实现和测试
开发语言·网络·c++·语言模型
Zwawa13 小时前
屏幕不止一种:OLED、LCD1602字符屏、TFT/IPS图形屏和串口屏怎么用,这与TTY和PTY又有什么关系
c语言·单片机·嵌入式