Return 字符串而不是整数

Return string instead of int

当我打印出一个金字塔时,金字塔的最后一行或底部打印出一个表示多少哈希的整数,而不是一串哈希。

像这样:

身高:3

#
##
3

当它应该是:

Height 3:

#
##
###

我应该根据用户的输入打印出一个具有高度的金字塔,但不是将底作为字符串打印出来,而是打印出底应该有多少哈希值的整数。我知道这是因为我要返回 n 但我不知道如何以仍然 returns 循环的方式进行处理。

我已经尝试将 class 更改为 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; 
}

输出的最后一行是高度,因为这是您的 main 函数中最后打印的内容:

printf("%i\n", ask);

get_height 实际上只会打印 n-1 行,因为第一次迭代 (i=0,j=0) 被跳过。

应该输出3

这个语句有问题;

for (int j = 0; j < i; j++) {

太早停止了。建议:

for (int j = i; j >=0; j--) {

进行上述更改后的输出:

#
##
###
3