是否可以创建一个函数来打印多个金字塔,这些金字塔位于另一个金字塔的旁边,而不是在另一个棱锥的下面



我正在编写用于打印棱锥体的代码。

他想创建一个函数,不仅要考虑金字塔的期望高度,还要考虑你想要打印的金字塔数量。在这里,我想使用递归。如果你只想把它们打印在一起,那么做起来相对容易。但是,如果我想把它们打印成并排、水平对齐而不是垂直对齐呢。

这是我的代码,它显然不能做到这一点,因为每个金字塔都从上一个金字塔下面开始,我不知道如何改变,有可能创建这样的函数吗?

piramida (int n,int broj)
{
int i=0;
int y=0;
int z=0;
int b=1;
int c=n;
for(i=0;i<n;i++)
{
for(z=0;z<c-1;z++)
{
printf(" ");
}
for(y=0;y<b;y++)
{
}
for(y=0;y<b;y++)
{
printf("#");
}
printf("  ");
for(y=0;y<b;y++)
{
printf("#");
}
printf("n");
b++;
c--;
}

if(broj>0)
{
piramida(n,broj-1);
}

else printf(" ");
}
int main()
{

piramida(9,2);
}

如果您引入了另一个for循环,那么应该允许相邻打印金字塔。下面是一个原理验证示例,它使用了附加级别的代码。

#include <stdlib.h>
#include <stdio.h>
void piramida (int n,int broj)
{
int i=0;
int y=0;
int z=0;
int b=1;
int c=n;
for(i=0; i<n; i++)
{
for (int j = 0; j < broj; j++)    /* Additional loop level */
{
for(z=0; z<c-1; z++)
{
printf(" ");
}
for(y=0; y<b; y++)
{
}
for(y=0; y<b; y++)
{
printf("#");
}
printf("  ");
for(y=0; y<b; y++)
{
printf("#");
}
for (int k = 0; k < (12 - i); k++)
{
printf(" ");   /* This prints the needed spacing for each line */
}
}
printf("n");
b++;
c--;
}
printf(" ");
}
int main()
{
piramida(9,3);
return 0;
}

在我的终端上测试的结果如下。

@Una:~/C_Programs/Console/Pyramids/bin/Release$ ./Pyramids 
#  #                    #  #                    #  #            
##  ##                  ##  ##                  ##  ##           
###  ###                ###  ###                ###  ###          
####  ####              ####  ####              ####  ####         
#####  #####            #####  #####            #####  #####        
######  ######          ######  ######          ######  ######       
#######  #######        #######  #######        #######  #######      
########  ########      ########  ########      ########  ########     
#########  #########    #########  #########    #########  #########    

尝试一下,看看它是否符合你项目的精神。

最新更新