C语言循环结构实例代码分析
今天小编给大家分享一下C语言循环结构实例代码分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
while循环
while循环的流程图大致就是这样子
语法结构
while( expression ) //判断表达式是否成立,成立就执行循环体,不成立则不进入
循环体;
接下来我们使用一下while循环,打印1-10的数字
#include <stdio.h>
int main(){
int i = 1;
while(i < 11)
printf("%d ",i++);
return 0;
}
这便是while最简单的用法,接下来看一下while中的break和continue
while循环中break和continue
break
看到break大家肯定不陌生,选择结构中的switch-case就要搭配着break使用哦
#include <stdio.h>
int main(){
int i = 1;
while(i < 11)
{
if( 5 == i)
break;
printf("%d ",i++);
}
return 0;
}
可以看出,当i=5的时候,直接跳出了整个循环不再执行
break是直接跳出循环,也是直接跳出switch-case
continue
在英语中,continue是继续的意思 ,在循环中,表示跳过这次循环进行下一次循环
#include <stdio.h>
int main() {
int i = 1;
while (i < 11)
{
if (5 == i)
continue; // 把break换成continue试一下
printf("%d ", i++);
}
return 0;
}
大家可以猜一下,可想而知,大家可能会认为结果是 1 2 3 4 6 7 8 9 10 跳过5,我们来分析一下
光标一直在闪烁,死循环,那怎么样才能达到跳过5的效果呢,
核心问题在于**这样i的值没办法变化,那我们把i放在continue前面来试试**
#include <stdio.h>
int main() {
int i = 0;
while (i < 11)
{
i++;
if (5 == i)
continue;
printf("%d ", i);
}
return 0;
}
这样continue就不会跳过循环因子 -i 的变化,所以不会死循环,来看结果
成功跳过了5,大家在while循环中使用continue时一定要注意循环因子的问题
continue 在while循环中的作用就是:
本次循环中continue后边的代码不会再执行而是直接跳转到while语句的判断部分。
进行下一次循环的入口判断。
for循环
语法结构
for( 表达式1 ; 表达式2 ; 表达式3)
循环体;
表达式1为**初始化部分,用于初始化循环变量的**。
表达式2为_条件判断部分_,用于**判断循环时候终止**。
表达式3为_调整部分_,用于**_循环条件的调整 _**。
for循环中break和continue
break
for循环中break与while循环中break完全相同,表示跳出循环
#include <stdio.h>
int main() {
int i = 0;
for (i = 1; i < 10; i++) {
if (5 == i)
break;
printf("%d ", i);
}
return 0;
}
break基本没啥区别,就是跳出循环
continue
for循环中continue跳出的依然是此次循环,但是并不会跳过表达式3
#include <stdio.h>
int main() {
int i = 0;
for (i = 1; i < 10; i++) {
if (5 == i)
continue;
printf("%d ", i);
}
return 0;
}
依然是跳过5,continue不会跳过表达式3,意味着i++可以执行,不会造成死循环
当然,一个人想写bug谁也拦不住他
比如:
for循环中省略表达式的问题
for循环中有3个表达式,都可以省略,但是分号一个不能少
int main(){
int i = 0;
//可以写成这样
for (i=0;i<10;)
;
//还可以这样
for(i = 0;;)
;
//甚至是这样
for(;;); //三分号一个也不能少
}
for(;????; 这样的代码,如果循环体中没有break,基本就是妥妥死循环,并不建议大家这样使用
for循环嵌套
当出现两个for循环的时候,需要考虑循环控制的问题,行列,内外循环都代表什么?大家需要想清楚
写一个九九乘法表
#include <stdio.h>
int main() {
int i = 0;
int j = 0;
for (i = 1; i < 10; i++) { //控制行
for (j = 1; j <= i; j++) {
printf("%d * %d = %d ", j, i, i * j); //控制列
}
printf("
");
}
return 0;
}
一般情况下,内层循环因子的控制条件都和外层循环因子有关系
下面给大家几个for循环的注意事项
不可在for 循环体内修改循环变量,防止 for 循环失去控制。
建议for语句的循环控制变量的取值采用“前闭后开区间”写法
#include <stdio.h>
int main(){
int arr[10] = {1,2,3,4,5,6,7,8,9,10};//数组下标从0到9
int i = 0;
for(;i <=9;i++) //前闭后闭
printf("%d ",arr[i]);
for(;i < 10;i++)//前闭后开
printf("%d ",arr[i]);
return 0;
}
前闭后开区间的写法,可能使数字有了某种含义,比如例子中的10,刚好是打印元素的个数,也是数组的长度
给大家补充一个小知识
警惕for循环后边直接跟分号的题,学校爱出这玩意,懂得都懂
do-while循环
do-while循环与其他两种循环有很大不同,而也是使用频率最小的循环
do
循环体
while(判断条件);
do-while循环最大的特点就是无论如何,循环体一定会执行一次
只有在对应场景中,才应该使用do-while循环
do-while循环中,break以及continue的用法与while循环中一样,本文不在赘述。
goto语句
对于goto语句,是一种跳转,其实没必要说,因为能用它解决的用循环都能解决
简单介绍一下,但是并不推荐大家使用
#include <stdio.h>
int main()
{
printf("hehe
");
goto flag;
printf("haha
");
flag:
printf("heihei
");
return 0;
}
goto 会直接跳转到flag标记处,跳过打印haha
相关文章