我正在编写用于打印棱锥体的代码。
他想创建一个函数,不仅要考虑金字塔的期望高度,还要考虑你想要打印的金字塔数量。在这里,我想使用递归。如果你只想把它们打印在一起,那么做起来相对容易。但是,如果我想把它们打印成并排、水平对齐而不是垂直对齐呢。
这是我的代码,它显然不能做到这一点,因为每个金字塔都从上一个金字塔下面开始,我不知道如何改变,有可能创建这样的函数吗?
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
# # # # # #
## ## ## ## ## ##
### ### ### ### ### ###
#### #### #### #### #### ####
##### ##### ##### ##### ##### #####
###### ###### ###### ###### ###### ######
####### ####### ####### ####### ####### #######
######## ######## ######## ######## ######## ########
######### ######### ######### ######### ######### #########
尝试一下,看看它是否符合你项目的精神。