打印沙漏
以后再也不用为这种题恐惧了,真的恶习!
只需要输出沙漏前半部分的空格,后半部分没必要。
找到规律,先把空格打印完,然后打印字符,最后打印换行符。
#include<cstdio>
#include<cmath>
int main(){
int n;
char c;
scanf("%d %c",&n,&c);
int r = sqrt((n+1)/2);
int res = n - 2*r*r + 1;
//打印细节
//倒三角
for(int i=0;i<r;i++){
for(int j=0;j<i;j++) printf(" ");
for(int j=0;j<2*r-1-2*i;j++) printf("%c",c);
printf("\n");
}
//正三角
for(int i=1;i<r;i++){
for(int j=0;j<r-1-i;j++) printf(" ");
for(int j=0;j<2*i+1;j++) printf("%c",c);
printf("\n");
}
printf("%d",res);
return 0;
}