例题1:
#include<stdio.h>
int main(){
int h;
while(scanf("%d",&h)!=EOF){
int maxline=h+(h-1)*2;//最后一行包含的星号个数
for(int i=1;i<=h;i++){
for(int j=1;j<=maxline;j++){
if(j<maxline-h-(i-1)*2+1)
printf(" ");
else
printf("*");
}
printf("\n");
}
}
}
例题2:
找规律。规律如下图所示:
#include<stdio.h>
int main(){
int outputbuf[82][82];//用于预排版的输出缓存
char a,b;
int n;
bool firstcase=true;
while(scanf("%d %c %c",&n,&a,&b)==3){
if(firstcase==true){
firstcase=false;
}
else printf("\n");
for(int i=1,j=1;i<=n;i+=2,j++){//从里到外输出每个圈
int x=n/2+1,y=x;
x-=j-1;y-=j-1;
char c=j%2==1 ?a:b;
for(int k=1;k<=i;k++){ //对当前圈的上、下、左、右边赋值
outputbuf[x+k-1][y]=c;
outputbuf[x][y+k-1]=c;
outputbuf[x+i-1][y+k-1]=c;
outputbuf[x+k-1][y+i-1]=c;
}
}
if(n!=1){
outputbuf[1][1]=' ';
outputbuf[n][1]=' ';
outputbuf[1][n]=' ';
outputbuf[n][n]=' ';
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
printf("%c",outputbuf[i][j]);
}
printf("\n");
}
}
}