Традиционный способ преобразовать время цикла в цикл принимает такую форму:
// While loop
int i = 0;
while(i < n) {
// Amazing things happen here
i++;
}
// Equivalent for loop
for(int i = 0; i < n; i++) {
// Amazing things still happen here
}
Таким образом, применяется к коду, это будет выглядеть примерно так:
char ch = word[i];
word[i] = word[length - 1];
word[length - 1] = ch;
for(int i = 0, length = word.length(); i < --length - 1; i++) {
char ch = word[i];
word[i] = word[length - 1];
word[length - 1] = ch;
}
Примечание что, поскольку цикл do-while выполняет цикл цикла перед тестированием, мне пришлось поставить одну копию тела цикла спереди. Чтобы избежать необходимости обновлять две разные копии кода, вы можете извлечь тело цикла в функцию, которая затем вызывается перед циклом и в теле цикла.
А для версии с в то время как петля:
int i = 0, length = word.length();
char ch = word[i];
word[i] = word[length - 1];
word[length - 1] = ch;
while(++i < --length) {
char ch = word[i];
word[i] = word[length - 1];
word[length - 1] = ch;
}
['std :: reverse'] (http://en.cppreference.com/w/cpp/algorithm/reverse). – user657267
, но нет ли другого способа изменить его, просто изменив вышеуказанную программу? – user3467226
Тогда вам нужно будет объяснить конкретные ограничения, потому что есть много способов изменить строку, что проще, чем другие. Проще всего, конечно, просто использовать обратную функцию. –