解密C语言选择结构:掌握条件语句与分支逻辑的利器

这篇具有很好参考价值的文章主要介绍了解密C语言选择结构:掌握条件语句与分支逻辑的利器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

解密C语言选择结构:掌握条件语句与分支逻辑的利器

✨✨ 欢迎大家来到贝蒂大讲堂✨✨

🎈🎈养成好习惯,先赞后看哦~🎈🎈

所属专栏:C语言学习
贝蒂的主页:Betty‘s blog

引言

C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构。为什么有着三种结构呢,大家其实可以想象一下,生活中的绝大数事情都可以抽象着三种结构,而我们今天要给大家介绍的就是三大结构之一——选择结构

选择结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。它的流程图大致如下:

解密C语言选择结构:掌握条件语句与分支逻辑的利器

1. 逻辑运算符

在讲解什么是选择结构前,我们要先了解一些C语言常见的逻辑运算符。

1.1 逻辑取反运算符

逻辑取反运算符的形式特别简单,只需要在需要进行取反操作的变量前+!:

!(变量名)

假设有变量a,它的取反规则如下:

a !a

1.2 与运算符

在C语言中,并不支持数学上的且,而是由一个运算符&&代替的。比如说数学上的0<x<10写成C语言的形式就是x>0&&x<10。

假设有两个变量a,b,与运算符的运算规则如下:

a b a&&b

1.3 或运算符

在C语言中,或者也有专门的运算符表示——||

假设有两个变量a,b,或运算符的运算规则如下:

a b a||b

2. if......else语句

2.1 if语句

if语句是最简单选择结构语法之一,他的语法结构如下:

if ( 表达式 )
语句

表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏。

C语言特别规定:非零为真,零为假。

例⼦:输⼊⼀个整数,判断是否为奇数,如果是奇数打印是奇数

#include<stdio.h>
int main()
{
	int num = 0;
	scanf("%d", &num);
	if (num % 2 == 1)
		printf("%d 是奇数\n", num);
	return 0;
}
  • 首先输入一个值(num),然后进入if语句判断,如果num%2等于1,条件就为真,就会打印;反之,条件为假,就不会进入打印。

  • 特别注意:C语言中判断是否相等的运算符是==,=是赋值符号。

2.2 else

我们继续以上面例子为列,如果⼀个数不是奇数,那就是偶数了,如果任意⼀个整数,我们要清楚的判断是奇数还是偶数怎么表
⽰呢?
这⾥就需要 if...else... 语句了,语法形式如下:

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

所以上面的例子可以改写成如下代码:

#include<stdio.h>
int main()
{
	int num = 0;
	scanf("%d", &num);
	if (num % 2 == 1)
		printf("%d 是奇数\n", num);
	else
		printf("%d 是偶数\n", num);
	return 0;
}
  • 默认在 if 和 else 语句中默认都只控制⼀条语句

2.3 多个if else的使用

if else 语句也可以多个同时使用,构成多个分支,形式如下:

if(判断条件1){
语句块1
} else if(判断条件2){
语句块2
}else if(判断条件3){
语句块3
}else if(判断条件m){
语句块m
}else{
语句块n
}

意思是,从上到下依次检测判断条件,当某个判断条件成立时,则执行其对应的语句块,然后跳到整个 if else 语句之外继续执行其他代码。如果所有判断条件都不成立,则执行语句块n,然后继续执行后续代码。

也就是说,一旦遇到能够成立的判断条件,则不再执行其他的语句块,所以最终只能有一个语句块被执行。

我们以下面这段代码举个例子:

#include<stdio.h>

int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age > 0 && age < 18) {
		printf("少年\n");
	}
	else if (age >= 18 && age < 30) {
		printf("青年\n");
	}
	else if (age >= 30 && age < 45) {
		printf("壮年\n");
	}
	else if (age >= 45 && age < 55) {
		printf("中年\n");
	}
	else if (age >= 55 && age < 75) {
		printf("老年\n");
	}
	else {
		printf("老寿星\n");
	}
	return 0;
}

假设我们输入的是40,输出:

解密C语言选择结构:掌握条件语句与分支逻辑的利器

2.4 if else的嵌套

if else也能嵌套使用,也就是说if执行的语句中也可以包含if else语句。我们用判断三角形来具体说明这个问题:

#include <stdio.h>
int main()
{
	int a, b, c;
	while(scanf("%d%d%d", &a, &b, &c)==3)
	{
		if (a + b > c && a + c > b && b + c > a) {
			if (a == b && b == c) {
				printf("是一个等边三角形");
			}
			else if (a == b || a == c || b == c) {
				printf("是一个等腰三角形");
			}
			else if (a * a + b * b == c * c || a * a + c * c == b * b || b * b + c * c == a * a) {
				printf("是一个直角三角形");
			}
			else {
				printf("是一个普通三角形");
			}
		}
		else {
			printf("由%d,%d,%d三边组成的不是三角形", a, b, c);
		}
	}
	return 0;
}

解密C语言选择结构:掌握条件语句与分支逻辑的利器

2.5 悬空的else

在书写if....else语句时最好每一条语句后面都加上大括号

