2011-02-13 26 views
0

下面是問題:突出(通過放一個括號)C(n,k)在三角形中的答案。 我已經爲我的11行pascal三角形構造了我的代碼。但我無法突出顯示C(n,k)。如何在pascal三角形中插入一個數字的括號?

這是我所做的。

#include<stdio.h> 

int recursive(int n, int k); 

int main(void) 
{ 
    int row, space, column, b, x, y; 

    printf("Pascal triangle with 11 rows : \n"); 
    printf("Enter the row and column that you would like to highlight on the triangle : "); 
    scanf("%d %d", &x, &y); 

    if (x > 11) 
    { 
      printf("Error! The row entered must be smaller than 11! \n "); 
    } 

    else if (y > x) 
    { 
     printf("Error! Column CANNOT more than number of row!\n"); 
    } 

    else 
    { 
     for(row = 0 ; row < 11 ; row++) 
     { 
      for(space = 30 - 3 * row ; space > 0 ; space--) 
      { 
       printf(" "); 
      } 

      for(column = 0;column <= row; column++) 
      { 
       { 
       if(column == 0 || row == 0) 
       { 
        b = 1; 
       } 
       else 
       { 
        b = (b * (row - column + 1)/column); 
       } 
       printf("%6d", b); 
       } 

       if(row == x-1 && column == y-1) 
       { 
        printf("(%2d)",recursive(row , column)); 
       } 
       else 
       { 
        printf("%d ",recursive(row , column)); 
       } 
      } 
      printf("\n"); 

     } 

    } 

    return 0; 
} 

int recursive(int n,int k) 
{ 
    if(k == 0 || k > n) 
     return 0; 
    else if(n == 1 && k == 1) 
     return 1; 
    else 
     return (recursive(n - 1, k) + recursive(n - 1, k - 1)); 
} 

有人能告訴我我哪裏做錯了嗎?

+0

嗯,你沒有用`x`和`y`做任何事情嗎? – 2011-02-13 17:47:59

回答

0

由於您正在循環打印第一位數字。您需要檢查迭代是否是您想要突出顯示的迭代(就像您對打印第二位數字的部分所做的那樣)。

相反的:

printf("%6d", b); 

更改爲:

if(row == x-1 && column == y-1){ 
    printf("(6%d", b); 
} 
else{ 
    printf("%6d", b); 
} 

然後更改原始的嘗試(如打印最後一位數字)有一個右括號。

printf("%2d)",recursive(row , column));