返回字符串而不是int

时间:2019-04-25 16:48:13

标签: c return return-value return-type

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

像这样:

高度: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; 
}

2 个答案:

答案 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