2011-03-22 37 views
2

我想創建一個從1到10的列表。每次循環時,它都會添加一個到x,我也希望它可以像這樣打印。如何根據x的值更改文本輸出

1 
2 
    3 
    4 
    5 
    6 
     7 
     8 
     9 
     10 

現在它打印這樣的:

1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
+0

這不是功課。我沒有參加任何課程,我自己也是這樣做的。 jerks j/p – 2011-03-23 00:41:22

回答

5

僞代碼:

for (i: 1..10) 
    for(j:1..i) //or for(j:1..(i-1)) if you want zero spaces on line 1 
     print space 
    print i 
    print newline 

心連心

0

您可以將參數添加到您的函數表示縮進水平(由例如空格的字符串),每一次它被稱爲你增加一個「」。

在一個循環中,你可以做同樣的事情,通過只在您的增值每增加一個空間

1

嗯,你可以做一個「間隔「 - 循環中的字符串,並在每次運行時添加一個空格。然後輸出spacer-string +循環數。

4

std::string有一個構造函數接受一個數字和字符,你可以用它來生成「X空格字符」:

#include <iostream> 
#include <string> 

int main() 
{ 
    for (int x = 0; x < 10; x++) { 
     std::cout << std::string(x, ' ') << (x+1) << '\n'; 
    } 
} 

希望有所幫助。

+6

1)給一個作業問題提供一個完整的代碼將無助於長期提問者... 2)你的代碼打印0..9而不是1..10 :) – 2011-03-22 20:12:11

+1

這就是我想要的實際上是在現實世界中做的。 – 2011-03-22 20:20:09

+0

@Armen:(1)如果他們通過實例學習,就像今天絕大多數程序員一樣;儘管我很欣賞你厭惡喂匙。 (2)修正了,謝謝。 – 2011-03-23 00:32:57

0
char buf[64]; 
for(int i = 1; i <= 10; i++) 
{ 
    sprintf(buf, "%%%dd\n", i + i/10 + 1); 
    printf(buf, i); 
} 

for(int i = 1; i <= 10; i++) 
{ 
    for(int j = 0; j < i - 1; j++) 
    std::cout << ' '; 
    std::cout << i << std::endl; 
}