当前位置: 首页 > news >正文

分支语句和循环语句

什么是语句?

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

 printf("haha");
 1+2;

分支语句

if语句

if语句的语法结构:

if(表达式)
   语句;
   
if(表达式)
  语句1;
else
  语句2;
  
 //多分支    
if(表达式1)
  语句1;
else if(表达式2)
  语句2;
else
  语句3;

在C语言中如何表示真假?=> 0表示假,非0表示真。

示例:

#include <stdio.h>
 int main()
 {
	 if(表达式)
    {
       语句列表1}
	 else
    {
       语句列表2}
	 return 0;
 }

这里的一对 { } 就是一个代码块。
悬空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;
 }

改正:

//适当的使用{}可以使代码的逻辑更加清楚。
//代码风格很重要

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

代码演示

#include <stdio.h>
 int main()
 {
	 int coding = 0;
	 printf("你会去敲代码吗?(选择1 or 0):>");
	 scanf("%d", &coding);
	 if(coding == 1)
	 {
	    prinf("坚持,你会有好offer\n");
	 }
	 else
	 {
	    printf("放弃,回家卖红薯\n");
	 }
	 return 0;
}

多分支

#include <stdio.h>
 int main()
 {
	 int coding = 0;
	 printf("你会去敲代码吗?(选择1 or 0),如果家里很多房,选择 -1:>");
	 scanf("%d", &coding);
	 if(coding == 1)
	 {
	     prinf("坚持,你会有好offer\n");
	 }
	 else if(coding == 0)
	 {
	    printf("放弃,回家卖红薯\n");
	 }
	 else if(coding == -1)
	 {
	    printf("呵呵\n");
	 }
	 return 0;
 }

switch语句

switch语句也是一种分支语句。 常常用于多分支的情况。

switch(整型表达式)
{
     语句项;
}

而语句项是什么呢?

//是一些case语句:
//如下:
case 整形常量表达式:
   语句;

在switch语句中的break

       在switch语句中,我们没法直接实现分支,搭配break使用才能实现真正的分支。
示例代码:

