===================================================================
首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。
===================================================================
19 *
===================================================================
2
===================================================================
**①我们观察题目要求输出图形是漏斗形状,分为一上一下两半部分,单看上半部分规律是:1,3,5,7,9…;但看下半部分也是同样规律。
②而且,注意图形中空格的话,我们只需要考虑左边部分的空格,右边部分的可以通过每输出一行就换行实现。
③所以,思路明了,最先做的是要计算出输入个数个的*可以排多少层。**
======================================================================
#include <stdio.h>
int main()
{
int n;
char a;
scanf(“%d %c”,&n,&a);
int sum = 1; //所需*个数
int i = 1; //上半部分层数
while(sum<=n) //此处通过每行图形的规律计算出给定个数的*可以排几层
{
sum+=2*(2*(i+1)-1); //第一层是一个*,初始化时已经给出。每行的个数的规律是:2n-1,但是上下两半部分,所以整体乘2
if(sum<=n)
i++;
}
//输出上半部分
int j,k;
for(j=0;j<i;j++) //j<i是上半部分层数,控制上半部分层数
{
for(k=0;k<j;k++) //输出空格,上半部分空格个数和行数有关,第一行0个;第二行1个。
{
printf(" ");
}
for(k=0;k<(2*(i-j)-1);k++) //输出*,上半部分总层数为i层,通过(i-j)控制3,5,7,9…反过来输出为9,7,5,3…
{
printf(“%c”,a);
}
printf(“\n”);
}
//输出下半部分
for(j=2;j<=i;j++) //下半部分少了第一层,直接从第二层开始。最大层数为上半部分层数
{
for(k=0;k<i-j;k++) //空格的个数依然和层数有关。总层数-目前层数即为空格个数
{
printf(" ");
}
for(k=0;k<2*j-1;k++) //*个数直接按规律输出:1,3,5,7…
{
printf(“%c”,a);
}
printf(“\n”);
}
printf(“%d”,(n-(sum-2*(2*(i+1)-1)))); //注意:计算层数的循环中sum+=2*(2*(i+1)-1)可能会多加一次,也就是多加两层的*的个数。
}
=========================================================================
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)
c1008edf79.png)
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)