Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【C语言】“分⽀与循环第一章:开启创新之门,探索无尽可能性的第一篇章“

【C语言】“分⽀与循环第一章:开启创新之门,探索无尽可能性的第一篇章“

作者头像
学习起来吧
发布于 2024-02-29 13:24:08
发布于 2024-02-29 13:24:08
26700
代码可运行
举报
文章被收录于专栏:学习C/++学习C/++
运行总次数:0
代码可运行

前言

C语言是一种结构化的程序设计语言,其中包含三种结构:顺序结构、选择结构和循环结构。要实现分支结构,可以使用ifswitch,而实现循环结构则可以使用forwhiledo while

一、if 语句

1.1 if

表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏代码示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if ( 表达式)
	  语句

在C语⾔中,0为假,⾮0表⽰真,也就是表达式的结果如果是0,则语句不执⾏,表达式的结果如果是不是0,则语句执⾏。 例⼦:输⼊⼀个整数,判断是否为奇数,还是偶数?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>
int main()
{
	int num = 0;
	scanf("%d", &num);
	if (num % 2 == 1)
		printf("%d是奇数\n", num);
	return 0;
}

运算结果:

1.2 else

如果一个数不是奇数,那这个数就是偶数了嘛!那在C语言中又怎么表示呢?这里就需要 if...else... 语句了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if ( 表达式 )
语句1
else
	语句

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#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;
}

1.3 嵌套if 和 分⽀中包含多条语句

1.31 分⽀中包含多条语句

C语言中ifelse 语句中默认都只控制⼀条语句

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>
 int main()
 {
 	int age = 0;
 	scanf("%d", &age);
	 if(age >= 18)
 		printf("成年了\n");
	 	printf("可以谈恋爱了\n");
 	 return 0;
  }

你会发现输⼊的值不管是>=18 还是⼩于18,"可以交谈恋爱了"都会打印在屏幕上。如图:

这是因为if语句只能控制⼀条语句,就是 printf(“成年了\n”); if语句为真,则打印成年了,if语句为假,则不打印,对于printf(“可以谈恋爱了\n”); 是独⽴存在的,这里你把代码编在VS2022上他其实也会自动调整;

不管if语句的条件的真假,都会被执⾏。那如果我们要if语句同时控制2条语句,怎么办呢?那就要使⽤else 后也可以跟上⼤括号。如

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 #include <stdio.h>
 int main()
 {
 	int age = 0;
 	scanf("%d", &age);
	if(age >= 18) //if 后使⽤{} 控制多条语句这个块也叫:程序块,或者复合语句
 		{
 			printf("成年了\n");
 			printf("可以交⼥朋友了\n");
 		}
 	 else //else 后使⽤{}控制多条语句这个块也叫:程序块,或者复合语句
		{
	 		printf("未成年\n");
 			printf("不可以早恋哦\n");
 		 }
 	 return 0;
 }

这样子用{}起来就可以不管if语句的条件的真假,都不会被执⾏。

1.32嵌套if

if else 语句中,else 可不以与另⼀个if 语句连⽤,然后构成多重判断,答案是可以的。 ⽐如:要求输⼊⼀个整数,判断输⼊的整数是0,还是正数或者负数。请看如下代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 #include <stdio.h>
 int main()
 {
	 int num = 0;
 	scanf("%d", &num);
 	if(num == 0)
	 	printf("输⼊的数字是0\n");
	else if(num > 0)
	 	printf("输⼊的数字是0\n"); //这⾥的if相当于嵌套在else语句中,形成了嵌套结构 
 	else
		printf( "输⼊的数字是负数\n");
 return 0

 //这⾥的if相当于嵌套在else语句中,形成了嵌套结构 如下展示:
 #include <stdio.h>
 int main()
 {
	 int num = 0;
 	scanf("%d", &num);
 	if(num == 0)
	 	printf("输⼊的数字是0\n");
	else 
	{
		if(num > 0)
	 	printf("输⼊的数字是0\n");  
 		else
		printf( "输⼊的数字是负数\n");
	}
 return 0

1.4悬空else问题

如果有多 ifelse,可以记住这样⼀条规则,else总是跟最接近的if匹配。 我们通过代码展示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#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;
 }

程序运行的结果是什么? 当你看到这段代码时,你可能会认为答案是"haha"对吧?因为代码中的逻辑是如果a不等于0,那么就执行else子句并打印"haha"。但是当你运行这段代码时,实际的输出却是什么都没有。那么事实真的是这样吗? 看结果:

但是当你去运⾏代码,输出的结果是:啥都不输出来。 哎这是为什么鸭?

这是悬空else的问题,如果有多个if匹配。上面的代码排版让if和else对齐,可以记住这样一条规则,else总是跟最接近else和第一个if语句对齐,让我们在语句不成立的时候自然想到执行else子句,打印else是和第一个if匹配的,当进行匹配的时候,这样后边的haha,但实际上if…else语句是嵌套在第一个if中的,else是和第二个if成立,嵌if和if语句中的,如果第一个if语句就不else就没机会执行了,最终什么都不打印。 但是我们可以通过程序块来解决:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#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;
 }

