2074--疊框,2091空心三角形

Problem Description
需要的時候,就把一個個大小差一圈的筐疊上去,使得從上往下看時,邊筐花色交錯。這個工作現在要讓計算機來完成,得看你的了。

Input
輸入是一個個的三元組,分別是,外筐尺寸n(n爲滿足n>0,n<80的奇整數),中心花色字符,外筐花色字符,後二者都爲ASCII可見字符;

Output
輸出疊在一起的筐圖案,中心花色與外筐花色字符從內層起交錯相疊,多筐相疊時,最外筐的角總是被打磨掉。疊筐與疊筐之間應有一行間隔。

Sample Input
11 B A
5 @ W

Sample Output
AAAAAAAAA
ABBBBBBBBBA
ABAAAAAAABA
ABABBBBBABA
ABABAAABABA
ABABABABABA
ABABAAABABA
ABABBBBBABA
ABAAAAAAABA
ABBBBBBBBBA
AAAAAAAAA

@@@
@WWW@
@W@W@
@WWW@
@@@


注意:
1.中心花色與外筐花色字符從內層起交錯相疊,從內到外;
2.疊筐與疊筐之間應有一行間隔。之間。最後一個沒有空行,先輸出空行,再輸圖案。
3.當n=1時,輸出第一個字符後換行;
4.n/2的奇偶不同,對應位置的字符不同;

#include<stdio.h>

int main()
{
    int n;
    char a,b;
    int flag = 0;

    while (scanf ("%d %c %c",&n,&a,&b) != EOF)
    {
        if (flag)
        {
            printf ("\n");
        }
       // getchar();
        int i,j,k;
        char s[90][90];

        if (n == 1)
        {
            printf ("%c\n",a);
            continue;
        }
        for (i=0; i<=n/2; i++)
        {
            for (j=n/2-i; j<=n/2+i; j++)
            {
                if (i % 2 == 0)
                {
                    s[n/2-i][j]= s[j][n/2-i]= s[n/2+i][j]=s[j][n/2+i] = a;
                }
                else
                {
                    s[n/2-i][j]= s[j][n/2-i]= s[n/2+i][j]=s[j][n/2+i] = b;
                }
            }
        }

        s[0][0]=s[0][n-1]=s[n-1][0]=s[n-1][n-1]=' ';

        for (i=0; i<n; i++)
        {
            for (j=0; j<n; j++)
            {
                printf ("%c",s[i][j]);
            }
            printf ("\n");
        }

        flag = 1;
    }
    return 0;
}

Problem Description

把一個字符三角形掏空,就能節省材料成本,減輕重量,但關鍵是爲了追求另一種視覺效果。在設計的過程中,需要給出各種花紋的材料和大小尺寸的三角形樣板,通過電腦臨時做出來,以便看看效果。

Input

每行包含一個字符和一個整數n(n>0,n<41),不同的字符表示不同的花紋,整數n表示等腰三角形的高。顯然其底邊長爲2n-1。如果遇到@字符,則表示所做出來的樣板三角形已經夠了。

Output

每個樣板三角形之間應空上一行,三角形的中間爲空。顯然行末沒有多餘的空格。

Sample Input

X 2
A 7
@

Sample Output

X
XXX
 
A
A A
A A
A A
A A
A A
AAAAAAAAAAAAA


兩道題類似,都是根據字符和數字輸出圖案,主要考慮如何循環。
這道題要注意格式問題,題目說行末沒有多餘空格,是指每一行行末都沒有多餘空格,而不只是最後一行,所以控制每行的列爲j

#include<stdio.h>
int main()
{
    char x;
    int n;
    int flag=0;
    while (scanf ("%c",&x) && x!='@')
    {
        scanf ("%d",&n);
        getchar();
        if (flag)
            printf ("\n");
        int i,j;
        for (i=1; i<n; i++)
        {
            for (j=1; j<n+i; j++)
            {
                if (j==n-i+1 || j==n+i-1)
                    printf ("%c",x);
                else
                    printf (" ");
            }
            printf ("\n");
        }
        for (i=1;i<=2*n-1;i++)
        {
            printf ("%c",x);
        }
        printf ("\n");
        flag=1;
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章