无法实现do-while循环的所需输出

时间:2014-10-14 00:03:23

标签: c++ loops do-while

我希望我的代码列出计算时带有=后跟最终答案,但我不知道该怎么做。我的代码现在的编写方式,输出在最后的迭代和等号之间打印一个额外的加号。下面是代码的正文,感谢任何帮助。

int main()
{
double fraction = 0.0, numerator = 0.0, n, denominator = 0.0;

    do
    {
        numerator = numerator + 1;
        denominator = n;
        --n;
        fraction = fraction + (numerator / denominator);
        cout << numerator << "/" << denominator << " + ";
    }

    while (denominator > 1); 

    cout << " = " << fraction << endl;
    return 0;
}

2 个答案:

答案 0 :(得分:1)

您只需要更改此行

cout << numerator << "/" << denominator << " + ";

cout << numerator << "/" << denominator;
if (denominator > 1) {
  cout << " + ";
}

这确保您不会在最后一次迭代时打印+。

答案 1 :(得分:0)

这基本上只是将+打印为列表中项目之间的分隔符。对于这样的情况,您通常希望执行以下两种操作之一:

  1. 弄清楚这是否是第一次迭代。如果不是,请在项目前打印分隔符。
  2. 弄清楚它是否是最后一次迭代。如果不是,请在项目后打印分隔符。
  3. 在这些选择之间取决于你。我倾向于选择前者,但有些人更喜欢后者,(尽管他们显然是错的),这是一个非常合理的选择。