类型一:对于输出有规律的
例 九度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;
}