循环和选择语句的应用

在 ​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;
      }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呱呱呱~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值