IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言-选择结构 -> 正文阅读

[C++知识库]C语言-选择结构

目录

选择结构

一、if-else语句

1.单选择

?2.双选择

3.多选择

二.switch语句


选择结构

选择结构用于判断给定的条件,根据判断的结果判断某些条件,根据判断的结果来控制程序的流程


一、if-else语句

1.单选择

单选择通过if语句就可以实现,if语句的语法及执行流程如下:

if(表达式)
{
     代码块(表达式返回值为真时执行)
}

当程序运行到if语句时,会由表达式进行判定,诺表达式的返回值为真,则进入代码块执行语句,为假便跳过代码块继续执行。(当代码块语句仅有一句时,可以省略大括号。)

举一个简单的例子

例:判断10是否为3的倍数


int main()
{
	int i = 10;

		if (i % 3 == 0) //表达式结果为假 
			printf("是");//代码块内 未执行
	return 0;
}

?2.双选择

双选择通过if-else语句实现,if-else语句的语法及执行流程如下:

(else的匹配:else是和它相距的最近的if匹配的)

if(表达式)
{
   语句一(表达式返回值为真时执行)
}
else
{
   语句二(表达式返回值为假时执行)
}

?

当程序运行到if语句时,会由表达式进行判定,表达式的返回值为真,则执行语句1,为假便块执行语句2。

举一个简单的例子

例:判断学生分数及格?

#include<stdio.h>
int main()
{
	int i = 0;
	scanf("%d", &i);

	if (i >= 60)
		printf("及格");
	else
		printf("不及格");
	return 0;
}

3.多选择

通过else if语句实现的多选择,else if语句的语法及执行流程如下:

if(表达式1)
{
   语句1 (表达式1返回值为真时执行)
}
else if(表达式2)
{
   语句2 (表达式返回值为真时执行)
}
else if(表达式3)
{ 
    语句3(表达式返回值为真时执行)
}

else 
{
   代码块(以上表达式均为假时执行)
}

?

??当程序运行到if语句时,会由表达式进行判定,表达式1的返回值为真,则进入if下的代码块执行语句1,为假便进入表达式2。当然if-else可以实现的分支不止这四种,通过增加else if?语句的数量便可以实现更多的选择。

举一个简单的例子

例:年龄分段

#include <stdio.h>
int main()
{
    int age = 0;
    scanf("%d", &age);
    if (age < 18)
    {
        printf("少年\n");
    }
    else if (age >= 18 && age < 30)
    {
        printf("青年\n");
    }
    else if (age >= 30 && age < 50)
    {
            printf("中年\n");
    }
    else if (age >= 50 && age < 80)
    {
        printf("老年\n");
    }
    else
    {
        printf("老寿星\n");
    }
    return 0;
}

二.switch语句

switch语句也是一种分支语句。 常常用于多分支的情况。else if 语句也能实现多分支情况,但在某些情况下使用else if来实现,会使代码过于复杂。

比如:

输入1,输出星期一

输入2,输出星期二

输入3,输出星期三

输入4,输出星期四

输入5,输出星期五

输入6,输出星期六

输入7,输出星期日

如果使用else if?

#include<stdio.h>
int main()
{
	int day = 0;
	scanf("%d", &day);

	if (1 == day)
		printf("星期一");
	else if (2 == day)
		printf("星期二");
	else if (3 == day)
		printf("星期三");
	else if (4 == day)
		printf("星期四");
	else if (5 == day)
		printf("星期五");
	else if (6 == day)
		printf("星期六");
	else
		printf("星期日");
	return 0;
}

?那么这个代码便会太过复杂,而使用switch就会很多

switch语句的语法及执行流程如下:

switch(整型表达式)
{
    //在一个 switch 中可以有任意数量的 case 语句。
    case 整形常量表达式:
    语句;
}

case? 是一个入口,按照输入整型表达式的值进入,后按照顺序依次运行。

单使用switch语句是无法实现分支的,需要搭配break使用才能实现真正的分支。

举一个例子:

#include <stdio.h>
int main()
{
    int day = 0;
    scanf("%d", &day);
    switch (day)
    {
    case 1:
        printf("星期一\n");
    case 2:
        printf("星期二\n");
    case 3:
        printf("星期三\n");
    case 4:
        printf("星期四\n");
    case 5:
        printf("星期五\n");
    case 6:
        printf("星期六\n");
    case 7:
        printf("星期天\n");
    }
    return 0;
}

输入值分别为2 4时,输出结果如下:

?与想要实现的效果相差甚远,而搭配break使用就能解决这个问题。

#include <stdio.h>
int main()
{
    int day = 0;
    scanf("%d", &day);
    switch (day)
    {
    case 1:
        printf("星期一\n");
        break;
    case 2:
        printf("星期二\n");
        break;
    case 3:
        printf("星期三\n");
        break;
    case 4:
        printf("星期四\n");
        break;
    case 5:
        printf("星期五\n");
        break;
    case 6:
        printf("星期六\n");
        break;
    case 7:
        printf("星期天\n");
        break;
    }
    return 0;
}

?

?break语句 的实际效果是把语句列表划分为不同的分支部分。

?switch除了搭配break语句使用,往往也会搭配 default语句

如果表达的值与所有的case标签的值都不匹配时,所有的语句都会被跳过。程序并不会终止,也不会报错,因为这种情况在C中并不认为是个错误。

诺并不想忽略不匹配所有标签的表达式的值时,可以在语句列表中增加一条default子句。

switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。

?例如:

#include <stdio.h>
int main()
{
    int day = 0;
    scanf("%d", &day);
    switch (day)
    {
    case 1:
        printf("星期一\n");
        break;
    case 2:
        printf("星期二\n");
        break;
    case 3:
        printf("星期三\n");
        break;
    case 4:
        printf("星期四\n");
        break;
    case 5:
        printf("星期五\n");
        break;
    case 6:
        printf("星期六\n");
        break;
    case 7:
        printf("星期天\n");
        break;
    default:
        printf("输入错误");
    }
    return 0;
}

?switch?语句可以有一个可选的?default?case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的?break?语句不是必需的。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-17 11:19:45  更:2022-01-17 11:20:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:32:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码