C++基础--循环初涉

Posted 明立

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++基础--循环初涉相关的知识,希望对你有一定的参考价值。

前言:从第三课开始,我们开始接触到计算机三大执行顺序中的分支结构,也叫条件判断语句。而从这节课开始,我们就要在以上的基础上学习另一种分支结构——循环结构。

循环结构是个什么东西

我们在前面说到,循环就是重复执行某一段程序,更准确来说,应该是:在有限的步骤内,重复执行相同的操作。什么意思呢?这里有几个点需要注意一下:
第一,有限的步骤,意味着我们的循环语句并不是一直重复下去的,它需要一个能够让循环结束的条件。不然的话,当我们一直永无终止地执行这一段代码的话,什么时候才能退出呢?怕是到电脑内存崩溃了才行吧。所以记住,当我们要使用循环算法的时候,首先考虑我们要怎样去退出循环。
第二,相同的步骤,所谓相同的步骤,意味着当我们进入循环时,每一次的数据操作都是一致的,但不是数据的值是固定的。比如我们每次都会重复执行加法操作,而不会考虑是不是1+1的操作,因此,每一次循环,变量的值可以改变,但变量的操作却是不会变的。当然,这两点只是注意点。熟悉使用循环语句之后,问题也就不存在了。下面我们用while和do..while,为例,学习怎么应用循环语句。

while循环

while语句的格式

while(布尔表达式)
循环体,意味着要重复执行的操作

在这里,我们说布尔表达式,意味着里面的的内容,最终都是以bool型,也就是true或者false的形式表现。那在这里,我们就要想一下什么时候会得到bool型的值呢?我们来看一下:

1.关系表达式
2.布尔值选项
3.数字(零为false,非零为true

也就是说,当我们要使用这个while循环的时候,这个布尔表达式就是控制我们停止循环的标志。比如

//样例1:输出1-100的数   关系表达式作布尔表达式
int i=1;
while(i<=100) //当i>100时,不符合条件,退出循环,此时已经打印完1-100
    cout<< i << " ";//当i在1-100之间时,打印该值
    i++; //让i自增1,进入到下一个数字


//样例2:输入n个数
int n;
cin<<n;
while(n--)//在这里,n每一次循环都减1直到n为0,代表false,此时退出循环
,当  int m;
    cin>>m;

//样例3:打印1-100 用布尔型
int i,flag=true;
while(flag)
    cout<< i++ <<endl;
    if(i==101)
        flag=false;//把flag的值换回false,下一次循环时不为true,则退出
    


do while

do while 和while的区别,其实不大,他们的思想都是一样的。只是在格式上以及执行次序上有些不一样。先从格式说起吧,do..while的格式为:

do
//循环做的事
while(判断条件);//注意这里需要分号

和while相比,do while的格式可能显得会臃肿一点,但两者都可使用与循环操作。可是在执行次序上,我们会发现一些区别:while是先判断条件是否成立,再决定是否执行,dowhile则是先执行一遍我们的代码,再来看看这时候的条件是不是还满足我们的条件。那这两种情况就会在一些特殊情况下发生变化,比如:

同样执行同一个操作,但我们其实发现,第一个while的时候 ,因为 i<=8为false,所以直接跳过了循环。但是在do while里面,他会先打印出一个i值,再来判断这个i值是否大于8。因此便可以对比出两者运行上的区别。

累加/累减器

说完了循环,还有另外一个比较注意的知识点,就是累加累减器。他分为i++ ,++i ,i–,–i四种,他们的关系大致为:

设计循环语句的步骤

1.确定结束条件,这里的结束条件并不只是说要执行多少次,他只是一个条件判断,只要我们的设计能够最终满足这个条件就行,比如

int n=101;
while(n)
n/=10;

2.根据题目要求,确定要循环的操作是什么

3.在程序中添加控制代码,使得最终的运行结果能够使得我们的条件不满足循环而退出,比如上面的n/=10

总结:循环是编程语句中最重要,也是最基础的一个环节。在以后的过程中,使用循环语句的场景以及题目会非常多,所以熟练掌握循环的概念以及怎么应用是必要的。那怎么去掌握这些知识点呢?诶,快去把作业都给全部做完了吧~

以上是关于C++基础--循环初涉的主要内容,如果未能解决你的问题,请参考以下文章

C++入门基础知识[4]——循环控制语句

三种基础排序算法总结

初涉Java

C++基础2(运算符程序结构流程数组)

poj2387 初涉最短路

Python基础知识梳理 - 第03部分