2013第四届蓝桥杯C/C++ C组省赛题解 八题

本题是蓝桥杯往届真题。

小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:

​..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..

对方同时也需要在电脑 Dos 窗口中以字符的形式输出该标志,并能任意控制层数。

上面是对应输出 33 层嵌套的时候。

11 层嵌套如下:

..$$$$$..
..$...$..
$$$.$.$$$
$...$...$
$.$$$$$.$
$...$...$
$$$.$.$$$
..$...$..
..$$$$$..

输入格式

输入一个整数 n(0 \leq n \leq 30)n(0n30),表示图形嵌套的层数。

输出格式

对应层数的该标志。

样例输入1

1

样例输出1

..$$$$$..
..$...$..
$$$.$.$$$
$...$...$
$.$$$$$.$
$...$...$
$$$.$.$$$
..$...$..
..$$$$$..

样例输入2

4

样例输出2

..$$$$$$$$$$$$$$$$$..
..$...............$..
$$$.$$$$$$$$$$$$$.$$$
$...$...........$...$
$.$$$.$$$$$$$$$.$$$.$
$.$...$.......$...$.$
$.$.$$$.$$$$$.$$$.$.$
$.$.$...$...$...$.$.$
$.$.$.$$$.$.$$$.$.$.$
$.$.$.$...$...$.$.$.$
$.$.$.$.$$$$$.$.$.$.$
$.$.$.$...$...$.$.$.$
$.$.$.$$$.$.$$$.$.$.$
$.$.$...$...$...$.$.$
$.$.$$$.$$$$$.$$$.$.$
$.$...$.......$...$.$
$.$$$.$$$$$$$$$.$$$.$
$...$...........$...$
$$$.$$$$$$$$$$$$$.$$$
..$...............$..
..$$$$$$$$$$$$$$$$$..



模拟就可以

#include <stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    int a[200][200] = {0};
    int x = (9 + 4 * (n - 1)) / 2 + 1;
    int y = x;
    for(int i = 0;i <= n;i ++){
        int x1 = x - i * 2,y1 = y - i * 2;
        a[x1][y1] = 1;a[x1][y1 - 1] = 1;a[x1][y1 - 2] = 1;
        a[x1 - 1][y1] = 1;a[x1 - 2][y1] = 1;
        int x2 = x - i * 2,y2 = y + i * 2;
        a[x2][y2] = 1;a[x2][y2 + 1] = 1;a[x2][y2 + 2] = 1;
        a[x2 - 1][y2] = 1;a[x2 - 2][y2] = 1;
        int x3 = x + i * 2,y3 = y - i * 2;
        a[x3][y3] = 1;a[x3][y3 - 1] = 1;a[x3][y3 - 2] = 1;
        a[x3 + 1][y3] = 1;a[x3 + 2][y3] = 1;
        int x4 = x + i * 2,y4 = y + i * 2;
        a[x4][y4] = 1;a[x4][y4 + 1] = 1;a[x4][y4 + 2] = 1;
        a[x4 + 1][y4] = 1;a[x4 + 2][y4] = 1;
    }//做三角
    for(int i = 0;i < n;i ++){
        int x1 = x - 4 - i * 2,y1 = y - (i + 1) * 2;
        for(int j = y1;(j - y1) < (5 + i * 4);j ++){
            a[x1][j] = 1;
        }
        int x2 = x - (i + 1) * 2,y2 = y + 4 + i * 2;
        for(int j = x2;j - x2 < 5 + i * 4;j ++){
            a[j][y2] = 1;

        }
        int x3 = x + 4 + i * 2,y3 = y - (i + 1) * 2;
        for(int j = y3;j - y3 < 5 + i * 4;j ++){
            a[x3][j] = 1;
        }
        int x4 = x - (i + 1) * 2,y4 = y - 4 - i * 2;
        for(int j = x4;j - x4 < 5 + i * 4;j ++){
            a[j][y4] = 1;
        }
    }//做横竖
    for(int i = 1;i <= 9 + (n-1)*4;i ++){
        for(int j = 1;j <= 9 + (n-1)*4;j ++){
            if(a[i][j] == 0)
            printf(".");
            if(a[i][j] == 1)
            printf("$");
        }
    printf("\n");
    }
    return 0;
}



猜你喜欢

转载自blog.csdn.net/pack__pack/article/details/57089360