2016-11-11 58 views
-2

欲打印以下數序列:跳過值

1 2 3 6 7 8 11 12 13 16 17 18 ...

它打印三位正整數則跳過兩個以下值,然後重複該過程。

+5

你可以使用模%'操作符來做到這一點。 – Franck

回答

1

這裏只是使用for循環語句的簡單方法:

for (int i = 1; i < 100; i += ((i%5) == 3) ? 3 : 1) 
{ 
    // ... 
} 
+0

這是C#,而不是C++ –

+0

@SimonKraemer我刪除了C#位。 :) –

+0

@CherubimAnand我知道,但作爲OP顯然是一個初學者的例子不應該爲其他語言。這隻會造成更多的困惑。 –

1

正如Franck指出,你可以簡單地使用模運算符。

模運算符爲您提供了除法的其餘部分。

0/10 = 0; 0 % 10 = 0; 
10/10 = 1; 10 % 10 = 0; 
11/10 = 1; 11 % 10 = 1; 
12/10 = 1; 12 % 10 = 2; 
20/10 = 2; 20 % 10 = 0; 
21/10 = 2; 21 % 10 = 1; 
27/10 = 2; 21 % 10 = 7; 

0 % 3 = 0; 
1 % 3 = 1; 
2 % 3 = 2; 
3 % 3 = 0; 
4 % 3 = 1; 
5 % 3 = 2; 
6 % 3 = 0; 
7 % 3 = 1; 
8 % 3 = 2; 
9 % 3 = 0; 
... 

從你的例子,我假設你想跳過49結束值。 你有2種可能性,存檔這樣的:

  • 使用% 10和檢查結果爲是無論是49
  • 使用% 5和檢查結果爲是無論是4

結果看起來就會這樣的事情:

for (int i=1; i<=100; i++) 
{ 
    if(i%5 == 4) continue; //Skip 
    std::cout << i << " "; 
}