答案 0 :(得分:1)
这个问题的简短答案,第二个示例不显示块,因为在输出一行字符后您无法重置y = 0;
。如果与使用for
循环进行比较,则每次调用时,内部循环都以y == 0
开始。在您的while
循环实现中,y
永远不会重置。
您的代码的完整实现,需要根据需要重置y
:
#include <stdio.h>
#include <cs50.h>
void block (void) {
int w = get_int ("What would you like the width/height to be: "),
x = 0,
y = 0;
while (x++ < w) {
while (y++ < w)
putchar ('#');
putchar ('\n');
y = 0;
}
}
int main (void) {
block();
}
(注意:如果愿意,您可以将x
和y
的增量移出循环条件。还要注意'#'
的输出具有已从x
循环中删除,并且putchar()
已用于输出单个字符,而不是调用可变参量printf()
-尽管好的编译器会为您进行切换)< / p>
使用/输出示例
几个例子:
$ ./bin/square_while_cs50
What would you like the width/height to be: 5
#####
#####
#####
#####
#####
$ ./bin/square_while_cs50
What would you like the width/height to be: 10
##########
##########
##########
##########
##########
##########
##########
##########
##########
##########
(注意:,如果您实际上想使事物看起来像“方形”,则将putchar ('#');
替换为" #"
的字符串fputs (" #", stdout);
)
此外,请不要发布代码图片,而是将代码复制并粘贴到问题中,并以4个空格缩进,以便将其格式化为代码(或上下3个反引号)
让我知道您是否有疑问。