【认识C语言中的分支和循环语句】(超详解且易懂)

本篇文章篇幅较长,可根据目录查看相应的知识点,笔者相信朋友们看完会有一定收获!!!!

**跳转目录在右侧**

目录

前言

一、分支结构

     1】  if 语句

                1.1 语法如下图:

     1.2   if ....else 语句

2】  switch 语句

      2.1  if语句的单重嵌套      

     2.2 if 语句的多重嵌套

            补充:

   2.3 switch 

  1.1  特别注意: 

1.2  switch 中的 break

优化代码: 

二、循环语句

1】  while 循环

语法如下:

执行具体流程图:

2】 do...while 循环

3】 for 循环

1.语法

2.执行流程

3.例子

三、 while 与 for 循环中的 break和continue

1】 break 

     1.1 while 中的 break

1.2  for 中的break

2】 continue 

   2.1 while 中的 continue 

2.2 for 中的 continue

总结:



前言

首先先声明一下:本人也是个编程菜鸟,本篇文章只是自己的一些理解,有错误的地方恳请各位大佬指正!!!!!!

        c语言是结构化的程序设计语言,结构化指:顺序结构、选择结构、循环结构。我们生活中的语言通常都是由这三种结构组成。那么我们想在计算机上实现我们想实现的语言就要借助语句来完成。我们在c语言中可以通过 if 、switch来实现我们的分支结构while  、 do..while 、 for 来实现我们的循环结构。

一、分支结构

     1】  if 语句

                1.1 语法如下图:

                   

        if  语句中()中的内容是判断部分,在该语句中()中的内容为 时 就会进入到该语句中;那么为假自然就不会进了。

        在c 语言中 “ 0 ” 表示为 “假”,“非 0 ” 表示为真 ---- "特别注意"----> 是 “ 非 0 ”为真,

        但在c语言中通常用 “ 1 ” 来表示为真,初学时我们经常会认为只有 “ 1 ” 表示真(这是错误的)

                补充:若我们所写的语句为多条语句时  if 语句对应的 { } 必须加了!!!

if 语句的执行我用一个例子展示:

  

                        if 语句执行流程图

     1.2   if ....else 语句

         对于上述题目  ” 一个数能否被5整除 “ ---> 结果无非2种,Yes / No ; 那么我们想要在

        程序语言方面呈现 No 的结果这时就引入了 if....else 语句。

        语法如下图:     

      ”else“ 在英语中为 ”否则“ ,那 c语言中也是如此,这样就好理解 if ... else 了 ,如果进入     

       if 里该语句不成立,那么语句就会进入到 else 语句中再次判断。

        else...if语句的执行我用上一个例子展示:

        

        c 语言中默认 if  和 else 只会跟一条语句,这时 if 和 else 后面可以不加 “ {} ”,但加上会让代码更加清楚 !!

2】  switch 语句

      2.1  if语句的单重嵌套      

        我们在生活中经常会有多种情况且可能都会发生的事,比如我们想要在计算机上(c语言)中来表示我们这周的学习情况,一般我们都是周一 --- 周五 会上课,周末放假。那么这么多情况我们想要通过编程来实现 -- 我们之前提到了  if...else 语句 这个便可以实现。(这时就涉及到  if 的嵌套 )

代码如下:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int i = 0; // 表示具体的周几
	while (scanf("%d", &i) != EOF)
	{
		if (i == 1)
		{
			printf("今天是周一--上课\n");
		}
		else if(i==2)
		{
			printf("今天是周二--上课\n");
		}
		else if (i == 3)
		{
			printf("今天是周三--上课\n");
		}
		else if (i == 4)
		{
			printf("今天是周四--上课\n");
		}
		else if (i == 5)
		{
			printf("今天是周五--上课\n");
		}
		else if (i == 6)
		{
			printf("今天是周六--放假\n");
		}
		else if (i == 7)
		{
			printf("今天是周日--放假\n");
		}
		

	}

	return 0;

}

     2.2 if 语句的多重嵌套

