72:打印任意行数的菱形;//输入行数,回车进行打印

前言:

        那这作为我的第二篇博客,在此分享下关于任意行数菱形的打印。

        首先说明一点,关于菱形我们不难发现,只有当总行数line 为奇数时才可打印菱形。当总行数为偶数时则在最中间会出现长度相同的两行,并非为一个相对完美的菱形。下面提供一种实现方法:

代码部分:

int main()
{
	int line = 0;
	scanf("%d", &line);        //获取打印总行数;
	int i = 0;	
	for (i = 0; i <= (line/2-1); i++)	//打印上半部分,i 每+1 则打印一行;
	{
		int j = 0;
		for (j = 0; j <= (line / 2 - 1 - i); j++)    //j 用于控制此行打印两种内容的数量
		{
			printf(" ");
		}
		for (j = 0; j <= (i * 2); j++)
		{
			printf("X");
		}
		printf("\n");
	}
	if (line % 2 != 0)        //若为偶数则不执行,不然会打印偶数加一行;
	{
		for (i = 0; i <= line - 1; i++)	//中部
		{
			printf("X");
		}
		printf("\n");
	}
	for (i = (line / 2 - 1); i >= 0; i--)	//下部;同上
	{
		int j = 0;
		for (j = 0; j <= (line / 2 - i - 1); j++)
		{
			printf(" ");
		}
		for (j = 0; j <= (i * 2); j++)
		{
			printf("X");
		}
		printf("\n");
	}
}

分析:

        对于上述代码,我将菱形分为上、中、下三个区域打印。上部区域可以发现空格数为

(line / 2 - 1 - i),因为至少会有一个菱形故而”-1“ ,又因为每一行的空格数由上至下递减,便借助”i“ 来完成。下部空格与之同理。不难发现,每一行的”X“ 的数量为(2*i+1)个,最中间行数量与奇数本身相同,偶数没有中间行。

OK,that's all.

Bye.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值