【PAT】B1027 打印沙漏(20 分)

#include<cstdio>
#include<stdlib.h>
char C='*';
int qiushu(int hang){//输入行数,求出字符数
int sum=1;
for(int i=3;i<=hang;i+=2){
sum+=(1+i/2*2)*2;
}
return sum;
}
void dayin(int hang){
for(int i=0;i<hang/2+1;i++){
for(int j=0;j<i;j++){
printf(" ");
} for(int k=0;k<(1+(hang/2-i)*2);k++){
printf("%c",C);
}
printf("\n");
}
for(int i=0;i<hang/2;i++){
for(int j=0;j<hang/2-i-1;j++){
printf(" ");
}
for(int k=0;k<((i+1)*2+1);k++){
printf("%c",C);
}
printf("\n");
}
}
int main(){
int N;
int hang=1;
scanf("%d %c",&N,&C);//输入总数和字符
while(!(qiushu(hang)<=N&&qiushu(hang+2)>N)){
hang+=2;
}//i是要打印的行号
dayin(hang);
printf("%d",N-qiushu(hang));
return 0;
}
上一篇:OAuth介绍


下一篇:transition过度