2012-12-10 77 views
1

我有一個簡單的quastion。 我有這樣的C#代碼:C中的指針三角形#

static void Main(string[] args) 
{ 
    int num1, i, j, x, y; 
    Console.WriteLine("enter number"); 
    num1=int.Parse(Console.ReadLine()); 
    for (i=1; i<=num1; i++){ 
     for (j=1; j<i+1; j++) { 
     Console.Write(i); 

     }Console.Write("\n"); 
    } 
    for (x=num1; x>=0; x--){ 
     for (y=0; y<x; y++) { 
     Console.Write(x); 

     }Console.Write("\n"); 
    } 
    Console.ReadLine(); 
} 

enter image description here 中間線是重複兩次

哪個打印三角形從數字。 問題是中間線重複兩次。 我的問題是如何改變循環,所以中間的行數會重複兩次? 希望得到幫助,謝謝!

+0

你能更詳細你的代碼實際上做了解釋,什麼是中間行,在那裏你有代碼的中間線? – Phxvyper

+2

你逼我複製粘貼這段代碼,看看那個令人難以置信的三角形! –

+1

不!我已經下載了一張圖片,可以嗎? –

回答

2

因爲這兩個for循環包括num1作爲一個包容性的條件:

for (i=1; i<=num1; i++){ 
    // num1 is the last number in this loop 
} 
for (x=num1; x>=0; x--){ 
    // num1 is the first number in this loop 
} 

更改第一循環停止前num1

for (i=1; i<num1; i++){ 
+0

現在我明白了!非常感謝你!! –

3

呃變化

for (x=num1; x>=0; x--){ 

for (x=num1-1; x>=0; x--){ 
+0

謝謝!它工作得很好! –

1
static void Main(string[] args) 
{ 
    int num1, i, j, x, y; 
    Console.WriteLine("enter number"); 
    num1=int.Parse(Console.ReadLine()); 
    for (i=1; i<num1; i++){ 
     for (j=1; j<i+1; j++) { 
     Console.Write(i); 

     }Console.Write("\n"); 
    } 
    for (x=num1; x>=0; x--){ 
     for (y=0; y<x; y++) { 
     Console.Write(x); 

     }Console.Write("\n"); 
    } 
    Console.ReadLine(); 
} 
+0

非常感謝你! –

2
Console.Write("enter number: "); 
int num = Int32.Parse(Console.ReadLine()); 

Enumerable.Range(1, num) 
      .Concat(Enumerable.Range(1, num - 1).Reverse()) 
      .Select(x => String.Join("", Enumerable.Repeat(x.ToString(),x))) 
      .ToList() 
      .ForEach(line => Console.WriteLine(line)); 
+0

三角印象深刻:) –