栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C语言练习——打印菱形及其变形】

C/C++/C# 更新时间:发布时间: 百科书网 趣学号

菱形及其变形
  • 前言
  • 1、打印菱形——中间对齐版
  • 2、打印菱形——上左下左对齐版
  • 3、打印菱形——上右下右对齐版
  • 4、打印菱形——上左下右对齐版
  • 5、打印菱形——上右下左对齐版
  • 总结


前言

菱形是一种特殊的平行四边形,定义见百度百科

本文主要是写关于菱形的练习题,在屏幕上打印菱形。


1、打印菱形——中间对齐版

上一篇练习过打印上三角、下三角,因此,将打印上三角中间版、下三角中间版的代码合并可打印出菱形:

int main()
{
	int n = 0;
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
	{
		int j = 0;
		for (j = 0; j < n - 1 - i; j++)
		{
			printf(" ");
		}
		//打印*
		for (j = 0; j < 2 * i + 1; j++)
		{
			printf("*");
		}
		printf("n");
	}
	//打印下半部分 
	for (int i = 0; i < n; i++)
	{

		int j = 0;
		for (j = 0; j <= i; j++)
		{
			printf(" ");
		}
		//打印*
		for (j = 0; j < (2*n - 1 - i* 2 ); j++)
		{
			printf("*");
		}
		printf("n");
	}
	return 0;
}

结果见下图,中间两行有错位:

因此不能简单的合并,对下三角的代码进行修改:

//打印菱形,没有空格版
int main()
{
	int n = 0;
	scanf("%d", &n);
	//打印上半部分 n
	for (int i = 0; i < n; i++)
	{
		//打印一行
		//打印空格
		int j = 0;
		for (j = 0; j < n - 1 - i; j++)
		{
			printf(" ");
		}
		//打印*
		for (j = 0; j < 2 * i + 1; j++)
		{
			printf("*");
		}
		printf("n");
	}
	//打印下半部分 n-1
	for (int i = 0; i < n - 1; i++)
	{
		//打印一行
		//打印空格
		int j = 0;
		for (j = 0; j <= i; j++)
		{
			printf(" ");
		}
		//打印*
		for (j = 0; j < (n - 1 - i) * 2 - 1; j++)
		{
			printf("*");
		}
		printf("n");
	}
	return 0;
}

结果见下图:

2、打印菱形——上左下左对齐版
//打印菱形,上左 下左版
int main()
{
	int n = 0;
	scanf("%d", &n);
	//打印上半部分 	
	for (int i = 0; i < n; i++)
	{
		int j = 0;
		//打印*
		for (j = 0; j < 2 * i + 1; j++)
		{
			printf("*");
		}
		printf("n");
	}
	//打印下半部分 
	for (int i = 0; i < n - 1; i++)
	{
		int j = 0;
		//打印*
		for (j = 0; j < (n - 1 - i) * 2 - 1; j++)
		{
			printf("*");
		}
		printf("n");
	}
	return 0;
}

结果见下图,上下三角都是左对齐,实际就是一个三角形了:

3、打印菱形——上右下右对齐版
//打印菱形, 上右下右对齐版
int main()
{
	int n = 0;
	scanf("%d", &n);
	//打印上半部分 n
	for (int i = 0; i < n; i++)//一共n行
	{
		int j = 0;
		for (j = 0; j < (2 * n - 1) - (2 * i + 1); j++)//每一行开始打印几个空格
		{
			printf(" ");
		}
		//打印*
		for (j = 0; j < 2 * i + 1; j++)//每一行打印几个 *
		{
			printf("*");
		}
		printf("n");//换行
	}
		//打印下半部分 
	for (int i = 0; i < n-1; i++)
	{
		//打印一行
		//打印空格
		int j = 0;
		for (j = 0; j <= 2*i+1; j++)
		{
			printf(" ");
		}
		//打印*
		for (j = 0; j < (n - 1 - i) * 2 - 1; j++)
		{
			printf("*");
		}
		printf("n");
	}
	return 0;
}

结果见下图,上下三角都是右对齐,实际也是一个三角形了:

4、打印菱形——上左下右对齐版
//打印菱形, 上左下右对齐版
int main()
{
	int n = 0;
	scanf("%d", &n);
	//打印上半部分 	
	for (int i = 0; i < n; i++)
	{
		int j = 0;
		//打印*
		for (j = 0; j < 2 * i + 1; j++)
		{
			printf("*");
		}
		printf("n");
	}
	//打印下半部分 n-1
	for (int i = 0; i < n - 1; i++)
	{
		//打印一行
		//打印空格
		int j = 0;
		for (j = 0; j <= 2 * i + 1; j++)
		{
			printf(" ");
		}
		//打印*
		for (j = 0; j < (n - 1 - i) * 2 - 1; j++)
		{
			printf("*");
		}
		printf("n");
	}
	return 0;
}

结果见下图:

5、打印菱形——上右下左对齐版
//打印菱形, 上右下左对齐版
int main()
{
	int n = 0;
	scanf("%d", &n);
	//打印上半部分 n
	for (int i = 0; i < n; i++)//一共n行
	{
		//打印一行
		//打印空格
		int j = 0;
		for (j = 0; j < (2 * n - 1) - (2 * i + 1); j++)//每一行开始打印几个空格
		{
			printf(" ");
		}
		//打印*
		for (j = 0; j < 2 * i + 1; j++)//每一行打印几个 *
		{
			printf("*");
		}
		printf("n");//换行
	}
		//打印下半部分 n-1
	for (int i = 0; i < n-1; i++)
	{
		//打印一行
		//打印空格
		int j = 0;
		//打印*
		for (j = 0; j < (n - 1 - i) * 2 - 1; j++)
		{
			printf("*");
		}
		printf("n");
	}
	return 0;
}

结果见下图:


总结

本文练习打印菱形及其变形,主要练习了:

  • 外循环、内循环的应用
  • 注意行数、空格数、符号*数之间的数学关系式
转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/925402.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号