看看这几个问题如何整好

1题
画出矩形(必须用函数,函数原型为:void printRectangle(int a, int b, char s, int c);)

描述

根据参数,画出矩形。

输入

输入一行,包括四个参数:前两个参数为整数,依次代表矩形的高和宽(高不少于3行不多于10行,宽不少于5列不多于10列);第三个参数是一个字符,表示用来画图的矩形符号;第四个参数为1或0,0代表空心,1代表实心。

输出

输出画出的图形。

样例输入

7 4 @ 0

样例输出

      @@@@

      @       @

      @       @

      @       @

      @       @

      @       @

      @@@@

2题

附着墙而立的字母三角形(必须用函数,函数原型为:void printTriangle(int n);)

描述

输入一个正整数(≤26),编程输出以这个正整数为边长的附着墙而立的字母三角形。

输入

一个正整数(≤26)

输出

       对应的图案。

样例输入

7

样例输出

a a

a ab

a abc

a abcd

a abcde

a abcdef

aabcdefg

3题

铺砖(必须用递归,函数原型为:int floorBrick(int n);)
描述对于一个2行N列的走道。现在用12,22的砖去铺满。问有多少种不同的方式。
下图是一个2行17列的走道的某种铺法。输入一个整数N(1<=n<=20),表示走道的列数。输出多少种铺法。样例输入12样例输出2731


#include<stdio.h>

void printRectangle(int a, int b, char s, int c){
    int width=b,height=a,hollow=c;
    char symbol=s;
    if(hollow==0){
        //空心
        for(int i = 0;i < height;i++)
        {
            for(int j = 0;j < width;j++)
            {
                if(i==0 || i==(height-1))
                    printf("%c",symbol);
                else
                    if(j==0 || j==(width-1))
                        printf("%c",symbol);
                    else
                        printf(" ");
            }
            printf("\n");
        }
    }
    else{
        //实心
        for(int i = 0;i < height;i++)
        {
            for(int j = 0;j < width;j++)
            {
                if(i==0 || i==(height-1))
                    printf("%c",symbol);
                else
                    printf("%c",symbol);
            }
            printf("\n");
        }
    }
    return 0;
}

void printTriangle(int n){
    for(int i=0;i<n;i++){
        printf("a");
        for(int j=0;j<i+1;j++)
        {
            printf("%c",'a'+j);
        }
        printf("\n");
    }
}

int floorBrick(int n){
    if(n == 1) 
        return 1;
    if(n == 2) 
        return 3;
    int typeNum = 2 * floorBrick(n-2) + floorBrick(n-1);
    return typeNum;
}
#include<bits/stdc++.h>
using namespace std;
void printRectangle(int a, int b, char s, int c)
{
    bool f=false;
    if(c==1) f=true;
    for(int i=1;i<=a;i++)
    {
        for(int j=1;j<=b;j++)
        {
            if(i==1||i==a||j==1||j==b)
            {
                cout<<s;
            }
            else {
                if(f) cout<<s;
            else cout<<' ';
            }

        }
        cout<<endl;
    }
}
void printTriangle(int n)
{
    for(int i=1;i<=n;i++)
    {
        cout<<'a'<<' ';
        for(int j=1;j<=i;j++)
        {
            char s='a'+j-1;
            cout<<s;
        }
        cout<<endl;
    }
}
int floorBrick(int n)
{
    if(n==2) return 3;
    if(n==1) return 1;

    return 2*floorBrick(n-2)+floorBrick(n-1);
}
int main() {

    int n;
    cin>>n;
    cout<<floorBrick(n);

}