C/C++知识点之C++循环结构
小标 2018-12-26 来源 : 阅读 1046 评论 0

摘要:本文主要向大家介绍了 C/C++知识点之C++循环结构,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了 C/C++知识点之C++循环结构,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

编程求解下列式子的值:S=1+2+3+...+n

首先有一种方法,用等差数列求和,这是小学三年级的奥数题,用的是最基础的结构,如果有不懂,可以看我的上两篇博客《语言C++之基础知识(拓展) 》《语言C++之简单C++语言介绍 》

让我们先来梳理一下题意:求从一到n所有数的和。大家可能会发现,所需加的数会每次加1,而且执行的操作都是加法。所以我们可以用到循环结构。

以下是循环结构的模板:

1.for语句

    for(类型名 变量名=刚开始需要的值;循环执行的条件;递增步骤){//类型名可不加,在上面定义就行,花括号道理同if语句,一下须执行的语句有多句就要花括号,一句就不需要
      每个循环都执行的内容;//不管循环到哪里,都执行同样操作
    }

循环结构比较难理解,所以我来解释一下:

举个例子:for(long long i=0;i<2;i++){

                      cout<<i<<"5201314"<<endl;

                      cout<<233<<endl;

                   }

显示一下步骤:1.起始条件是i=0;输出0和5201314并回车,再输出233和回车,然后i加1;

                          2.i=1;输出1和5201314并回车,再输出233和回车,然后i加1;

                          3.i=2;运行条件是i要小于2,所以不符合条件,停止

需要注意的是,变量名不一定是i,递增步骤也不限,只要不陷入死循环就好;执行的步骤不管循环到了哪里都是一样的,而且变量不一定要用在步骤里(如果这样,for(long long i=1;i<=2;i++)是相同的,循环次数相同。

还有另外一种使用方法,使两个变量同时变换,例如:

for(long long i=0,j=1;i<99&&j<99;i+=2,j+=3)

那么,做题可以用这样的步骤:

1.基本结构;

2.循环计算;

代码如下:

    #include <iostream>
    using namespace std;
    int main(){ //基础结构
      int n, s=0; //定义
      cin>>n;  //输入
      for (int i=1; i<=n;++i) //循环 ,枚举出所有的i,即相加的所有数
      s+=i; // 可表示为s=s+i,为多个,可累计增加 ,切记s需赋值0
      cout<<s; //加好,数求出,即可输出
      return 0;//返回值为0,可加可不加
    }

还有另外一种while语句的循环结构,模板如下:

2.while语句

    while(运行需要达到的条件){//花括号的与for语句同理
       需要执行的操作;
    }

3.do-while语句

    do{//花括号的与for语句同理
       需要执行的操作;
    }while(运行需要达到的条件)

PS:与while完全一样。

代码如下:

    #include<iostream>
    using namespace std;
    int main(){
        long long a,b=0;
        cin>>a;//基础结构,不讲
        while(a!=0){//当a!=0时候执行以下操作
            b+=a;//b加上数
            a--;//最重要,如果没有这一步,那么a一直大于0,会陷入死循环;而且b加的会一直都是a的初始值
        }
        cout<<b<<endl;
        return 0;
    }

只是一种最简单的循环结构,那么就让我来介绍一种更为复杂但更为方便的循环结构——循环嵌套,先来看一道例题:

求S=1!+2!+3!+.........+10!

PS:3!=3*2*1;意为3的阶乘

具体步骤为:

1.基本结构

2.循环嵌套,即为双重循环,先循环10个数,再按每个数求这个数的阶乘,加起来

    #include <iostream>
    using namespace std;
    int main (){
      int t,s;
      s=0;
      for(int i=1;i<=10;++i)
        {
        t=1;
        for (int j=1;j<=i;++j)            //求i!
          t*=j;
          s+=t;                           //累加i!
        }
      cout<<s;
      return 0;
    }

具体执行步骤与单重for循环相同,只不过再加了一个for循环,不过双重循环效率很慢,所以尽量用单重,或者优化

其实这道题就有一种优化方法

    #include <iostream>
    using namespace std;
    int main ()
    {
      int t=1,s=0;
      for(int i=1;i<=10;++i)
      {
        t*=i;                            //t为上一个数的i-1的阶乘值,再乘以i即为i!
        s+=t;                            //累加i!
      }
      cout<<s;
      return 0;
    }

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程