代码如下:

​​​​#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	while (scanf("%d%d%d", &a, &b, &c) != EOF)
	{
		if (a > 0 && b > 0 && c > 0)
		{
			if ((a + b) > c && (a + c) > b && (b + c) > a)// 三角形判断的最基本条件
			{
				printf("该三角形存在\n");
			}
			else
			{
				printf("该三角形不存在\n");
			}

		}
	}
	
	return 0;
}

       if 的嵌套能解决很多问题,但我们在写代码时要注意 “  匹配  ”问题,要写的清晰易于观察,方便自己的同时也方便了他人。

            补充:

        在  if 语句的嵌套中 ---- 会有 else 悬空 的问题  ---这我们只要记住一个规则, if 只会匹配离它最近的 else    

  ** 【2.1】首先我们能够看到想要表示用我们一 周的学习情况  if....else 语句是可以成功实现的,但是这样的话显然是不太好的 ,代码太长也不是很好的。那么有没有既能让代码实现有看起来简洁好的语法呢? 肯定有的,这里我们就引入了 switch 语句。

   2.3 switch 

       语法如下:

 以上语法,根据表达式 expression 不同的值,执⾏相应的 case 分⽀。如果找不到对应的值, 就执行 default 分⽀。

  1.1  特别注意: 

*switch 后的 expression 必须是整型表达式。

*case 后的值,必须是整形常量表达式。

*case  与其后的值是有空格的。

*case 值的后面是 “ :“ 

笔者用switch 语句对 【2.1】的代码进行优化

代码如下:

#define _CRT_SECURE_NO_WARNINGS
#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");
	default:
		printf("输入有误\n");
	}
	return 0;
}

1.2  switch 中的 break

这是 switch 的运行结果, ????怎么会这样,难到输入的问题?? 这就涉及到了 switch 的执行流程。

        switch 语句是根据判断条件的值进入相应的程序 , 如:day的值 = 1 就会先进入 case 1: 程序,但 case 1: 程序执行完毕以后就会继续往下执行。 想要让程序终止就要用到 “ break ” 了。

break 在英语中为 “  跳出,打破 ” 之意,在c 中表示为 “ 跳出循环” , 所以想要终止 switch 语句 break就显得尤为重要了!

优化代码: 
#define _CRT_SECURE_NO_WARNINGS
#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;
}

---------------------------------------以上内容是对分支语句的全部介绍-------------------------------------------


二、循环语句

1】  while 循环

语法如下:

与  if 语句大体相同,但 while 的作用是循环,循环的次数可以由我们自己决定(与表示有关)

 如果需要我们打印 2 次 “星期一上课” 这简单 if 里 写俩条printf 就可以完成 ,但要 打印100 次那就

不可能用 if 了 。 

用一个题来解释 while

 //  在屏幕上打印出 1 ~ 10 的所有数字

 代码:

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

	return 0;

}

  * 特别注意*  

    * while 语句中必须要有让程序循环的条件 如:i ++ ,否则就会进入死循环!

执行具体流程图:

通过以上的代码便可实现 1~10 的所有数字打印。

2】 do...while 循环

该循环是我们在项目实践中用的比较少的一种循环语句,适当了解即可。

语法如下:

这个循环可以按照自己的意愿来执行程序, “ do ” 为做的意思,只要程序进入遇到 do...while 就会直接执行其里面的语句。笔者用一个例子展示:

// 打印一个游戏菜单

我们都知道一个游戏一般都有菜单,那么菜单肯定是先被打印出来的,如果我们想要进入游戏后先打印菜单就可以用 do...while 语句了!