至于为什么,我们可以以下面这段代码举例

#include<stdio.h>
int main()
{
	int a = 0;
	int b = 2;
	if (a == 1)
		if (b == 2)
			printf("hehe\n");
    else
		printf("haha\n");


	return 0;
}//输出什么???

输出结果:

解密C语言选择结构:掌握条件语句与分支逻辑的利器

为什么会什么结果都没有输出呢?

这就是悬空 else 的问题,如果有多个 if 和 else ,可以记住这样⼀条规则, else 总是跟最接近的 if 匹配。最下面的else其实是与if(b==2)这条语句配对的,而不是与if(a==1)配对,当a等于0,自然不会进入任何语句。

3. switch语句

在我们学习多个lf else语句时候就会会发现,如果条件多的话,整个选择结构就会变得很冗杂,所以C语言为了解决这个问题引入了switch,switch 是另外一种选择结构的语句,用来代替简单的、拥有多个分支的 if else 语句。

比如说下面这段代码就会显得十分冗余

int main()
{
	int day = 0;
	scanf("%d", day);
	if(day == 1)
		printf("星期一\n");
	else if(day == 2)
		printf("星期二\n");
	else if (day == 3)
		printf("星期三\n");
	else if (day == 4)
		printf("星期四\n");
	else if (day == 5)
		printf("星期五\n");
	else if (day == 6)
		printf("星期六\n");
	else
		printf("星期天\n");
	return 0;
}

3.1 switch的基本规则

switch的语法如下:

switch (expression) {
case value1: statement
case value2: statement
default: statement
}

switch语句必须遵循下面的规则:

  1. switch语句中的括号是一个常量表达式,必须是一个整型或枚举类型。

  2. 在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。

3.2 break的重要性

学习完switch的语法之后,然后我们可以将最开始的例子改造

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;
}

但是当我们一运行代码就会发现问题:

解密C语言选择结构:掌握条件语句与分支逻辑的利器

为什么输入1反而后续的结果都输出了呢?

原因是 switch 语句也是分⽀效果的,只有在 switch 语句中使⽤ break 才能在跳出 switch 语句,如果某⼀个 case 语句的后边没有 break 语句,代码会继续玩下执⾏,有可能执⾏其他 case语句中的代码,直到遇到 break 语句或者 switch 语句结束。

所以在 switch 语句中 break 语句是⾮常重要的,能实现真正的分⽀效果。

当然, break 也不是每个 case 语句都得有,这就得根据实际情况来看了。

改造代码后;

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;
}

3.3 default的使用

在使⽤ switch 语句的时候,我们经常可能遇到⼀种情况,⽐如 switch 后的表达式中的值⽆法匹配代码中的 case 语句的时候,这时候要不就不做处理,要不就得在 switch 语句中加⼊default ⼦句。

其语法如下:

switch (expression) {
case value1: statement
case value2: statement
default: statement
}

  • switch 后边的 expression 的结果不是 value1 ,也不是 value2 的时候,就会执⾏default ⼦句。

就⽐如前⾯做的打印星期的练习,如果 day 的输⼊不是1~7的值,如果我们要提⽰:输⼊错误,则可以这样完成代码:

#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("输入错误\n");
		break;
	}
	return 0;
}
  • 在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要你的顺序是满⾜实际需求的就可以。不过我们通常是把 default ⼦句放在最后处理的。

4. 综合练习

4.1 题目一

输入三个整数x,y,z,请把这三个数由小到大输出。

#include <stdio.h>
int main()
{
    int x, y, z, t;
    printf("请输入三个数字:\n");
    scanf("%d%d%d", &x, &y, &z);
    if (x > y) 
    { /*交换x,y的值*/
        t = x; x = y; y = t;
    }
    if (x > z) 
    { /*交换x,z的值*/
        t = z; z = x; x = t;
    }
    if (y > z) 
    { /*交换z,y的值*/
        t = y; y = z; z = t;
    }
    printf("从小到大排序: %d %d %d\n", x, y, z);
    return 0;
}

解密C语言选择结构:掌握条件语句与分支逻辑的利器

4.2 题目二

输入某年某月某日,判断这一天是这一年的第几天?

#include <stdio.h>
int main()
{
    int day, month, year, sum, leap;
    printf("请输入年、月、日,格式为:年,月,日(2015,12,10)\n");
    scanf("%d,%d,%d", &year, &month, &day);  // 格式为:2015,12,10
    switch (month) // 先计算某月以前月份的总天数
    {
    case 1:
        sum = 0; 
        break;
    case 2:
        sum = 31; 
        break;
    case 3:
        sum = 59; 
        break;
    case 4:
        sum = 90;
        break;
    case 5:
        sum = 120;
        break;
    case 6:
        sum = 151;
        break;
    case 7:
        sum = 181; 
        break;
    case 8:
        sum = 212; 
        break;
    case 9:
        sum = 243;
        break;
    case 10:
        sum = 273; 
        break;
    case 11:
        sum = 304; 
        break;
    case 12:
        sum = 334; 
        break;
    default:
        printf("输入错误\n"); 
        break;
    }
    sum = sum + day; // 再加上某天的天数
    if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {// 判断是不是闰年
        leap = 1;
    }
    else {
        leap = 0;
    }
    if (leap == 1 && month > 2) 
    { // *如果是闰年且月份大于2,总天数应该加一天
        sum++;
    }
    printf("这是这一年的第 %d 天。", sum);
    printf("\n");
    return 0;
}

