2012-10-28 54 views
0

大家好我是新手程序員,我學習C和在學習昨天我碰到這個練習來了,這裏有雲:繪製人物設計

我要創建一個計劃,將採取三個參數(C, n,m) ,它會畫房子。第一個參數(c)用 建立字符,這將形成房屋,而第二個(n)和第三個(m)確定三角形(屋頂)和房屋矩形的高度 。爲了創建屋頂, 程序將打印每行1,3到(2 * n + 1)個字符。然後 它將顯示一個((2n-1)* m)矩形。 例如:如果你給的參數:O,3,4它將打印

    o 
        ooo 
        ooooo 
       ooooooo 
        ooooo 
        ooooo 
        ooooo 
        ooooo 

所以我決定來解決它,但我在3小時內就這項工作,我只是不能找到合適的條件下把在「爲」創造屋頂我可以與矩形,所以有人可以幫助與屋頂的援助之手;

+1

我的技巧是讓每個輸出的行兩個循環:一個用於前導空格和一個字母。 –

回答

1

未必是最佳的解決方案,但這裏有一個辦法做到這一點

void print_house(int c, int n, int m){ 
    int line_width; 
    int max_width = 2*n +1; 
    int padding = 0; 
    int i=0,j=0,k=0; 

    //print the roof 
    for(i=0; i<= n; i++){ 
     line_width = 2*i +1; 
     padding = (max_width - line_width)/2; 

     for(k=0; k<padding; k++){ 
     printf(" "); 
     } 

     for(j=0; j< line_width; j++){ 
      printf("%c",c); 
     } 
     printf("\n"); 
    } 

    //print the rectangle 
    for(i=0;i<m;i++){ 
     printf(" "); 
     for(j=0;j< max_width -2; j++){ 
      printf("%c",c); 
     } 
     printf("\n"); 
    } 

} 
+0

謝謝,這真的很有幫助。我沒有想過使用三個循環。我試圖用2來解決它,但沒有好的結果。 – MKB