如何使用+, - ,|和\在C中绘制三角形

时间:2015-03-03 08:03:09

标签: c geometry draw

我之前解决过如何在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;
}

3 个答案:

答案 0 :(得分: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 :(得分: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
    }
}

答案 2 :(得分: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;
}

如果要输入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