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 个小时了,我只是找不到合适的条件来放入“for”来创建屋顶我对矩形没问题,所以有人可以帮助屋顶请;

4

1 回答 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");
    }

}
于 2012-10-28T14:58:36.077 回答