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;
}