[英]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.