当然想让else和第⼀个if匹配,可以这样修改代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#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;
 }

只要在适当的位置添加括号,代码的逻辑就会更加清晰。因此,在编写代码时,请注意括号的使用,以提高代码的可读性。

二、switch语句

除了if语句,C语言还可以用switch语句来实现分支结构。switchswitch 语句是⼀种特殊形式的的elif…else 结构,⽤于判断条件有多个结果的情况。它把多重else改成更易⽤、可读性更好的形式。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
switch (expression)
 {
	 case value1: statement
 	 case value2: statement
  	 default: statement
 }

上⾯代码中,根据表达式expression 不同的值就执⾏相应的case分支。如果找不到对应的值,就执行default分支 注: • switch后的 expression 必须是整型表达式 • case 后的值,必须是整形常量表达式

2.1 if语句和switch语句的对⽐

练习:输⼊任意⼀个整数值,计算除3之后的余数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 #include <stdio.h>
 int main()
 {
 	int n = 0;
	scanf("%d", &n);
 	if(n%3 == 0)
 		printf("整除,余数为0\n");
	 else if(n%3 == 1)
	 	printf("余数是1\n");
 	else 
		printf("余数是2\n");
 return 0;
 }

改为switch语句:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>
int main()
{
	int n = 0;
	scanf("%d",&n);
	switch(n%3)
	{
	case 0:
		printf("整数,余数0\n");
		break;
	case:1
		printf("余数是1\n");
		break;
	case:2
		printf("余数是2\n");
		break;
	}
	return 0;
}

通过上述的代码中,我们要注意的点有: 1.case 和后边的数字之间必须有空格 2. 每⼀个case 语句中的代码执⾏完成后,需要加上 break ,才能跳出这个switch语句。

2.2 switch语句中的break

如果我们把前面代码的break去掉,又会发生什么情况呢?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>
 int main()
 {
 	int n = 0;
 	scanf("%d", &n);
 	switch(n%3)
 	{
	 case 0:
 		printf("整除,余数为0\n");  
	 case 1:
		printf("余数是1\n");       
 	 case 2:
 		printf("余数是2\n");       
	}
	 return 0
 }

输出:

分析:13 除以3余数是1,那为什么又多出一行“余数是2”呢? 原因是switch语句是按分支运行的,只有switch语句中使用break才能跳出switch语句,如果一个分支case语句后没有break语句,代码会继续走,不会停,又可能执行其他case语句中的代码,直到break语句结束。就如上面代码就执行了case 中的语句。

2.3 switch语句中的default

在使⽤switch语句的时候,使⽤比如switch 后表达式中的值⽆法匹 配代码中的case 语句的时候,这时候要不就不做处理,要不就得在 switch 语句中加⼊default ⼦句。(与 ifelse 相似)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
switch (expression) 
{
	 case value1: statement
	 case value2: statement
	 default: statement
 }

switch 后边的expression 的结果不是default ⼦句。如果以这样完成代码:value1 ,也不是value2 的时候,就会执⾏default ⼦句。

