打印任意大小的菱形

#include <stdio.h>
#include <stdlib.h>
void PrintLine(int blank_count, int star_count) {
	for (int i = 0; i < blank_count; ++i) {
		printf(" ");
	}
	for (int i = 0; i < star_count; ++i) {
		printf("*");
	}
	printf("\n");
}
void PrintLingxing(int height) {
	// 用对角线的一般衡量菱形的大小
	// 先打印上半部分
	for (int i = 1; i <= height; ++i) {
		PrintLine(height+1 - i, 2 * i - 1);
	}
	// 再打印中间部分
	PrintLine(0, 2 * (height+1) - 1);
	// 打印下半部分
	for (int i = height; i >= 1; --i) {
		PrintLine((height+1) - i, 2 * i - 1);
	}
}
int main() {
	// i行  height+1-i 空格,2*i-1 星号
	int height = 0;
	scanf_s("%d", &height);
	PrintLingxing(height);
	system("pause");
	return 0;
}

        需要注意的是:打印之前先找规律,每一行的空格数和星星(*)数都是如何确定的。菱形的上半部分和下半部分是对称的,中间再加上了一条对角线。所以可以将打印上半部分的代码用函数封装起来,打印上半部分和下班部分的时候直接调用,因为上下是对称的,所以只需把上半部分的循环反过来书写即可。blank_count表示空格数,star_count表示星星数,而此时用height这个指标来衡量菱形的大小(长对角线一般的长度)。

下图是输入数字6得到的菱形的图案:

猜你喜欢

转载自blog.csdn.net/qq_43508801/article/details/83992402