【发布时间】:2018-09-02 05:38:31
【问题描述】:
所以我参加了 cs50 课程并从 pset 1 更多地解决了 mario.c
我实际上用 3 个 for 循环解决了它,但我想只用 2 个循环来重构它,我想出了这段代码,它为“height: 5”提供了以下解决方案
Result:
# #
## ##
### ###
#### ####
##### #####
#include <stdio.h>
int main(void)
{
int side = 5;
int max = side + 2;
for (int i = 1 ; i <= side ; i++)
{
int j = 1;
while(j != max+1)
{
if(j <= side-i)
{
printf(" ");
j++;
}
else if(j > side-i && j < side+1)
{
printf("#");
j++;
}
else if(j == side+1)
{
printf(" ");
j++;
}
else
{
printf("#");
j++;
}
}
max++;
printf("\n");
}
}
我想知道你们是否可以向我展示一个更优雅的解决方案,因为我认为这太……重复了。
另外,是否可以使用 switch case 来代替其他许多 if?试图这样做,但代码没有为 j 使用布尔值:(
提前致谢! :)
【问题讨论】:
-
如果是 C 语言,为什么还要用 Javascript 标记它??
-
抱歉误点击了错误的标签
-
如果代码有效,您可以在Code Review 上发帖。记得在询问之前阅读他们的帮助中心。
-
您不应在帖子中包含“感谢”。请参阅此元帖子:Should 'Hi', 'thanks', taglines, and salutations be removed from posts?