头歌C++之do-while循环性质

目录

第1关:求1到n间所有整数的和

本关必读

本关任务

测试说明

第2关:用牛顿迭代法求方程的实根

本关必读

本关任务

测试说明

第3关:求若干个整数中正整数的个数、总和及平均值

本关必读

本关任务

测试说明


第1关:求1到n间所有整数的和

本关必读

作为计算机编程语言的循环语句实例,求累加和几乎遍及所有的主流编程语言,理解累加和的求解过程对于掌握循环语句的精髓具有重要的作用。其中最常见的求累加和实例是求1100的和。

本关要求用do-while循环语句来求1n间所有整数的和。

本关任务

本关的编程任务是实现step1/SumOfDoWhile.cpp文件中的Sum函数,代码如下:

  1. // 使用while循环求1到n间所有整数的和
  2. int Sum(int n)
  3. {
  4. // 请在此添加实现代码
  5. }
测试说明

本关的测试文件是step1/SumOfDoWhileTest.cpp,负责对你写的实现代码进行测试。具体说明如下:

  1. #include <iostream>
  2. #include "SumOfDoWhile.h"
  3. using namespace std;
  4. int main()
  5. {
  6. int n;
  7. // 从命令行读入一个int型数值
  8. // 这个数取自测试集的输入
  9. cin >> n;
  10. cout << Sum(n) << endl;
  11. }

上述main函数从命令行读入,并将处理后的结果通过命令行输出。注意,step1/SumOfDoWhileTest.cpp的代码不能被修改。

其中:SumOfDoWhile.h文件代码如下:

  1. #ifndef _ISLEAPYEAR_H_
  2. #define _ISLEAPYEAR_H_
  3. int Sum(int );
  4. #endif

以下是平台对step1.SumOfDoWhileTest的测试样例: 测试输入:10 预期输出:55

测试输入:20

预期输出:210

测试输入:50

预期输出:1275

// 使用do-while循环求1到n间所有整数的和
int Sum(int n)
{
    // 请在此添加实现代码
    int Sum=0;
    while(n>0)
    {
        Sum+=n;
        n--;
    }
    return Sum;
}

第2关:用牛顿迭代法求方程的实根

本关必读

本关要求用do-while循环语句和牛顿迭代法来求方程 4 * x * x * x + 3 * x * x + 2 * x + 1 = 01附近的一个实根。

本关任务

本关的编程任务是实现step2/EquationCal.cpp文件中的部分代码,该文件代码如下:

  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;
  4. #define A (4 * x * x * x + 3 * x * x + 2 * x + 1)
  5. #define B (12 * x * x + 6 * x + 2)
  6. int main()
  7. {
  8. double x = 1, a;
  9. // 请在下面添加do-while部分实现代码
  10. /******** Program ********/
  11. /********** End **********/
  12. cout << x << endl;
  13. }
测试说明

本关的测试文件仍然是step2/EquationCal.cpp,负责对你写的实现代码进行测试。

以下是平台对step2.EquationCal的测试样例: 测试输入:0 预期输出:* // *代表所求方程的实根

#include <iostream>
#include <cmath>
using namespace std;

#define A (4 * x * x * x + 3 * x * x + 2 * x + 1)
#define B (12 * x * x + 6 * x + 2)

int main()
{ 

    double x = 1, a;

    // 请在下面添加do-while部分实现代码
    /******** Program ********/
    do
    {
        a=x;
        x=a-A/B;
    }
    while(fabs(x-a)>(1e-5));
    /********** End **********/	

    cout << x << endl;
    return 0;
}

第3关:求若干个整数中正整数的个数、总和及平均值

本关必读

本关要求:对于连续输入的若干个整数,输入0结束。请用do-while循环语句来统计其正整数的个数,并计算其中正整数的总和、平均值并输出。输入输出格式请见后续测试样例。

本关任务

本关的编程任务是实现step3/IntNumCal.cpp文件中的相应代码,该文件代码如下:

  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. // 请在下面添加实现代码
  6. /******** Program ********/
  7. /********** End **********/
  8. }
测试说明

本关的测试文件仍然是step3/IntNumCal.cpp,负责对你写的实现代码进行测试。

以下是平台对step3.IntNumCal的测试样例: 测试输入:27 76 49 36 54 0 预期输出: n=5 avg=48.4 sum=242

测试输入:19 63 78 27 15 12 70 0

预期输出: n=7 avg=40.5714 sum=284

测试输入:27 25 50 89 18 31 80 51 1 0

预期输出: n=9 avg=41.3333 sum=372

#include <iostream>
using namespace std;

int main()
{
    // 请在下面添加实现代码
    /******** Program ********/   
    float n,sum,count=0;
    float avg;
    do
    {
        cin >> n;
        sum=sum+n;
        count++;
    }
    while(n!=0);
    avg=sum/(count-1);
    cout << "n=" << count-1 << endl;
    cout << "avg=" << avg << endl;
    cout << "sum=" << sum << endl;
    return 0;
    /********** End **********/ 
}

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leaving.zpp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值