其他分享
首页 > 其他分享> > C语言实现打印菱形和心形

C语言实现打印菱形和心形

作者:互联网

C语言实现打印菱形和心形

说明

代码中变量命名可能不太规范,部分过程和注释可能略显冗余,仅供大家参考(^ _ ^)

运行环境

Visual Studio 2019

1.打印实菱形

代码

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>

int main() 
{
	int height;//记录要打印的菱形的高度
	printf("请输入要打印菱形的高度:");
	scanf("%d", &height);
	int i,j;//用于循环判断的两个变量,i为外层循环变量,j为内层循环变量
	int k = height / 2 + 1;//记录菱形中间层数的位置,也是层中存在的*最大数量
	int m= k;//用于记录每层最左侧*的位置
	int n;//用于标记每层的*的位置
	int num;//记录每层的*的数量
	printf("------------\n");
	printf("菱形打印如下\n");
	for (i = 1; i <= height; i++) 
	{
		n = m;//将每层第一个*的位置赋给n
		num = i;
		if (num > k) 
		{//当num的值超过层中存在的*最大数量时
			num = height - num + 1;
		}
		for (j = 1; j <= height; j++) 
		{
			if (j == n) 
			{
				printf("*");
				num--;//每打印一个*,num数减小1
				if (num != 0) 
				{//如果当前层还存在未打印的*,则将n移到下一个要打印*的位置(同一层中每个*相隔2个)
					n += 2;
				}
			}
			else 
			{
				printf(" ");
			}
		}
		if (i < k) 
		{//当i小于k时,此时每层最左侧*的位置加1,否则减1
			m--;
		}
		else 
		{
			m++;
		}
		printf("\n");//打印一个换行符
	}
	return 0;
}

运行结果
打印实菱形

2.打印空心菱形

代码

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>

int main()
{
	int height;//记录要打印的菱形的高度
	printf("请输入要打印菱形的高度:");
	scanf("%d", &height);
	int i, j;//用于循环判断的两个变量,i为外层循环变量,j为内层循环变量
	int k = height / 2 + 1;//记录菱形中间层数的位置
	int left = k;//定义左指针变量,用来记录每一行中左*的位置
	int right = left;//定义右指针变量,用来记录每一行中右*的位置
	printf("------------\n");
	printf("菱形打印如下\n");
	for (i = 1; i <= height; i++)
	{
		for (j = 1; j <= height; j++)
		{
			if (j == left || j == right)
			{
				printf("*");
			}
			else
			{
				printf(" ");
			}
		}

		if(i >= k)
		{
			left++;
			right--;
		}
		else
		{
			left--;
			right++;
		}

		printf("\n");//打印一个换行符
	}
	return 0;
}

运行结果
打印空心菱形

3.打印心形

代码

#include<stdio.h>
#include<stdlib.h>

int main()
{
	int i,j;//用于循环自增的两个变量
	int max_width = 19;
	int l1, l2;//标记上三层的两个三角形状的两个左指针(最左边*)的位置
	l1 = 4, l2 = 14;//记录两个指针的初始位置
	int a1, a2;//记录上三层的两个三角形中各自*的位置
	int count1, count2;//表示上三层每一个三角形状图形在每层中*的数量
	for (i = 1; i <= 3; i++)//先打印上三层
	{
		a1 = l1;
		a2 = l2;
		count1 = i + 1;
		count2 = i + 1;
		for (j = 1; j <= max_width; j++)
		{
			if(j == a1)
			{
				printf("*");
				count1--;
				if(count1 != 0)
				{
					a1 += 2;
				}
			}
			else if(j == a2)
			{
				printf("*");
				count2--;
				if (count2 != 0)
				{
					a2 += 2;
				}
			}
			else
			{
				printf(" ");
			}
		}
		printf("\n");
		l1--;
		l2--;
	}
	int k = 1;//记录下三角区域左指针的位置(最左边*)
	int m;//记录下三角区域每层*的位置
	int count3, count4;//表示下三角形状图形在每层中*的数量
	count3 = (max_width + 1) / 2;//下三角区域第一层*的个数为(最大宽度+1)除以2
	for (i = 1; i <= 10; i++)//再打印下三角区域
	{
		m = k;
		count4 = count3;
		for (j = 1; j <= max_width; j++)
		{
			if (j == m)
			{
				printf("*");
				count4--;
				if (count4 != 0)
				{
					m += 2;
				}
			}
			else
			{
				printf(" ");
			}
		}
		printf("\n");
		count3 --;
		k++;
	}
	return 0;
}

运行结果
打印心形

标签:num,int,心形,打印,C语言,--,菱形,printf
来源: https://blog.csdn.net/weixin_41938785/article/details/114439608