【问题标题】:Trouble in looping while printing a series打印系列时循环出现问题
【发布时间】:2020-05-23 14:17:12
【问题描述】:

我必须用 C++ 编写一个程序,该程序将根据用户提供的变量输入打印 10 个数字的序列。

预期输出:

输入一个数字:10

系列:11 13 16 20 25 31 38 46 55 65

到目前为止,这是我的代码:

#include <stdio.h>

int main() 
{ 
    int j, sum = 0, b=1; 
    for (j = 10; j <= 65; j=j+b++) 
    { 
        sum = sum + j;
        printf("%d\n",j);
    } 
}

我已经根据给定的样本对其进行了硬编码。如何使其适用于可变输入?

【问题讨论】:

  • 我不明白这个问题。为什么这个系列从 11 开始?下一个数字的规则是什么?
  • @FlatAssembler +1, +2, +3, +4, +5 ... 非常基本的谜题!
  • @FlatAssembler 我认为它从input + 1开始
  • 它将 10 添加到 1 这就是为什么 11 然后添加 2 这就是为什么 13
  • @ArdentCoder 实际上是 input + 1 几何级数 ;)

标签: c++ loops for-loop


【解决方案1】:

这是一个几乎完整的解决方案,你的工作是更新评论说/* ??? */的一行

查看代码 cmets 了解更多信息:

#include <iostream>

int main()
{
    // Starting value, ex. 10, chosen by user
    int input = 0;

    // Length of the sequence, also chosen by user
    int length = 0;

    // Sequence is incremented according to the pattern you already know
    // for more info see:
    // https://www.mathsisfun.com/algebra/sequences-sums-arithmetic.html
    int adder = 0;

    // Ask user to input starting number
    std::cout << "Please enter the starting number: ";
    std::cin >> input;

    // TODO: verify user input is number

    // Ask user for desired length of a sequence
    std::cout << "Please enter the desired length of sequence: ";
    std::cin >> length;

    std::cout << "Generating sequence..." << std::endl;

    // Generate sequence
    // TODO: your part of job is to replace the ???
    for (int counter = 0; counter < length; ++counter, input += /* ??? */)
    {
        // Show the current number in the sequence
        std::cout << input << std::endl;
    }

    return 0;
}

【讨论】:

  • 一些建议:adder 是未使用的变量,length 始终等于 10(来自问题)。
  • @ArdentCoder 哈哈,看到你和我分享写代码的风格,好酷! :) 至于序列长度,我在这里没有看到问题,在其他答案中有一条评论应该包括它。 adder 变量应该放入 /* ??? */
  • 不错。顺便说一句,该评论是在对问题进行大刀阔斧的编辑之前提出的,无论如何length 使您的代码更加灵活,如果他们愿意,OP 可以将const 设置为 10。我认为counter 是你谜题的答案:P
【解决方案2】:

我认为这是解决方案:

#include <iostream>

using namespace std;

int main() {
    int n;
    cin >>n;
    int lastNumber=n;
    for (int i=1; i<=n; i++) {
        lastNumber+=i;
        cout <<lastNumber <<' ';
    }
    endl(cout);
}

【讨论】:

  • 我还怀疑序列长度 10 是为了固定,而不是从输入中获取的,尽管我承认未指定。
猜你喜欢
  • 2020-03-15
  • 2021-12-04
  • 2016-03-01
  • 2022-01-20
  • 1970-01-01
  • 2022-06-15
  • 1970-01-01
  • 2012-12-12
  • 2016-08-08
相关资源
最近更新 更多