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语句

switch语句


C语言是一门结构化的程序设计语言。

有三类结构:
1.顺序结构
2.选择结构---分支/选择语句
3.循环结构---循环语句

什么是语句?

C语言中由一个分号 ; 隔开的就是一条语句。?比如:

int a=0;
;//空语句

分支语句(选择结构)

if? ?switch

如果你好好学习,

校招时拿一个好offer,迎娶白富美。

如果你不学习,毕业等于失业,工地搬砖。

这就是选择!

if语句

那if语句的语法结构是怎么样的呢?

结构一:

if(表达式)
? ? 语句;

结构二

if(表达式)
? ? 语句1;
else
? ? 语句2;

结构三

多分支 ? ?

if(表达式1) ? ?

? ? 语句1;

else if(表达式2) ? ?

? ? 语句2;

else ? ?

? ? 语句3;

演示代码

#include<stdio.h>

int main()
{
	//写法一:
	/*int age = 0;
	scanf("%d", &age);
	if (age < 18)
		printf("未成年\n");
	else if (age >= 18 && age < 28)
		printf("青年\n");
	else if (age >= 28 && age < 50)
		printf("中年\n");
	else if (age >= 50 && age < 90)
		printf("老年\n");
	else
		printf("老不死\n");*/
	//
	//写法二:
	/*int age = 0;
	scanf("%d", &age);
	if (age < 18)
		printf("未成年\n");
	else
	{
		if (age >= 18 && age < 28)
			printf("青年\n");
		else if (age >= 28 && age < 50)
			printf("中年\n");
		else if (age >= 50 && age < 90)
			printf("老年\n");
		else
			printf("老不死\n");
	}*/
    
    
	//要执行多条语句,应该使用代码块{}
	/*int age = 0;
	scanf("%d", &age);
	if (age < 18)
	{
		printf("未成年\n");
		printf("不支持谈恋爱\n");
	}
	else
		printf("成年\n");*/
	

	//易错1
	/*int a = 0;
	int b = 2;
	if (a == 1)
		if (b == 2)
			printf("hehe\n");
	else
		printf("haha\n");*///不打印  因为else与第二个if匹配,无法进入第一个if
    //
	//改正1
	/*int a = 0;
	int b = 2;
	if (a == 1)
	{
		if (b == 2)
			printf("hehe\n");
	}
	else
		printf("haha\n"); *///haha
	

	//易错2
	/*int num = 4;
	if (num = 5)           //=为赋值
        printf("呵呵\n");*///呵呵
	//改正2
	//int num = 4;
	//if (5 == num)        //==为判断  反着写错写成 = 将无法运行 
	//	printf("呵呵\n");//不打印

	return 0;
}

?switch语句

?switch语句也是一种分支语句。

常常用于多分支的情况。

比如:

输入1,输出星期一

输入2,输出星期二

输入3,输出星期三

输入4,输出星期四

输入5,输出星期五

输入6,输出星期六

输入7,输出星期天

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)               //switch(整型表达式)
	{
	case 1:                    //case 整形常量表达式:
		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("输入错误\n");
		break;
    }
	return 0;
}

有时候我们的需求变了:

1. 输入1-5输出的是“weekday”

2. 输入6-7输出“weekend”

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)              
	{
    case 1:           //中间可加其他语句 不能出现continue
	case 2:           //如:
	case 3:           //case 1:
	case 4:           //    if()
	case 5:           //        printf();
		printf("weekday\n");
		break;
	case 6:
	case 7:
		printf("weekend\n");
		break;
	default:
		printf("输入错误\n");
		break;*/
    }
    
	return 0;
}

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

default子句

如果表达的值与所有的case标签的值都不匹配怎么办?

其实也没什么,结构就是所有的语句都被跳过而已。

程序并不会终止,也不会报错,因为这种情况在C中并不认为适合错误。

但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢?

你可以在语句列表中增加一条default子句,把下面的标签

default:

写在任何一个case标签可以出现的位置。

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

所以,每个switch语句中只能出现一条default子句。

但是它可以出现在语句列表的任何位置,而且语句流会像贯穿一个case标签一样贯穿default子句。

编程好习惯

1.在最后一个 case 语句的后面加上一条 break语句。 (之所以这么写是可以避免出现在以前的最后一个 case 语句后面忘了添加 break语句。)

2.在每个 switch 语句中都放一条default子句是个好习惯,甚至可以在后边再加一个 break 。

练习

#include<stdio.h>

int main()
{
    int n = 1;
    int m = 2;
    switch (n)
    {
    case 1:
        m++;
    case 2:
        n++;
    case 3:
        switch (n)
        {                  //switch允许嵌套使用
        case 1:
            n++;
        case 2:
            m++;
            n++;
            break;
        }
    case 4:
        m++;
        break;
    default:
        break;
    }
    printf("n = %d, m = %d\n", m, n);// n = 3, m = 5
    return 0;
}
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-13 11:45:37  更:2021-08-13 11:48:43 
 
开发: 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年12日历 -2024/12/26 16:46:45-

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