PAT-乙级B1027-打印沙漏(有坑)

#include 

void out(int n, int m, char c) {
    int i;
	for (i=0; i<(n-m)/2; i++) printf(" ");
	for (i=0; i1; i-=2) out(m, i, c);       //输出沙漏上半部分
	for (i=1; i<=m; i+=2) out(m, i, c);     //输出沙漏下三角
	printf("%d\n", n-(sum-2*(m+2)));       //打印多余的*个数
}

1、主要有两点,一是计算出沙漏的宽度,二是将沙漏的形式打印出来。这里采用模拟沙漏的层数增加方式来计算宽度,写了一个函数来逐行打印沙漏。

2、这题有一个坑就是沙漏右边区域的空格不要打印出来,即不要输出多余空格,画蛇添足。

你可能感兴趣的:(PAT-c语言)