#include <stdio.h>
 int main()
 {
	    int day = 0;
	    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

#include <stdio.h>
 //switch代码演示
int main()
{
	 int day = 0;
	 switch(day)
	 {
		 case 1case 2:
		 case 3:
		 case 4:
		 case 5:
			 printf("weekday\n");
			 break;
		 case 6:
		 case 7:
			 printf("weekend\n");
			 break;
	 }
	 return 0;
}

break语句的实际效果是把语句列表划分为不同的部分。
default子句
       如果表达的值域所有的case标签的值都不匹配怎么办? 其实也没什么 ----所有的语句都被跳过而已。 程序并不会终止,也不会报错,因为这种情况在C中并不认为适合错误。 但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢? 你可以在语句列表中增加一条default子句,把下面的标签 default: 写在任何一个case标签可以出现的位置。当 switch表达式的值并不匹配所有case标签的值时,这个default子句后面的语句就会执行。所以,每个switch语句中只能出现一条default子句。 但是它可以出现在语句列表的任何位置,而且语句流会像贯穿一个case标签一样贯穿default子句。

循环语句

while语句

//while 语法结构
while(表达式)
  循环语句;

案例:

#include <stdio.h>
 int main()
 {
	 int i = 1;
	 while(i<=10)
	 {
		 printf("%d ", i);
		 i = i+1;
	 }
	 return 0;
 }

while语句中的break和continue

  • break介绍
 //break 代码实例
#include <stdio.h>
 int main()
 {
	 int i = 1;
	 while(i<=10)
	 {
		 if(i == 5)
		    break;
		 printf("%d ", i);
		 i = i+1;
	 }
	 return 0;
 }

总结: break在while循环中的作用:
其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。 所以:while中的break是用于永久终止循环的

  • continue介绍
    //continue 代码实例1
 #include <stdio.h>
 int main()
 {
	 int i = 1;
	 while(i<=10)
	 {
		 if(i == 5)
		 continue;
		 printf("%d ", i);
		 i = i+1;
	 }
	 return 0;
 }

总结: continue在while循环中的作用就是:
continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,而是直接跳转到while语句的判断部分。进行下一次循环的入口判断

//代码1
 #include <stdio.h>
 int main()
 {
	 int ch = 0;
	 while ((ch = getchar()) != EOF)//使用 getchar() 函数从标准输入读取一个字符,并将其赋值给 ch,直到读取到 EOF
		 putchar(ch);//将读取到的字符 ch 输出到标准输出
	 return 0;
 }
 //代码2
 #include <stdio.h>
 int main()
 {
	 while ((ch = getchar()) != EOF)
	 {
		 if (ch <0|| ch >9)//检查读取的字符是否在数字范围内。如果不是数字字符,则跳过本次循环,继续读取下一个字符
		 continue;
		 putchar(ch);
	 }
	 return 0;
 }

for语句

语法

for(表达式1;表达式2;表达式3)
     循环语句;

案例:

#include <stdio.h>
 int main()
 {
	 int i = 0;
	 //for(i=1/*初始化*/; i<=10/*判断部分*/; i++/*调整部分*/)
	 for(i=1; i<=10; i++)
	 {
	     printf("%d ", i);
	 }
	 return 0;
 }

       其中,表达式1 为初始化部分,用于初始化循环变量的。 表达式2 为条件判断部分,用于判断循环时候终止。 表达式3为调整部分,用于循环条件的调整。

对比一下for循环和while循环
示例:

int i = 0;
 //实现相同的功能,使用while
i=1;//初始化部分
while(i<=10)//判断部分
{
	 printf("hehe\n");
	 i = i+1;//调整部分
}
 //实现相同的功能,使用while
 for(i=1; i<=10; i++)
 {
    printf("hehe\n");
 }

       可以发现在while循环中依然存在循环的三个必须条件,但是由于风格的问题使得三个部分很可能偏离较远,这样查找修改就不够集中和方便。所以,for循环的风格更胜一筹。 for循环使用的频率也最高。

break和continue在for循环中
       在for循环中也可以出现break和continue,他们的意义和在while循环中是一样的。 但是还是有些差异:
案例:

//代码1
 #include <stdio.h>
 int main()
 {
	 int i = 0;
	 for(i=1; i<=10; i++)
	 {
		 if(i == 5)
		    break;
		 printf("%d ",i);
	 }
	 return 0;
 }
 //代码2
 #include <stdio.h>
 int main()
 {
	 int i = 0;
	 for(i=1; i<=10; i++)
	 {
		 if(i == 5)
		    continue;
		 printf("%d ",i);
	 }
	 return 0;
 }

       for语句的循环控制变量 一些建议:

  1. 不可在for 循环体内修改循环变量,防止 for 循环失去控制。
  2. 建议for语句的循环控制变量的取值采用“半开半闭区间”写法。
    示例:
int i = 0;
//半开半闭的写法
for(i=0; i<10; i++)
{}
//两边都是闭区间
for(i=0; i<=9; i++)
{}

do while

       do语句的特点:
       循环至少执行一次,使用的场景有限,所以不是经常使用。
示例:

#include <stdio.h>
 int main()
 {
	 int i = 10;
	 do
	 {
	     printf("%d\n", i);
	 }while(i<10);
	 return 0;
 }

相关文章:

  • 蓝桥杯刷题--宝石组合
  • 【踩坑】GitHub Actions 运行的 Linux 环境中,文件名是大小写敏感的
  • 基于SpringBoot的“线上考试系统”的设计与实现(源码+数据库+文档+PPT)
  • AWS VPC深度解析:构建安全可靠的云网络基础设施
  • Java中的基本数据类型
  • HarmonyOS:组件布局保存至相册
  • repo安装配置
  • 一文读懂WPF系列之常用控件以及样式
  • Human3.6M 解析3d pose标注 h36m
  • python基础语法13-装饰器
  • 【JavaScript】十七、事件委托(冒泡阶段的利用)
  • Redux中间件原理
  • 水文-用 Coze 工作流打造你的自媒体写作工厂
  • OpenHarmony子系统开发 - 热管理(二)
  • ​​亚马逊算法重构消费市场:解码2024年Q1北美站热搜商品的底层逻辑​
  • uni-app初学
  • AcrelHome EMS:家庭储能的智慧管家,让用电自由又省钱
  • 汽车零部件高精度三维检测-全流程智能质量管控
  • 电子电器架构 --- AI如何重构汽车产业
  • Uniapp当中的async/await的作用