转换为循环做while循环在C++
我需要转换for循环的做,而:转换为循环做while循环在C++
for (int i = 0; i <= input; i = i + 2)
{
cout << name << " is number " << input << endl;
total = total + i;
}
cout << endl;
cout << total << endl;
这是我到目前为止有:
do
{
cout << name << " is number " << input << endl;
i += 2;
total += i;
} while (i <= input);
cout << endl;
cout << total << endl;
它不给出与for循环相同的总值。我究竟做错了什么?
你必须通过2
增加它之前,我加入到总所以do..while循环应该是这样的:
do
{
cout << name << " is number " << input << endl;
total += i;
i += 2;
} while (i <= input);
cout << endl;
cout << total << endl;
这是完美的。非常感谢! – quasipsychotic 2012-04-03 16:18:00
很高兴为您提供帮助。如果您认为它解决了您的问题,请将答案标记为已接受。 – user700284 2012-04-03 16:20:06
如果在进入循环之前输入'i>,它将不会执行相同的操作。 – Seagull 2012-04-03 17:31:33
你只需要改变
i += 2;
total += i;
到
total += i;
i += 2;
在您的for循环:
total = total + i;
i
是在第一次迭代等于0。您在do - while
循环中执行此操作的方式在整个添加之前设置为i
。
该死的看起来像第一个响应不再是upvotes的标准。 – talnicolas 2012-04-03 16:20:04
做一次至少会执行一次,没有任何价值是我是什么。 你也应该初始化你的我。
如果您还没有这样做在前面部分代码,你需要在do ... while中初始化我。
另外,在do ... while中,改变顺序使总增加,然后i递增。
您的代码不正确。 Corect是
do
{
cout << name << " is number " << input << endl;
total += i;//swap these lines
i += 2;//
} while (i <= input);
cout << endl;
cout << total << endl;
for循环之间的主要区别do-while循环是这样一个事实:
- For循环执行0次或更多次
- 但是do-while循环执行1或多次
实施例:
int input = 100;
//Will never execute as i is bigger than 5
for (int i = input; i<5; ++i)
cout << i;
//Will execute only one time as i < 5 is checked only
//after first execution
int i = input;
do
{
cout << i;
} while(i < 5);
的方式做正确,你的任务是:
int i = 0;
//if used to prevent first execution
if (i <= input)
{
do
{
cout << name << " is number " << input << endl;
total = total + i;
i = i + 2;
} while(i <= input);
}
但最好是重新编写循环像
for(BEFORE_STATEMENT; FINISH_STATEMENT; ITERATE_STATEMENT)
{
LOOP_CODE
}
如while循环,它会工作相同
BEFORE_STATEMENT
while(FINISH_STATEMENT)
{
LOOP_CODE
ITERATE_STATEMENT
}
+1表示如何将'for'转换为'while * *一般*。 – Heinzi 2012-04-03 16:44:36
难道你在循环之前正确初始化为零?你确定输入永远不会被否定吗? – Patrick 2012-04-03 16:16:14
你初始化过“我”吗? – 2012-04-03 16:16:17
是的,我已经列出所有的变量值为0,除了字符串名称,所以我知道它不能这样。 – quasipsychotic 2012-04-03 16:16:47