【发布时间】:2015-02-13 13:56:06
【问题描述】:
所以我的任务是在 C 中创建一棵圣诞树,我知道这已经完成了,但是必须满足一些条件让我非常困惑,我什至不知道从哪里开始。
所以我们询问用户层数(层中有多少行),然后是层数。
现在,每一层中第一行之后的每一行都将在第一行的每一侧添加 2 个“*”(这只是一行带有一个“*”。)我们这样做直到层满足,然后开始下一层。当我开始新层时,我们从前一层的最后一层的每边减去 4( 2" * ",然后重复每边添加 1 "*" 的过程,直到层数满足(级别数是一开始就决定的,并且是恒定的。)
最后一部分是用“#”制成的宽度为 3、高度为 4 的树干完成。我不知道我应该如何设置这些循环,我会发布我到目前为止所做的(不多我不确定如何继续)
#include <stdio.h>
#include <stdlib.h>
int main(){
int levels;
int levelcount;
int layers;
int i;
int j;
printf(" How many levels should this tree have?\n");
scanf("%d\n", levels);
printf(" How many layers should this tree have?\n");
scanf("%d\n");
for (level = 0;level <= levelcount ; levelcount++){
}
return 0;
}
例如,具有 2 层 3 层的样本输出将是
*
***
*****
*
***
*****
###
###
###
###
下面是我现在所在位置的一些更新代码
#include <stdio.h>
#include <stdlib.h>
int main(){
int level;
int levelcount;
int layercount;
int layer;
int star;
int starcount;
int space;
int spacecount;
int spacenumber;
printf("How many levels should this tree have?\n");
scanf("%d\n", &level);
printf(" How many layers should this tree have?\n");
scanf("%d\n", &layer);
for (layer = 0;layer <= layercount ; layercount++){
star= 2*level - 1;
space= levelcount + level - star;
for (spacecount =0; spacecount <=spacenumber; spacecount++)
printf(" ");
for (starcount= 0; star < starcount; starcount++)
printf("%c" , '*');
for (levelcount=1; levelcount=1;levelcout++)
}
return 0;
}
【问题讨论】:
-
你能清除减法部分吗?什么应该是层,什么是关卡?也许你可以举个例子,树应该是什么样子。
-
层数是指减法前的行数,从下一层开始。所以它是“*”,然后我们添加 2,所以它是在前一行“* * *”的每一侧的另一个开始,我们继续在每一侧添加 2 个星,直到满足行数(或级别) .如果用户指定了更多层。我们从第一层的最后一行减去 4 个总“*”开始下一层(每边 2 个“*”。然后再继续,直到层的 nemer 相遇。
-
layers是一层的行数,layers是指打印的次数。所以一个 4 层有 3 行,将有 3 行打印 4 次,但是我们要在层中的每一行添加 2 星(*),直到下一层开始,我们最初将减去 4 星,并且然后在下一行的每一边加 1,直到层被重复,直到满足 for 层的 for 循环。
-
level 1( *) level 2( ***) level 3 ( *****) level 4 ( *******) 现在我们开始下一层所以第一行已移除 4 颗星(每侧 2 颗。(第 2 层,第 1 层(***)第 2 层,第 2 层,(*****)等等。
标签: loops for-loop while-loop tree nested