【C语言】打印一个爱心

1、爱心代码与输出

#include<stdio.h>
int main()
{
	char a = '*';//定义字符
	int i = 0;//定义第一部分行数
	int j = 0;
	int m = 9;//定义起始一半'*'的数量(爱心是左右对称的)
	int n = 20;//定义起始最左边空格的数量
	//打印三行空格更美观
	for (j = 0; j < 3; j++)
		printf("\n");
	//打印第1、2行
	for (i = 0; i < 2; i++)
	{
		int j = 0;
		n = n - (4 * i);
		m = m + 8 * i;

		for (j = 0; j < n ; j++)
		{
			printf(" ");
		}
		
		for (j = 0; j < m; j++)
		{
			printf("%c", a);
		}

		for (j = 11; j >(0 + 8*i); j--)
		{
			printf(" ");
		}

		for (j = 0; j < m; j++)
		{
			printf("%c", a);
		}
		printf("\n");//一行结束换行
	}
	//打印第3行
	n = n - 2;

	for (j = 0; j < n ; j++)
	{
		printf(" ");
	}
	int b = 0;
	b = 2*(m+2)+3;//定义变量b为第三行'*'的数量

	for (j = 0; j < b; j++)
	{
		printf("%c", a);
	}
	printf("\n");//一行结束换行
	//打印第4、5行
	for (i = 0; i < 2; i++)
	{
		n = n - 1;//最左端空格的数量
		b = b + 2;//整行'*'的数量

		for (j = 0; j < n; j++)
		{
			printf(" ");
		}

		for (j = 0; j < b; j++)
		{
			printf("%c", a);
		}
		printf("\n");//一行结束换行
	}
	//打印第6~第10行
	for (i = 0; i < 5; i++)
	{
		for (j = 0; j < n; j++)
		{
			printf(" ");
		}

		for (j = 0; j < b; j++)
		{
			printf("%c", a);
		}
		printf("\n");//一行结束换行
	}
	//打印后面的第11行~第17行
	for (i = 0; i < 6; i++)
	{
		n = n + 1;//让后面每行的空格数加1个
		b = b - 2;//让后面每行的'*'数加2个
		for (j = 0; j < n; j++)
		{
			printf(" ");
		}
		for (j = 0; j < b; j++)
		{
			printf("%c", a);
		}
		printf("\n");//一行结束换行
	}
	for (i = 0; i < 20; i++)//先判断条件为i<20,后利用break跳出for循环
	{
		n = n + 2;//让后面每行的空格数加2个
		b = b - 4;//让后面每行的'*'数减4个
		for (j = 0; j < n; j++)
		{
			printf(" ");
		}
		for (j = 0; j < b; j++)
		{
			printf("%c", a);
		}
		printf("\n");//一行结束换行
		if(b <= 1)//利用break跳出for循环
		break;
	}
	return 0;
}

在这里插入图片描述

2、逐句分析

(1)起始空三行

在这里插入图片描述

(2)打印第1、2行

在这里插入图片描述

在这里插入图片描述

(3)打印第三行

在这里插入图片描述
在这里插入图片描述

(4)打印第4、5行

在这里插入图片描述
在这里插入图片描述

(5)打印第6~第10行

在这里插入图片描述
在这里插入图片描述

(6)打印后面的第11行~第17行

在这里插入图片描述
在这里插入图片描述

(7)打印后面的行

在这里插入图片描述
在这里插入图片描述


版权声明:本文为qq_67233808原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。