华为第十届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("       __
");
        printf(" /_\  |    |\ /|
");
        printf("/   \ |__  | \/ |
");
    }
    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;
}
原文地址:https://www.cnblogs.com/zcy19990813/p/9702782.html