類型一:對於輸出有規律的
例 九度1065 輸出梯形
- 題目描述:
-
輸入一個高度h,輸出一個高爲h,上底邊爲h的梯形。
- 輸入:
-
一個整數h(1<=h<=1000)。
- 輸出:
-
h所對應的梯形。
- 樣例輸入:
-
4
- 樣例輸出:
-
**** ****** ******** **********
#include<stdio.h>
int main(int argc, char* argv[])
{
int h;
while(scanf("%d",&h)!=EOF)
{
int i,j;
int t=h+(h-1)*2; //梯形底邊長度
for(i=1;i<=h;i++)
{
for(j=1;j<=t;j++)
{
if(j<=(t-h)-2*(i-1)) printf(" ");
else printf("*");
}
printf("\n");
}
}
return 0;
}
類型二:對於難以找出規律的,先排版(給數組元素賦值),最後再整體輸出數組
例1:九度1432 疊筐
- 題目描述:
-
把一個個大小差一圈的筐疊上去,使得從上往下看時,邊筐花色交錯。這個工作現在要讓計算機來完成,得看你的了。
- 輸入:
-
輸入是一個個的三元組,分別是,外筐尺寸n(n爲滿足0<n<80的奇整數),中心花色字符,外筐花色字符,後二者都爲ASCII可見字符;
- 輸出:
-
輸出疊在一起的筐圖案,中心花色與外筐花色字符從內層起交錯相疊,多筐相疊時,最外筐的角總是被打磨掉。疊筐與疊筐之間應有一行間隔。
- 樣例輸入:
-
11 B A 5 @ W
- 樣例輸出:
-
AAAAAAAAA ABBBBBBBBBA ABAAAAAAABA ABABBBBBABA ABABAAABABA ABABABABABA ABABAAABABA ABABBBBBABA ABAAAAAAABA ABBBBBBBBBA AAAAAAAA @@@ @WWW@ @W@W@ @WWW@ @@@
#include<stdio.h>
int main(int argc, char* argv[])
{
int n;
char a,b;
bool konghang=false;
while(scanf("%d %c %c",&n,&a,&b)!=EOF)
{
if(konghang==false) konghang=true; //如果是輸出的第一組數據,則不輸出空行,否則輸出
else printf("\n");
int i,j,x,y;
char buf[80][80];
for(i=1,j=0;i<=(n/2+1);i++,j+=2) //i表示從裏到外的層數,j+1表示外框長度
{
x=n/2+1,y=x;
x-=i-1,y=x;
char c=(i%2==0)?b:a; //確定該位置的字符類型
buf[x][y]=c; //下面的循環不包含左上角的字符
for(int k=1;k<=j;k++)
{
buf[x][y+k]=c;
buf[x+k][y]=c;
buf[x+j][y+k]=c;
buf[x+k][y+j]=c;
}
}
//將四個角寫爲空格,注意只有n不爲1時才需要!!
if(n!=1)
{
buf[1][1]=' ';
buf[1][n]=' ';
buf[n][1]=' ';
buf[n][n]=' ';
}
//遍歷整個數組,將其打印出來
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
printf("%c",buf[i][j]);
}
printf("\n");
}
}
return 0;
}