簡體   English   中英

CS50 無馬里奧問題:金字塔正在打印,但仍然有“您是否在金字塔末尾添加了太多尾隨空格”?

[英]CS50 mario-less problem: Pyramid is printing but still have "did you add too much trailing whitespace to the end of your pyramid"?

我在編碼方面真的很陌生,所以我遇到了問題。 我無法理解為什么我針對 Mario Less 問題的“非常簡單”的解決方案沒有通過運行測試。 我知道它沒有按照提到的確切步驟進行,但是金字塔的輸出是正確的(正如我所想的)。 我對學習新東西沒有任何問題,所以我不會試圖通過 CS50 作弊。 我只想知道為什么這個選項不正確。 打印了金字塔,但我“不通過”:

:( 正確處理 1 的高度 原因是預期的“#”,而不是“#” 您是否在金字塔末尾添加了過多的尾隨空格?對 check50 進行評論。

也不會通過對不同輸入的檢查。

謝謝。

我的代碼:

#include <cs50.h>
#include <stdio.h>

int main(void)
{
    int height;

    // user communication
    do
    {
        height = get_int("Height of the pyramid in steps: ");
        if (height < 1 || height > 8)
        {
        printf("Height must be between 1 an 8 steps. Try again. \n");
        }
    }

    while (height < 1 || height > 8);

    //build pyramid

        if (height == 1)
        printf("#");
        if (height == 2)
        printf(" #\n##");
        if (height == 3)
        printf("  #\n ##\n###");
        if (height == 4)
        printf("   #\n  ##\n ###\n####");
        if (height == 5)
        printf("    #\n   ##\n  ###\n ####\n#####");
        if (height == 6)
        printf("     #\n    ##\n   ###\n  ####\n #####\n######");
        if (height == 7)
        printf("      #\n     ##\n    ###\n   ####\n  #####\n ######\n#######");
        if (height == 8)
        printf("       #\n      ##\n     ###\n    ####\n   #####\n  ######\n #######\n########");

}

在您的 do while is 循環評估為 true 之后,編寫一個循環以遍歷輸入的高度。 編寫另一個循環來打印點 (height - 1) 次。 (按遞減順序),編寫另一個循環來打印哈希值(高度)次(按遞增順序,因為高度不能 < 0)。

您的代碼的問題是由於語法錯誤:

不正確:

if (height == 2)
printf(" #\n##"); // something missing here

正確的:

if (height == 2)
{
    printf(" #\n##\n");
}

除了您的方法之外,最好在本練習中使用 for 循環,因為它可以幫助您發揮 C 的潛力來學習 C。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM