在我所有的頭文件正確「鏈接」後,我終於達到了能夠正確編譯我的代碼的地步。當我做mariov1.c(如下所示代碼)我用20的測試輸入,其結果是3個hashmarks打印輸出然後我的CMD線的這樣以特定的方式打印特定的變量
###[[email protected] ~]$
現在它應該顯示有一個輸出21個空格和2個哈希標記添加一個哈希標記,並減去每行的空間,直到哈希標記的數量= usrHeight(本質上它並不是實際設置由哈希數決定,但它仍然以這種方式)。應該有看起來像這樣。
How High?
10
constructing...
##
###
####
#####
######
#######
########
#########
##########
###########
這將保持對齊。
mariov1.c源
#include <cs50.h>
#include <stdio.h>
int main(void)
{
int usrHeight = 0;
int levelCounter = 0;
int paddIt = usrHeight - 1;
int hashCounter = 2;
do
{
printf("How high?\n");
int usrHeight = GetInt();
}
while (usrHeight > 23 || usrHeight < 0);
if (usrHeight >= 0 && usrHeight <= 23);
{
printf("constructing...\n");
}
for (levelCounter = 0; levelCounter <= usrHeight; levelCounter++)
{
printf("%.*s\n", paddIt, "");
for (int i = 0; i <= hashCounter; i++)
putchar('#');
paddIt = paddIt - 1;
hashCounter = hashCounter + 1;
}
}
我用另一種做while循環與for循環在它的中間(敢肯定我做錯了),但它只是填補了使這個錯誤後進行第二次嘗試終端與哈希不斷,所以我不知道在這一點上去哪裏。
這裏的mariov2.c源
#include <cs50.h>
#include <stdio.h>
int main(void)
{
int usrHeight = 0;
int levelCounter = 0;
int paddIt = usrHeight - 1;
int hashCounter = 2;
do
{
printf("How high?\n");
int usrHeight = GetInt();
}
while (usrHeight > 23 || usrHeight < 0);
if (usrHeight >= 0 && usrHeight <= 23);
{
printf("constructing...\n");
}
//doing a test to see if this do while loop will handle this appropriatelly
do
{
printf("%.*s\n", paddIt, "");
for (int i = 0; i <= hashCounter; i++)
{
putchar('#');
paddIt = paddIt - 1;
hashCounter = hashCounter + 1;
levelCounter = levelCounter + 1;
}
}
while (levelCounter <= usrHeight);
//commented area part of original code
//for (levelCounter = 0; levelCounter <= usrHeight; levelCounter++)
//{
// printf("%.*s", paddIt, "");
// for (int i = 0; i <= hashCounter; i++)
// putchar('#');
// paddIt = paddIt - 1;
// hashCounter = hashCounter + 1;
//}
}
這很有道理我今天帶着筆記本電腦工作我會看看我對代碼做了什麼編輯,這是我迄今爲止所做的改變(你告訴我的東西有道理,但我是今天早上有點密集。)所以我想看看我是否正確解釋了你的答案。 – dbrad
我做了更改後,事情看起來很好。 – phoxis
在do循環中從usrHeight中刪除int,然後在usrHeight = GetInt()後設置paddIt = usrHeight - 1;? – dbrad