输⼊⼀个1~7的数字,打印对应的星期⼏ 例如: 输⼊:1 输出:星期⼀ 输⼊:2 输出:星期⼆ 输⼊:3 输出:星期三 输⼊:4 输出:星期四 输⼊:5 输出:星期五 输⼊:6 输出:星期六 输⼊:7 输出:星期天

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>
 int main()
 {
    int day = 0;
    scanf("%d", &day);
    switch(day)
    {
        case 1printf("星期⼀\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;
 }

如果改为要求: 1.输⼊1-5,输出的是“⼯作⽇”; 2.输⼊6-7,输出“休息⽇; 这时我们可以借助上面所谈到的switch没有break语句就会一直执行下去,因此:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>
 int main()
 {
 	int day = 0;
 	scanf("%d", &day);
 	switch(day)
 	{
 	case 1case 2:
    case 3:
    case 4:
    case 5:
  		printf("⼯作⽇\n");
 		break;
    case 6:
    case 7:
 		printf("休息⽇\n");
 	break;
 }
 return 0;

注:在switch语句中,casedefault的顺序问题是有规定的吗?default必须放在最后吗?实际上,在switch语句中,casedefault语句的顺序没有具体要求,只要满足实际需求即可。然而,通常我们会将default子句放在最后进行处理。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-12-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C语言循环与分支不会用?来看看!
while 和 for 这两种循环都是先判断,条件如果满⾜就进⼊循环,执⾏循环语句,如果不满⾜就跳 出循环; ⽽ d o while 循环则是先直接进⼊循环体,执⾏循环语句,然后再执⾏ 达式为真,就会进⾏下⼀次,表达式为假,则不再继续循环。
秋邱
2024/10/09
2150
C语言循环与分支不会用?来看看!
我与C语言二周目邂逅vlog——3.分⽀和循环
C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实 现这三种结构的,其实我们如果仔细分析,我们⽇常所⻅的事情都可以拆分为这三种结构或者这三种 结构的组合。 我们可以使⽤ if 、 switch 实现分⽀结构,使⽤ for 、 while 、 do while 实现循环结构。
hope kc
2024/09/23
3460
C语言之分支结构
在c语言中,0为假,非0表示真。表达式的结果如果是0,则语句不执行,表达式的结果如果不是0,则语句执行。(操作符上:https://blog.csdn.net/wait___wait/article/details/135242898)(操作符下:https://blog.csdn.net/wait___wait/article/details/135269329)
用户11328191
2024/10/23
1700
C语言之分支结构
【C语言基础篇】结构控制(上)顺序结构和选择结构
关于转向语句break、continue 、goto和return语句请参阅这篇文章
倔强的石头_
2024/12/06
4760
三篇文章让你彻底学会C语言中的分支和循环语句——分支语句
在我们正式开始学习分支语句之前,我们先来了解一下C语言中都有哪些语句,分支和循环语句又是属于其中哪一类的。
Crossoads
2024/10/21
1870
三篇文章让你彻底学会C语言中的分支和循环语句——分支语句
C语言—分支与循环(上)
表达式成立(为真),则语句执行。 表达式不成立(为假),则语句不执行。 在c语言中0为假,非0为真。 例如:输入一个整数,判断是否为偶数。
_孙同学
2024/10/21
1300
C语言—分支与循环(上)
详解C语言中的分支语句(下)
续接上回,我们讲到了三个表达式之间的比较。我们想要得到中间的那个表达式是否真的大于右边的表达式,并且小于左边的表达式。 详解C语言中的分支语句(上)
埋头编程
2024/10/16
1560
详解C语言中的分支语句(下)
【C语言】--分支和循环语句还没搞定吗?来看看这篇吧
目录 1.if语句 2.switch语句 3.while循环语句 4.for循环语句 5.do while循环语句 6.break和continue语句 7.goto语句
User_芊芊君子
2025/04/08
1260
【C语言】--分支和循环语句还没搞定吗?来看看这篇吧
C语言结构
风中的云彩
2024/11/07
1440
C语言结构
【c语言】分支语句
if语句是c语言最常见的条件判断语句,它可以根据表达式的真假来做出逻辑判断,实现“选择”。它的语法如下:
ephemerals__
2024/10/24
2170
【c语言】分支语句
C语言-分支与循环(1)-学习笔记
恭喜你发现了一篇超级实用的长文。如果你正在寻找具体的模块,可以先查看目录,找到自己需要的内容。在这里,你将会发现我们为你准备的各种有趣、有用的信息。快来一起探索吧!
LonlyMay
2024/10/21
1440
C语言-分支与循环(1)-学习笔记
C语言分支与循环基础知识详解
C语言是结构化的程序设计语言,这里的结构指的是顺序结构、选择结构、循环结构,C语言是能够实现这三种结构的,其实我们如果仔细分析,我们日常所见的事情都可以拆分为这三种结构或者这三种结构的组合。
fhvyxyci
2024/09/24
1970
C语言分支与循环基础知识详解
c语言从入门到实战——分支和循环
C语言是结构化的程序设计语言,这里的结构指的是顺序结构、选择结构、循环结构,C语言是能够实 现这三种结构的,其实我们如果仔细分析,我们日常所见的事情都可以拆分为这三种结构或者这三种结构的组合。
鲜于言悠
2024/03/20
2940
c语言从入门到实战——分支和循环
C语言初阶——分支语句(if,switch)
要学习分支语句和循环语句,首先我们要知道什么是语句。 在C语言中,由一个分号隔开的就是一条语句。 比如:
YIN_尹
2024/01/23
1980
C语言初阶——分支语句(if,switch)
轻松拿捏C语言——分支语句
选择语句(即分支语句)包含了if语句和switch语句,其允许程序在一组可选项中选择其中一条执行路径。
用户11162265
2024/06/14
2730
[C语言]分支循环语句
2. 循环执行语句: do while 语句、 while 语句、 for 语句;
IT编程爱好者
2023/04/12
8710
[C语言]分支循环语句
分支和循环(上)
在if else语句中,else可以与另一个if语句连用,构成多重判断。 第一种:
四念处茫茫
2025/01/31
1100
分支和循环(上)
分支和循环语句(1)
控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语言有九种控制语句,可分成以下三类:
waves浪游
2024/01/23
2190
分支和循环语句(1)
C语言分支和循环语句
我们可以使用if、switch实现分支结构,使用for、while、do while实现循环结构
P_M_P
2024/01/18
5060
C语言分支和循环语句
C语言中的分支与循环语句
从所周知,C语言是一种结构化的程序设计语言,其中的结构包括顺序结构、选择结构、循环结构。
HZzzzzLu
2024/11/26
1970
C语言中的分支与循环语句
相关推荐
C语言循环与分支不会用?来看看!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档