循环帮助正确输出倍数

Loop help Outputting Multiples properly

本文关键字:输出 帮助 循环      更新时间:2023-10-16

程序的工作是在一行上输出所有小于n的k的非负倍数,并使用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, 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,您有三个不同的参数可供使用,即初始值、结束条件和步长,所以只需使用它们,直到您看到如何使其为您提供所需的序列。