我刚刚开始 CS50 课程,目前没有编码经验,我觉得我做得“还好”,但是我正在尝试完成创建“右对齐金字塔”的附带任务,因为我已经完成了我认为的左对齐金字塔这很容易,但我正在努力思考需要做什么。
你能帮忙吗 - 理想情况下寻找代码的更新以及它如何影响结果,而不仅仅是答案,因为我想了解更改和推理。
#include \<cs50.h\>
#include \<stdio.h\>
void print_row(int length);
int main(void)
{
int height = get_int("Height: ");
for (int i = 0; i \< height; i++)
{
print_row(i + 1);
}
}
void print_row(int length)
{
for (int g = 0 ; g \< length; g++)
{
printf(" ");
}
for (int h = 0; h \< length; h++)
{
printf("#");
}
printf("\\n");
}
我意识到您只是想要评论中的一些指示,而不是完整的答案,但由于我似乎没有在这里传达思考过程,所以让我提供用于打印所需高度的金字塔的代码的重构版本基于您包含的代码。以下是重构后的代码。
#include <stdio.h>
#include <stdlib.h>
void print_row(int length, int ht)
{
for (int g = 0 ; g < (ht - length); g++) /* Print needed spaces for the padding based upon the requested height */
{
printf(" ");
}
printf("/"); /* Print the left leaning slash prior to printing hash character(s) */
for (int h = 0; h < (length * 2 - 1); h++)
{
printf("#"); /* Print the correct amount of hash characters based upon height */
}
printf("\\\n"); /* Finish up with printing the right leaning backslash */
}
int main(void)
{
int height;
printf("Height: "); /* Don't have CS50 installed - so just use a prompt and scanf */
scanf("%d", &height);
for (int i = 0; i < height; i++)
{
print_row(i + 1, height);
}
return 0;
}
以下是我试图谈论的一些观点,评论中也指出了这一点。
以下是一个快速示例测试,我认为这是基于我之前处理过的“打印金字塔”问题的所需输出。
craig@Vera:~/C_Programs/Console/Pyramid_CS50/bin/Release$ ./Pyramid_CS50
Height: 3
/#\
/###\
/#####\
craig@Vera:~/C_Programs/Console/Pyramid_CS50/bin/Release$ ./Pyramid_CS50
Height: 6
/#\
/###\
/#####\
/#######\
/#########\
/###########\
我在这里看到的要点可能是深入研究可用的“C”教程文献,无论是已出版的还是在线的,并更加熟悉诸如反斜杠转义组合之类的东西。