菱形的打印

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

菱形的打印

  • 前言
    • 菱形的打印是对于初学者对for循环结构嵌套的考察,学会了菱形的打印基本也就掌握了for循环结构的嵌套,下面让我们一起看看吧~
  • 一、如何去打印菱形?
  • 二、思考路径
    • 1.正方形
    • 2.三角形
    • 3.倒三角形
    • 4.终极目标菱形
  • 总结


前言

菱形的打印是对于初学者对for循环结构嵌套的考察,学会了菱形的打印基本也就掌握了for循环结构的嵌套,下面让我们一起看看吧~

一、如何去打印菱形?

我们要思考菱形的打印都需要打印写什么?首先肯定要打印形状,可是空余的地方怎么办呢?当然是空格。很好我们现在有了基本的思路,让我们一起用for循环结构实现一下吧~

二、思考路径

以便于我们能更快熟悉for循环结构的嵌套,我们先一步步打印一些简单的图形,如正方形,三角形和倒三角形。

1.正方形

菱形的打印_第1张图片
首先我们观察他输入4,出现一个4x4的正方形,并且每个 * 之间都有一个空格,让我们也实践一下吧
代码如下(示例):

#include<stdio.h>
int main()
{
	int n = 0;
	int i, j;
	scanf_s("%d", &n);
	for(i=1;i<=n;i++)
	{ 
		for (j = 1; j <= n; j++)//一行一行打印,先是第一行,然后换行打印
		                          
		{
			printf("* ");
		}
		printf("\n");
	}
	return 0;
}

编译结果如下:
菱形的打印_第2张图片
我们利用投机取巧的方法在打印的时候 * 后面直接加了空格,避免了再次交替打印空格实现了正方形的打印,这种方法也是可行的。实际上在打印这种图形是我们可以用这种方法来实现,因为实现相同的结果,代码越简便运行速度越快。

2.三角形

菱形的打印_第3张图片
首先我们先观察一下,第一行一个 * ,第二行两个 * 依次递增,同一行每两个 * 空一格,那我们就可以看出,其实第一行是先打印了三个空格,然后再打印了一个 * ,后面一个递增一个递减,这样我们就有了思路,先打印空格,在打印 * ,然后依次变化,达到我们想要的效果。
代码如下(示例):

#include<stdio.h>
int main()
{
	int a, b, c;
	scanf_s("%d", &a);
	for (b = 1; b <= a; b++)
	{
		for (c = 1; c <= (a - b); c++)
		{
			printf(" ");//先打印空格
		}
		for (c = 1; c <= b; c++)
		{
			printf("* ");//再打印 *
		}
		printf("\n");
	}
	return 0;
}

编译结果如下:
菱形的打印_第4张图片
我们可以看出其中利用for循环嵌套,先打印空格,再打印 * ,实现了三角形的打印,其中最重要的时for循环嵌套和判断条件的选择,利用变量达到循环体的运行。

3.倒三角形

菱形的打印_第5张图片

首先我们观察一下这个图形,第一行没有打印空格,而是从第二行开始打印空格的,所以我们要根据要求改变判断条件来实现倒三角的打印。
代码示例如下:

#include<stdio.h>
int main()
{
	int i, j;
	int n = 0;
	scanf_s("%d", &n);
	for (i = 1; i <= n; i++)
	{
		for (j = 1; j <= i; j++)
		{
			printf(" ");//输出空格
		}
		for (j = 1; j <= (n-i+1); j++)
		{
			printf("* ");//输出*
		}
		printf("\n");
	}
	return 0;
}

编译结果如下:
菱形的打印_第6张图片
其实我们不难看出,倒三角形的打印和三角形步骤差不多,都是for循环嵌套,而其中不一样的是参数的改变,输出空格时,我们可以让输出空格的for循环结构中的,判断条件改变以达到输出空格的个数,如图代码条件为i<=j,其实这里变相输出了一个空格给每一行但这是不会印象我们倒三角形的打印,如果不想输出这个空格,可以改为j

4.终极目标菱形

菱形的打印_第7张图片
首先我们观察一下图片,我们会发现,其实菱形是由两部分组成的三角形和倒三角形,我们可以把它们分开来看,把他分为两个工序,打印三角形和倒三角形,有了思路我们一起实践吧
代码示例如下:

#include<stdio.h>
int main()
{
	int i, j;
	int n = 0;
	printf("输入一个数字产生相对应菱形:");
	scanf_s("%d", &n);
	//首先做出最上面的n行
	for (i = 1; i <= n; i++)
	{
		for (j = 1; j <= n-i+2; j++)
		{
			printf(" ");//输出空格
		}
		for (j = 1; j <=i; j++)
		{
			printf("* ");//输出*
		}
		printf("\n");
	}
	//其次再做出下面的n+1行
	for (i = 1; i <= n+1; i++)
	{
		for (j = 1; j <= i; j++)
		{
			printf(" ");//输出空格
		}
		for (j = 1; j <= n - i + 2; j++)
		{
			printf("* ");//输出*
		}
		printf("\n");
	}
	return 0;
}

编译结果如下:
菱形的打印_第8张图片
从代码我们可以出我们把工序分为了两部分,其中一部分呢是打印三角形,一部分是打印倒三角形,我们把两个放到一起实现了菱形的打印

总结

今天对于菱形的打印我们就介绍到这里了,其实带你菱形最重要的就是,熟练掌握for循环的嵌套和对判断体哦阿健的改变,两者同样重要,在我看来这个题目主要是考,编程者对于思维的转化和思维的灵活能力,所以碰到题目我们要一步步与思考,把一个较复杂的问题分解为一个个简单的问题,最后逐个击破,希望大家看本章后能够熟练打印出菱形,感谢观看~

你可能感兴趣的:(C语言初阶习题,算法,c++,c语言)