在 for 循环中,通常会使用一个变量来控制循环的执行,这个变量被称为循环变量。在大多数编程语言中,这个循环变量通常命名为 i,但它可以被替换成任何其他合法的变量名。比如下面的循环:
for(int i=1;i<=10;i++)
{
}
一开始的时候,变量i的值被初始化为1,然后判断i<=10是否成立,然后执行循环体中的代码(也就是“{}”包含的所有代码),无论循环体中的代码有多少,在这次循环的过程中,变量i的值保持1;然后变量i增加到2,经过条件判断开始第二次循环,这这次循环中,变量i的值保持2………直到循环结束。循环变量i经历了从1到10的所有整数。而选择语句可以针对某个变量的具体的值,执行不同部分的代码。比如:
if(i %2 ==0)
{
cout<<i<<endl;
}
如果变量i的值是偶数,那么就能在窗口输出变量i的值。那么我们能不能把两段代码结合起来,从而实现:输出1到10之间所有的偶数呢?当然可以:
这个组合有点像工厂工人和质检员的关系:循环语句是工人负责生产商品,而选择结构是质量检测员,他负责检查商品是否满足出厂条件。对于上面的循环:工人首先生产一个商品,即数字1,然后拿给质检员判断是不是偶数,发现不是就不出厂;然后工人生产数字2,再拿给质检员判断是不是偶数,竟然真的是偶数,然后出厂(cout语句把i的值送到控制台);依次类推,直到工人生产完全部10个数字。
根据这个思路,我们看一下例题:
例1.找数。请输出1-n之间所有既能被2整除又能被3整除的数,每个数一行。
int n;
cin >> n;
for (int i = 1; i <= n; i++)
{
if (i % 2 == 0 && i % 3 == 0)
{
cout << i << endl;
}
}
例2.回文数。回文数指的是正过来读和反过来读都是一样的数,比如101、999等。请编程找出所有3位的回文数,并在最后输出3位回文数的个数。
int cnt = 0;
for (int i = 100; i < 1000; i++)
{
int gw = i % 10;
int bw = i / 100;
if (gw == bw)
{
cnt ++;
cout << i << endl;
}
}
cout << cnt << endl;
例3.求555555的约数中最大的三位数是多少。
int max;
for (int i = 999; i >= 100; i–)
{
if (555555 % i == 0)
{
max = i;
}
}
cout << max << endl;
例4.爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最最后剩一阶,若每步跨3 阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶。只有每次跨7阶,最后才正好一阶不剩。请问这条阶梯最少共有多少阶?
int n;
for (int i = 1; ; i++)
{
if (i % 2 == 1 && i % 3 == 2 && i % 5 == 4 && i % 6 == 5 && i % 7 == 0)
{
n = i;
break;
}
}
cout << n << endl;
例5.求出100至999范围内的所有水仙花数。所谓水仙花数,就是指各位数字立方之和等于该数的数;a^3称为a的立方,即等于a×a×a的值。例如:因为153=1^3+5^3+3^3,所以153是一个水仙花数。每个水仙花数一行,按从小到大的顺序输出。
for (int i = 100; i <= 999 ; i++)
{
int gw = i % 10;
int sw = i / 10 % 10;
int bw = i / 100;
if (gw * gw * gw + sw * sw * sw + bw * bw * bw == i)
{
cout << i << endl;
}
}