C语言打印菱形

2024-01-23 14:54:15 浏览数 (1)

题目:

很多初学者在看到这一幕可能已经懵了,最大的问题是不知该如何下手,我在之前的作品中一直提到过,实现一个功能需要很多步骤的,如果想一步到位的话,那对我们的编程思维来说是很难做到的。学习编程的过程是由简到难的,下面我就带着各位一步一步来实现。

1.解题思路

1.由图可知,这个菱形最远端的距离为13个*,从上到下一共13行,从星的个数开始分析,第一行一个,随后往下递增2,当达到13个时,又开始递减2直到一个,我们可以从图形的每一行坐标与个数的关系开始入手,可以得知,每一行的最大个数是13,第一行是一个,相当于用13个减12个,而12由等于个数最多的坐标与第一行的差值的两倍,这样有点牵强?接着看,第二行,个数为3,它与第七行(个数为13个的行)的差值*2=10;13-10=3,刚好等于它这一行的个数这样我们就找到规律了,即每一行的个数等于13-2*(行坐标的差值),别着急,当你写上去后,你会发现,是个三角形,没错,它还得需要空格才能打印出一个完整的菱形。这里看看空格的个数,还是基于上面的思路,找与行坐标的关系,第0行(计算机表示)6个,第一行5个,直到第6行0个,然后第七行1个,会发现,空格的个数等于行坐标的差值。这样是不是就一目了然了?

2.实现代码

代码语言:javascript复制
#include<stdio.h>
#include<stdlib.h>



int main(){
	for(int i=0;i<13;i  ){
		int a_num=13-2*abs(6-i);
		int b_num=abs(6-i);
		for(int j=0;j<b_num;j  ) printf(" ");
		for(int j=0;j<a_num;j  ) printf("*");
		printf("n");
		
		
	}
	return 0;
}

abs函数:求出两者的差值(绝对值),这里需要导入stalib.h头文件,如果需要自定义菱形的长,只需要将13的位置改为所输入的值即可。 

0 人点赞