打印沙漏
以后再也不用为这种题恐惧了,真的恶习!
只需要输出沙漏前半部分的空格,后半部分没必要。
找到规律,先把空格打印完,然后打印字符,最后打印换行符。

#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;
}