【发布时间】:2019-09-15 04:08:47
【问题描述】:
当我打印出一个金字塔时,金字塔的最后一行或底部会打印出一个整数,它表示有多少哈希,而不是一串哈希。
像这样:
身高: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;
}
【问题讨论】:
-
get_height所做的不仅仅是增加身高。也许保持简单,并在您的程序中的某处 else 实际打印金字塔。如果数字打印的来源不明显,您可能需要查看课堂笔记,因为高度是数字打印在此代码中的一个位置。 -
一般来说,如果你的程序做的第一件事是提示输入一个参数,考虑改为将该参数作为参数传递。 (不要只考虑它;做它。我正在尝试外交。)考虑一下
grep如果提示您匹配模式,或者ls如果提示您输入目录,那么它会有多笨拙。 -
还要注意
while (n < 1 || n > 8);这行的意思是“如果用户输入了一个超出范围的数字,就坐在一个无限循环中什么都不做”。也许不是你想要的? -
while (n < 1 || n > 8);如果 n 不在 [1,8] 中,则为无限循环
标签: c return return-value return-type cs50