代码:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void meun()
{
	printf("*****************************\n");
	printf("*********1.  play   *********\n");
	printf("*********0.  exit   *********\n");
	printf("*****************************\n");
}
int main()
{
	int i = 0;

	do
	{
		
		meun();
		printf("请选择->:");
		scanf("%d", &i);
		switch (i)
		{
		case 1:
			printf("你已经进入游戏\n");
			break;
		case 0:
			printf("你已经退出游戏\n");
			break;
		default:
			printf("输入有误,请重新输入\n");
			break;
		}
	} while (i);
	return 0;

}

运行截图:

这样就实现了我们想要实现的上来先打印菜单的功能。

3】 for 循环

为什么 for 循环要标红呢?? 因为它及其重要,在项目中我们用的最多的循环就是 for 循环,其次是 while 循环

1.语法

同样若为多条语句就得加  { } 了。

解释:

表达式 1 是初始化部分 

表达式 2 是判断部分

表达式 3 是循环得调整 ( 与 while 中的  i ++ 作用相同)

可以看到  for 循环首先是很便利的一个语句就有三个功能,所以它很重要

注意: for ()中的是 ”  分号  “不是”  逗号 “

2.执行流程

3.例子

// 打印 1- 10 的所有数字

代码:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
	int i = 0;

	for (i = 1; i <= 10; i++)
	{
		printf("%d ", i);
	}
	return 0;

}

对比以下 while 循环确实简便了很多,所以在我们写工程中 for 循环有及其重要的作用。

既然是循环那肯定就会有循环不停止的情况,这个称为:死循环,下面笔者将介绍 break,continue .

三、 while 与 for 循环中的 break和continue

1】 break 

     1.1 while 中的 break

break??细心的朋友可能发现 switch 中也有 break ,那就得讲讲 break 的使用范畴了

  前面笔者讲过  ”  break  “ 有 ” 跳出“ 之意, 不然这里也是,在循环中 ” break “可以跳出循环体 

// 打印 1 -10 的所有数字

代码呈现:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
	int i = 0;
	while (i<10)
	{
		i++;
		printf("%d", i);
		if (i == 5)
			break;
		
	}
	return 0;

}

解释:

以上代码我们可以发现题目是 打印 1 -10 的所有数字 ,但其显示台上只有 1-5 的数字,这就是因为 break 在  i==5 时跳出了该循环体程序直接走到了 return 0 ;这里结束该程序。

1.2  for 中的break

for 循环中的 break 功能和 while 中的一样,笔者就不多赘述了。

一个代码呈现:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		printf("%d ", i);
		if (i == 5)
			break;
    }
	return 0;

}

2】 continue 

   2.1 while 中的 continue 

" continue " 在英语中为 ” 继续 “之意,在c 中也同样,但这里的 ” 继续 “就不是代码继续往下进行了,具体解释如下。

//  打印 1-10 的所有数字

代码:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int i = 0;
	while (i<10)
	{
		i++;
		if (i == 5)
			continue;
		printf("%d ", i);

	}
	return 0;

}

解释:

题目为 打印 1-10 的所有数字,但我们显示台打印出来却是 1 - 10 没有 5 ???什么情况???

因为   i == 5 后面是 continue ,程序遇到 continue 会重新进入判断条件,自动跳过 continue 后面所有代码  ------->  这样 当 i == 5 时 就没有执行 printf 而是又重新判断 , 5 < 10 程序重新进入 接着一步一步进行。

2.2 for 中的 continue

// 还是同样例子 :打印  1-10 的所有数字

代码:

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

}

我们发现与 while 的结果是一样的 , 但我们要注意 for 中遇到 continue 是 表达式2 , 表达式3 之间的 循环过程 , 与 表达式1 的初始化就没有关系了。

---------------------------------------以上内容为循环部分知识点------------------------------------------------------

总结:

通过笔者的介绍,我希望对初学者有所帮助,可能有些细节之处笔者未涉及,希望谅解!!

创作不易,望关注!!!!!

后续笔者将会带朋友们用所学到的知识 写一个程序台控制的小游戏,望有兴趣者关注笔者,大家共同进步!!!

  • 33
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值