【发布时间】: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