【发布时间】:2013-11-24 22:41:08
【问题描述】:
我正在学习哈佛在线 CS50 课程的一些初始问题集。我让问题正常工作,但我想知道是否有更清洁或更好的方法来让程序正常工作。
该程序的目标是打印由井号标签和空格字符组成的右对齐金字塔。非常欢迎任何有关风格或技巧的指导。
/* Creating the mario program, whose goal is to create a
* pyramid by accepting input from the user to get the
* height then aligning the pyrimid to the right.
*
*/
#include <stdio.h>
#include <cs50.h>
int main(void)
{
// get user input and set to variable
printf("Height: ");
int height = GetInt();
int i, j, k;
for(i = 1 ; i < height; i++)
{
// create n-1 spaces
for(k = (height - 2); k > (i-1); k--)
{
printf("%c", ' ');
}
// create n+1 hash tags
for(j = 0; j < (i+1); j++)
{
printf("#");
}
printf("\n");
}
return 0;
}
【问题讨论】:
-
问问自己,更清洁/更好是什么意思?在您看来,是什么让这个程序变得肮脏/糟糕。
-
除了来自@PreetSangha 的评论之外,我的建议是在刚开始时不要过于沉迷于代码的清洁度/效率。当您编写更复杂的程序时,您对简洁代码的渴望会自动发展,但编程最终是关于编写有效的、有用的程序。随着我们的程序变得更加复杂和资源密集,我们需要优化和提高效率
-
@leemo 优化和效率是,但可读性和基本的良好实践不是。
-
顺便说一下,这段代码在我看来还不错。除了多余的括号。 (而且我很少这么说。)
-
@H2CO3 - 同意,但我关于在完全理解这些概念之前不要沉迷于此的评论仍然有效。