2013-02-15 179 views
0

我認爲這會比原計劃更容易。我試圖讓這個形象出來的嵌套的for循環:C++嵌套循環

enter image description here

任何建議或解決方案將是有益的。

#include <iostream> 

using namespace std; 

int main() 
{ 
    for(int i=0; i<1;i++) 
    { 
     cout<<i+1<<endl; 

     for(int j=0;j<2;j++) 
     { 
      cout<<j+1; 
     } 
    } 

    cout<<"\n"; 
    for(int k=0; k<3; k++) 
    { 
     cout<<k+1; 
    } 
    cout<<"\n"; 
    for(int l=0; l<4; l++) 
    { 
     cout<<l+1; 
    } 
    cout<<"\n"; 
    for(int m=4; m>0; m--) 
    { 
     cout<<m; 
    } 
    cout<<"\n"; 
    for(int n=3; n>0; n--) 
    { 
     cout<<n; 
    } 
    cout<<"\n"; 
    for(int o=2; o>0; o--) 
    { 
     cout<<o; 
    } 
    cout<<"\n"; 
    for(int p=0; p<1; p++) 
    { 
     cout<<p+1; 
    } 
    cin.get(); 

    return 0; 
} 
+0

的圖像輸出你創建的內容對解決問題非常有用。 – 2013-02-15 04:29:45

+3

也不要使用'i','j','k','l','m','n','o'作爲變量名稱。它很難理解代碼 – 2013-02-15 04:30:43

+0

提示:你會希望內部循環的邊界是外部循環的循環索引 – happydave 2013-02-15 04:30:50

回答

0
#include <iostream> 

using namespace std; 

int main(int argc, char *argv[]) 
{ 
/*first half: From level1 = 1 to less than 5, level2 = 1 to less than or equal to level1, print level2 */ 
for(int level1 = 1; level1 < 5; level1++) { 
    for(int level2 = 1; level2 <= level1; level2++){ 
     cout << level2; 
    } 
    cout << '\n'; /*prints the newline AFTER each iteration of the `level2` loop*/ 
} 

/*second half: reverse the logic of part1, but also add spaces in the beginning */ 
for(int level1 = 4; level1 > 0; level1--){ 
    for(int interim = 4; interim > level1; interim--) cout << ' '; 
    for(int level2 = level1; level2 > 0; level2--){ 
     cout << level2; 
    } 
    cout << '\n'; 
} 
return 0; 
} 

讓我知道,如果你不明白這個代碼:-)

+0

我不完全,但結果是完美的。爲什麼命名變量臨時值,你能解釋一下邏輯嗎? – Klinetel 2013-02-15 04:44:58

+1

好吧,我不知道該在那裏調用變量,所以稱之爲「interim」這樣的愚蠢,但你從代碼中明白,它僅用於在輸出中添加一個空格。 – 2013-02-15 04:46:18

+0

是的,非常感謝! – Klinetel 2013-02-15 04:49:12

4

這兒有你在C液=)

#include <stdio.h> 
#include <string.h> 

int main(void) { 
    char forward[5] = "1"; 
    char reverse[5] = "4321"; 

    int i; 
    for(i = 1; i <= 4; i++) { 
     printf("%s\n", forward); 
     forward[i] = forward[i-1]+1; 
    } 
    for(i = 0; i < 4; i++) printf("% 4s\n", reverse+i); 
} 
3

如果你想要一個非常緊湊,不是很好的解決方案,我決定給它一個鏡頭。

int length = 4; 

for(int i = 0; i < 2; i++) 
{ 
    for(int j = 0; j < length; j++) 
    { 
     for(int k = 0; k < (i == 1 ? length - j : j + 1); k++) 
     { 
      if(i == 1 && k == 0) 
       for(int x = 0; x < j; x++) 
        cout << " "; 

      cout << (i == 1 ? (length - k) - j : k + 1); 
     } 

     cout << endl; 
    } 
} 

哪裏length是迭代從1length數。

Output

2

好,因爲稻田張貼了他℃溶液(有人說, 「緊湊」= P)...

#include <stdio.h> 
int main() 
{ 
    char line[] = "1234321"; 
    int i=0; 
    for (; i<4; printf("%.*s\n",++i,line)); 
    for (i=0;i<4; printf("%4s\n",line+3+i++)); 
    return 0; 
} 

輸出

1 
12 
123 
1234 
4321 
321 
    21 
    1