转换为循环做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循环相同的总值。我究竟做错了什么?

+0

难道你在循环之前正确初始化为零?你确定输入永远不会被否定吗? – Patrick 2012-04-03 16:16:14

+0

你初始化过“我”吗? – 2012-04-03 16:16:17

+0

是的,我已经列出所有的变量值为0,除了字符串名称,所以我知道它不能这样。 – quasipsychotic 2012-04-03 16:16:47

你必须通过2

增加它之前,我加入到总所以do..while循环应该是这样的:

do 
{ 
    cout << name << " is number " << input << endl; 
    total += i; 
    i += 2; 
} while (i <= input); 
cout << endl; 
cout << total << endl; 
+0

这是完美的。非常感谢! – quasipsychotic 2012-04-03 16:18:00

+0

很高兴为您提供帮助。如果您认为它解决了您的问题,请将答案标记为已接受。 – user700284 2012-04-03 16:20:06

+0

如果在进入循环之前输入'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

+0

该死的看起来像第一个响应不再是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 
} 
+2

+1表示如何将'for'转换为'while * *一般*。 – Heinzi 2012-04-03 16:44:36