2015-03-03 30 views
-2

我以前解决如何绘制在C矩形,现在有修改程序来绘制三角形看起来像......如何使用+,绘制在C三角形 - ,|和

+ 
|\ 
| \ 
| \ 
| \ 
+----+ 

任何帮助非常感谢,因为我一直试图这样做几个小时!下面是到目前为止我的代码:

int main() 
{ 
    int rows, cols, x, y; 
    rows = 5; 
    cols = 5; 
    for (x=0; x<rows; x++){ 
     for (y=0; y<cols; y++){ 
      if(y==0 && x==0) 
       printf("+\n"); 
      if(y==0) 
       printf("|\n"); 
      if(x==rows - 1 && y==0) 
       printf("+"); 
      if(x==rows - 1) 
       printf("-"); 
      if(x==rows - 1 && y==cols - 1) 
       printf("+"); 
      if(x==y) 
       printf("\\"); 
      else if(x!=rows-1) 
       printf(" "); 
     } 
    } 
    return 0; 
} 
+0

我认为这问题属于[代码评论](http://codereview.stackexchange.com/) – 2015-03-03 08:09:23

+0

@Turtlechase为什么行和列等于5,例如图片中三角形的高度等于6? – 2015-03-03 08:44:30

回答

1

交错显示它们,如下所示:

#include <stdio.h> 

int main(void) { 
    int i=0,j=0; 
    printf("+\n"); 
    for(i=0;i<5;i++) 
    { 
     if(i==4) 
     printf("+"); 
     else 
     printf("|"); 
     j=i; 
     while(j--) 
     { 
      if(i==4) 
      { 
      printf("-"); 
      } 
      else 
      printf(" "); 
     } 
     if(i==4) 
     printf("+"); 
     else 
     printf("\\"); 
     printf("\n"); 
    } 
    return 0; 
} 

输出:

+ 
|\ 
| \ 
| \ 
| \ 
+----+ 
1

顶行是单个+,并且可以被视为一个异常。

其余各行遵循

start char 
filler chars 
end char 

可预测的模式的最后一行从他人处仅在于它使用了不同的字符集不同。所以一种解决方案是声明一个数组来保存两个字符集,并在最后一行切换字符集。

#include <stdio.h> 
#define N 5 

int main(void) 
{ 
    char charset[2][3] = { { '|', ' ', '\\' }, { '+', '-', '+' } }; 
    int s = 0; 

    printf("+\n");       // output the first row 
    for (int row = 0; row < N; row++) 
    { 
     if (row == N-1)      // switch character sets on 
      s = 1;        // the last row 

     putchar(charset[s][0]);    // output the first character 
     for (int col = 0; col < row; col++) 
      putchar(charset[s][1]);   // output the filler characters 
     printf("%c\n", charset[s][2]);  // output the last character 
    } 
} 
1

捕捉!:)

#include <stdio.h> 

int main(void) 
{ 
    while (1) 
    { 
     printf("Enter height of triangle (0 - exit): "); 
     size_t height = 0; 

     scanf("%zu", &height); 

     if (!height) break; 

     size_t i = 0; 

     printf("\n+\n"); 

     while (++i < height - 1) 
     { 
      printf("|%*c\n", i, '\\'); 
     } 

     if (i < height) 
     { 
      printf("+"); 
      while (--i) printf("-"); 
      printf("+\n"); 
     } 
    } 

    return 0; 
} 

如果进入sequantially 6,5,4,3,2,1,0,那么该程序输出将是

Enter height of triangle (0 - exit): 6 
+ 
|\ 
| \ 
| \ 
| \ 
+----+ 
Enter height of triangle (0 - exit): 5 
+ 
|\ 
| \ 
| \ 
+---+ 
Enter height of triangle (0 - exit): 4 
+ 
|\ 
| \ 
+--+ 
Enter height of triangle (0 - exit): 3 
+ 
|\ 
+-+ 
Enter height of triangle (0 - exit): 2 
+ 
++ 
Enter height of triangle (0 - exit): 1 
+ 
Enter height of triangle (0 - exit): 0