解密C语言选择结构:掌握条件语句与分支逻辑的利器文章来源地址https://www.toymoban.com/news/detail-837041.html

到了这里,关于解密C语言选择结构:掌握条件语句与分支逻辑的利器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C语言】选择语句(分支语句)

    ㊙️小明博客主页:➡️ 敲键盘的小明 ㊙️ ✅关注小明了解更多知识☝️ 提示:本篇文章为C语言选择语句的个人总结,内容如若有误,请及时联系我更正。 转载请注明原创,谢谢。 提示:以下是本篇文章正文内容:   假设你在水果摊购买一斤的水果,摊主会根据你购

    2024年02月09日
    浏览(55)
  • 一文带你掌握C语言的分支结构

    在本篇博客文章中,我们将深入探讨C语言中的if语句及其相关用法。if语句是一种用于条件判断的分支语句,它允许我们根据条件的真假来执行不同的代码块。 if语句的基本语法如下所示: 在这个语法结构中,条件是一个布尔表达式,如果条件的值为真(非零),则执行if语

    2024年02月05日
    浏览(54)
  • 【精通C语言】:分支结构if语句的灵活运用

    🎥 屿小夏 : 个人主页 🔥个人专栏 : C语言详解 🌄 莫道桑榆晚,为霞尚满天! C语言中的控制语句是程序设计中不可或缺的重要组成部分。从简单的if语句到复杂的多分支结构,掌握这些语句对于编写高效、灵活的程序至关重要。本文将深入探讨C语言中控制语句的各种形

    2024年01月23日
    浏览(34)
  • linux 条件语句和逻辑判断

    目录 一、条件判断 二、逻辑判断 三、if和case 四、七个实验   一、条件判断 1.test测试 test [ 条件表达式 ]        -e:测试目录是否存在        -d:测试是否为目录      -f:是否为文件   -r:当前用户是否有读写权限 -w:当前用户是否有写权限 -x:当前用户是否有执行权限

    2024年02月06日
    浏览(42)
  • Verilog中的 条件语句\多路分支语句\循环语句

    一、背景 由于初学Verilog,故写篇笔记记录Verilog中的 if-else 、 case-endcase 、 for 、 while 、 repeat 、 forever 语法,以及例子。 二、if-else 定个标准,每个 if-else 的出现都要有 begin-end 语句。 2.1 标准结构 条件语句标准使用结构: 2.2 例子 二输入选择器: 三、case-endcase case 语句是一

    2024年02月11日
    浏览(48)
  • Scala条件分支语句if用法详细介绍

    在Scala中,控制结构语句包括条件分支语句和循环语句。其中,条件分支语句有if语句、if…else 语句、if…else if…else 语句以及 if…else 嵌套语句;条件分支语句的用法介绍如下: 1.if格式的语法格式 2.if…else 语句的语法格式如下: 3.if…else if…else 语句的语法格式如下: 4.if…

    2024年02月13日
    浏览(53)
  • C#学习笔记--逻辑语句(分支和循环)

    条件分支语句 条件分支语句可以让顺序执行的代码逻辑产生分支,满足对应条件地执行对应代码逻辑。 IF语句 if语句的小练习--分辨奇偶数字 语句块的知识 {}括起来的逻辑语句是一个代码块,注意变量在代码块中的生命周期 Switch 语句 当判断条件过多时候,使用if elseif 来进

    2024年02月08日
    浏览(45)
  • 【JAVASE】精密逻辑控制过程(分支和循环语句)

    ✅作者简介:大家好,我是橘橙黄又青,一个想要与大家共同进步的男人😉😉 🍎个人主页: 橘橙黄又青-CSDN博客 目标: 1. Java 中程序的逻辑控制语句 2. Java 中的输入输出方式 3. 完成猜数字游戏 废话不多讲,我们直接开始。 顺序结构 比较简单 按照代码书写的顺序一行一行

    2024年04月09日
    浏览(51)
  • FPGA中的条件选择语句——case

    FPGA中的条件选择语句——case 在FPGA设计中,条件选择语句是非常重要的语法结构。其中一种形式是case语句。case语句用于在多种条件之间进行选择,是实现组合逻辑的基本构件之一。本文将详细讲述FPGA中的case语句。 case语句的格式如下所示: 其中,expression是一个变量或表达

    2024年02月04日
    浏览(47)
  • 软件测试 白盒测试用例设计方法动态 逻辑覆盖(语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖)基本路径测试法

    白盒设计方法分为静态和动态。 静态的白盒测试方法有桌面检查、代码审查、代码走查和代码扫描工具。 动态的白盒测试方法有逻辑覆盖法和基本路径测试法。 2.1 逻辑覆盖 逻辑覆盖法有语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖和路径覆盖。 例1 将上

    2024年02月02日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包