前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言打印菱形

C语言打印菱形

作者头像
对编程一片赤诚的小吴
发布2024-01-23 14:54:15
1380
发布2024-01-23 14:54:15
举报

题目:

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

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的位置改为所输入的值即可。 

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-01-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.解题思路
  • 2.实现代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档