华为第十届D( acm)

Problem Description

SDUTACM校赛已经举办到第十届了,传说中的UMR学姐为了表达对于ACM的喜爱,他决定输出高度为N的ACM图案(详情请看样例)

Input

第一行输入一个正整数N(保证N为偶数)。

1 <= N <= 10

Output

输出高度为N的ACM图案,每个字母间的最小距离(底部)为两个空格,C的高度和宽度都为NA"_"的位置为N/2, 用到的字符都有"_”"|""\""/"

Sample Input

4

Sample Output

          ____
   /\    |      |\      /|
  /__\   |      | \    / |
 /    \  |      |  \  /  |
/      \ |____  |   \/   |

 

 

此题特判一下2就好

#include <stdio.h>
int main()
{
    int n,i,j;
    scanf("%d",&n);
    if(n==2)
    {
        printf("       __\n");
        printf(" /_\\  |    |\\ /|\n");
        printf("/   \\ |__  | \\/ |\n");
    }
    else
    {
        for(i=1; i<=2*n+3; i++)
            printf(" ");
        for(i=1; i<=n; i++)
            printf("_");
        puts("");
        for(i=1; i<=n; i++)
        {
            for(j=1; j<=n-i; j++)
                printf(" ");
            printf("/");
            if(i==n/2)
            {
                for(j=1; j<=2*(i-1); j++)
                    printf("_");
            }
            else
            {
                for(j=1; j<=2*(i-1); j++)
                    printf(" ");
            }
            printf("\\");
            for(j=1; j<=n-i+2; j++)
                printf(" ");
            printf("|");
            if(i!=n)
            {
                for(j=1; j<=n; j++)
                    printf(" ");
            }
            else
            {
                for(j=1; j<=n; j++)
                    printf("_");
            }
            for(j=1; j<=2; j++)
                printf(" ");
            printf("|");
            for(j=1; j<=i-1; j++)
                printf(" ");
            printf("\\");
            for(j=1; j<=2*(n-i); j++)
                printf(" ");
            printf("/");
            for(j=1; j<=i-1; j++)
                printf(" ");
            printf("|");
            puts("");
        }
    }
    return 0;
}

 

posted @ 2018-06-10 16:57  ~~zcy  阅读(137)  评论(0编辑  收藏  举报