在一些簡單的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
個學生按此規定走完后,長廊里電燈有幾盞亮着。
注:電燈數和學生數一致。
