【问题标题】:Loop help Outputting Multiples properly循环帮助正确输出倍数
【发布时间】:2014-11-30 05:05:02
【问题描述】:

该程序的工作是在一行上输出所有小于 n 的 k 的非负倍数,并使用 3 个不同的循环执行此操作 3 次(按此顺序:while、for、do-while) .每个树次,倍数(如果有多个)用逗号分隔,第一个数字之前或最后一个数字之后没有逗号。 您的程序的示例运行可能如下所示:

5 40

0、5、10、15、20、25、30、35

0、5、10、15、20、25、30、35

0、5、10、15、20、25、30、35

我是第一次编程的学生,这是我在 Visual Studio 2012 上的作业之一。我正在努力处理所有循环,到目前为止已经写出了 2 个(while 循环和 for 循环)。我的两个循环都输出了很远的#,我的输出语句中的逗号位置也没有。运行我的程序:

5 40

,0 ,1 ,6 ,31

0 ,10 ,60

我的代码:

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

bool die ( const string msg );
void recover();

int main (){
unsigned k, n;
cout <<"Input 2 #'s: " <<endl;
cin >>k >>n || die( "Input Failure" );
if ( k == 0  || n == 0 ) die( "Number Can't Be 0" );
unsigned i = 0;
while( i < n){ //
    cout <<" ," <<i;
    i *= k;
    i++;
    }
cout <<endl;

for( i = 0; i < n; i++){
    recover;
    i *= k;
    cout <<i <<" ,";

}
cout <<endl;

} // main

`

【问题讨论】:

  • 提示:您可以将系列改写为 0、0+5、5+5、10+5 等等。
  • 编程的第一条规则:把问题分解成更简单的问题。一开始不要担心逗号,只要把数字弄对就行。您需要三个循环中的哪一个?
  • 老实说,我需要所有人的帮助,但让我们从 while 循环开始,也许我会从那里学习。我也尝试替换 i *= k;使用 i += k (如建议的那样),但输出也是错误的。

标签: c++ loops for-loop while-loop do-while


【解决方案1】:

你知道这个系列应该是

0, 5, 10, 15, 20, 25, 30, 35

我们将执行while 循环。在英文中,“while”的意思是“从0开始,然后只要低于40,就增加5”。

unsigned i = 0;    // start with 0
while( i < n){     // as long as it's below 40
  cout <<" ," <<i;
  i += k;          // increase by 5
}
cout <<endl;

要正确使用逗号,我们必须将第一个数字或最后一个数字视为特殊情况。也就是说,我们必须在除第一个之外的每个数字之前放置“,”,或者在除最后一个之外的每个数字之后放置“,”。第一个更容易一些:

unsigned i = 0;    // start with 0
while( i < n){     // as long as it's below 40
  if( i > 0 )
    cout <<" ,";
  cout << i;
  i += k;          // increase by 5
}
cout <<endl;

这应该足以让您入门。当您尝试do-while 时,如果开头和结尾的数字不太正确,请在纸上单步执行循环——您必须正确掌握操作顺序。对于for,您可以使用三个不同的参数,即初始值、结束条件和步​​长,因此请随意使用它们,直到您了解如何让它为您提供所需的序列。

【讨论】:

  • 真的很感激!我不知道为什么我觉得有必要拥有把这一切搞砸的“i++”。再次感谢,如果我在其他循环中遇到问题,请告诉您。
  • 如何为 do-while 循环正确放置逗号?到目前为止,这是我的代码: if ( i > 0 ){ i = 0;做{ cout
  • @BoyWonder:仔细想想,不要只是把代码放在一起。条件if(i&gt;0) 应该控制部分代码,目的是省略第一个数字之前的逗号。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多