本篇文章篇幅较长,可根据目录查看相应的知识点,笔者相信朋友们看完会有一定收获!!!!
**跳转目录在右侧**
目录
三、 while 与 for 循环中的 break和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 的初始化就没有关系了。
---------------------------------------以上内容为循环部分知识点------------------------------------------------------
总结:
通过笔者的介绍,我希望对初学者有所帮助,可能有些细节之处笔者未涉及,希望谅解!!
创作不易,望关注!!!!!
后续笔者将会带朋友们用所学到的知识 写一个程序台控制的小游戏,望有兴趣者关注笔者,大家共同进步!!!