博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C++中一个常用的句型(两个for(;;)语句连用的重要性)

Posted on 2016-03-17 11:30  warmbeast  阅读(3245)  评论(0编辑  收藏  举报

    在一些简单的C++编程中,经常会用到两个for(;;)语句连用的情况,这是一个常用句型,因此感觉也非常重要。下面举两个例子说明一下:

例1.用两个for(;;)语句来进行数组元素大小的排序

#include"stdafx.h"

#include<iostream>

using namespace std;

int main()

{

  int i,j,t=0;

   int a[10]={0};

//用for循环连续输入10个数存放在数组中

for(i=0;i<10;i++)

{

cin>>a[i];

}

//两个for循环连用,对输入的数值按从小到大的顺序排序

for(i=0;i<10;i++)

    for(j=i+1;j<10;j++)

{   

if(a[i]>a[j])

{

t=a[i];

a[i]=a[j];

a[j]=t;

}

}

//用for循环对排序好的数组值按从小到大的顺序输出

for(i=0;i<10;i++)

{

cout<<a[i]<<endl;

}

return 0;

}

例2.一条长廊里依次装有n(1 ≤ n ≤ 65535)盏电灯,从头到尾编号1、2、3、…n-1、n。每盏电灯由一个拉线开关控制。开始,电灯全部关着。 有n个学生从长廊穿过。第一个学生把号码凡是1的倍数的电灯的开关拉一下;接着第二个学生把号码凡是2的倍数的电灯的开关拉一下;接着第三个学生把号码凡是3的倍数的电灯的开关拉一下;如此继续下去,最后第n个学生把号码凡是n的倍数的电灯的开关拉一下。n个学生按此规定走完后,长廊里电灯有几盏亮着。 注:电灯数和学生数一致。

程序:

#include "stdafx.h"

#include<iostream>

#define max 65535

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

int n, i, j,cnt=0, a[max] = { 0 };

cin >> n;

if ((n < 1) || (n>max))

cout << "输入错误!" << endl;

for (i = 1; i <= n; i++)

{

for (j = 1; j <= n; j++)

{

if ((j%i) == 0)

{

a[j] += 1;

a[j] %= 2;

}

}

}

for (i = 1; i<=n; i++)

{

if (a[i]==1)

cnt++;

}

cout << "亮灯数为" << cnt << "盏" << endl;

return 0;

}

 

一条长廊里依次装有

n(1 

 

 n 

 65535)

 

盏电灯,从头到尾编号

1

2

 

3

 

…n

 

-1

n

。每

盏电灯由一个拉线开关控制。开始,电灯全部关着。

 

n

个学生从长廊穿过。第一个学生把号码凡是

1

的倍数的电灯的开关拉一下;接着第二

个学生把号码凡是

2

的倍数的电灯的开关拉一下;接着第三个学生把号码凡是

3

的倍数的

电灯的开关拉一下;如此继续下去,最后第

n

个学生把号码凡是

n

的倍数的电灯的开关拉

一下。

n

个学生按此规定走完后,长廊里电灯有几盏亮着。

 

注:电灯数和学生数一致。