当我打印出金字塔时,金字塔的最后一行或底部会打印出一个整数,该整数表示多少个哈希值,而不是一串哈希值。
像这样:
高度:3
#
##
3
当应为:
Height 3:
#
##
###
我应该根据用户的输入来打印金字塔的高度,但是不是将基数打印为字符串,而是打印基数应为多少个哈希的整数。我知道这是因为我要返回n,但我不知道如何以仍然返回循环的方式进行处理。
我尝试将类更改为void而不是int,但是由于类型冲突,这会引发错误。我想我应该打印出一个空字符串,但它会弄乱我的范围。
#include <cs50.h>
#include <stdio.h>
int get_height(string prompt);
int main(void)
{
int ask = get_height("Height: ");
printf("%i\n", ask);
}
int get_height(string prompt) {
int n;
do {
n = get_int("%s", prompt);
}
while (n < 1 || n > 8);
for (int i = 0; i < n; i++) {
for (int j = 0; j < i; j++) {
printf("#");
}
printf("\n");
}
return n;
}
答案 0 :(得分:2)
输出的最后一行是高度,因为这是main
函数中打印的最后一件事:
printf("%i\n", ask);
get_height
实际上只会打印n-1
行,因为跳过了第一次迭代(i = 0,j = 0)。
答案 1 :(得分:0)
应该输出3
问题是这个陈述;
for (int j = 0; j < i; j++) {
停止太早。建议:
for (int j = i; j >=0; j--) {
进行上述更改后的输出:
#
##
###
3