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

菱形及其变形

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


前言

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

【C语言练习——打印菱形及其变形】_第1张图片

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

【C语言练习——打印菱形及其变形】_第2张图片


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;
}

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

【C语言练习——打印菱形及其变形】_第3张图片

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

//打印菱形,没有空格版
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;
}

结果见下图:

【C语言练习——打印菱形及其变形】_第4张图片

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;
}

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

【C语言练习——打印菱形及其变形】_第5张图片

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;
}

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

【C语言练习——打印菱形及其变形】_第6张图片

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;
}

结果见下图:

【C语言练习——打印菱形及其变形】_第7张图片

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;
}

结果见下图:

【C语言练习——打印菱形及其变形】_第8张图片


总结

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

  • 外循环、内循环的应用
  • 注意行数、空格数、符号*数之间的数学关系式

你可能感兴趣的:(C知识点的练习题,c语言,开发语言,学习,c++)