学习C++ – C++ for
以下代码显示了如何使用for循环。
#include <iostream>
int main(){
using namespace std;
int i; // create a counter
for (i = 0; i < 5; i++)
cout << "C++ knows loops.\n";
cout << "C++ knows when to stop.\n";
return 0;
}
上面的代码生成以下结果。
for循环部分
for循环提供了执行重复任务的逐步操作。
for循环的部分处理这些步骤:
- 初始设定值
- 执行测试以查看循环是否应该继续
- 执行循环操作
- 用于测试的更新值(s)
控制部分后的语句称为循环体,只要测试表达式保持为真,就执行该语句。
for (initialization; test-expression; update-expression) body
以下代码显示了如何在for循环中使用数字测试。
#include <iostream>
using namespace std;
int main()
{
cout << "Enter the starting countdown value: ";
int limit;
cin >> limit;
int i;
for (i = limit; i; i--) // quits when i is 0
cout << "i = " << i << "\n";
cout << "Done now that i = " << i << "\n";
return 0;
}
上面的代码生成以下结果。
注意
该程序使用一个循环来计算连续阶乘的值。
然后它使用第二个循环显示结果。此外,程序还介绍了使用外部声明的值。
#include <iostream>
const int SIZE = 16; // example of external declaration
int main()
{
long long factorials[SIZE];
factorials[1] = factorials[0] = 1LL;
for (int i = 2; i < SIZE; i++)
factorials[i] = i * factorials[i-1];
for (int i = 0; i < SIZE; i++)
std::cout << i << "! = " << factorials[i] << std::endl;
return 0;
}
上面的代码生成以下结果。
改变步长
您可以通过更改更新表达式来更改。
该程序通过用户选择的步长增加循环计数器。
#include <iostream>
int main()
{
using std::cout; // a using declaration
using std::cin;
using std::endl;
cout << "Enter an integer: ";
int by;
cin >> by;
cout << "Counting by " << by << "s:\n";
for (int i = 0; i < 100; i = i + by)
cout << i << endl;
return 0;
}
上面的代码生成以下结果。
例子
内部字符串与for循环
#include <iostream>
#include <string>
using namespace std;
int main()
{
cout << "Enter a word: ";
string word;
cin >> word;
// display letters in reverse order
for (int i = word.size() - 1; i >= 0; i--)
cout << word[i];
cout << "\nBye.\n";
return 0;
}
上面的代码生成以下结果。
复合语句或块
程序使用大括号将三个单独的语句组合成单个块。
#include <iostream>
using namespace std;
int main()
{
cout << "Please enter five values:\n";
double number;
double sum = 0.0;
for (int i = 1; i <= 5; i++)
{ // block starts here
cout << "Value " << i << ": ";
cin >> number;
sum += number;
} // block ends here
cout << "They sum to " << sum << endl;
cout << "and average to " << sum / 5 << ".\n";
return 0;
}
上面的代码生成以下结果。
变量隐藏
如果您在块中声明与块外的其他名称相同的块中的变量,则新变量会从块内的点隐藏旧变量。
那么旧的可以再次变得可见,如下例所示:
#include <iostream>
using std::cout;
using std::endl;
int main() {
int x = 20; // original x
{ // block starts
cout << x << endl; // use original x
int x = 100; // new x
cout << x << endl; // use new x
} // block ends
cout << x << endl; // use original x
return 0;
}
上面的代码生成以下结果。
例2
以下代码显示如何反转数组。
#include <iostream>
#include <string>
using namespace std;
int main() {
cout << "Enter a word: ";
string word;
cin >> word;
char temp;
int i, j;
for (j = 0, i = word.size() - 1; j < i; --i, ++j)
{ // start block
temp = word[i];
word[i] = word[j];
word[j] = temp;
} // end block
cout << word << "\nDone\n";
return 0;
}
上面的代码生成以下结果。
例3
以下代码显示如何跳过非数字输入。
#include <iostream>
using namespace std;
const int Max = 5;
int main()
{
int golf[Max];
cout << "You must enter " << Max << " rounds.\n";
int i;
for (i = 0; i < Max; i++)
{
cout << "round #" << i+1 << ": ";
while (!(cin >> golf[i])) {
cin.clear(); // reset input
while (cin.get() != "\n")
continue; // get rid of bad input
cout << "Please enter a number: ";
}
}
double total = 0.0;
for (i = 0; i < Max; i++)
total += golf[i];
cout << total / Max << " = average score " << Max << " rounds\n";
return 0;
}
上面的代码生成以下结果。