2017-03-22 183 views
-1

下面的代碼引發了編譯錯誤。我是編程新手,所以不知道還有什麼要做。我在課堂上教過,但不能正確理解。凸輪任何人請幫我解決它?cs50 pset1 water.c編譯時出現錯誤

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

int main(void) 
{ 
    int y; 
do 
{ 
    printf("Minutes: "); 
    int Minutes = get_int(); 
} 
while(Minutes< 0); 

y= Minutes * 12; 
printf("Bottles: %i\n", y); 
} 

它拋出以下錯誤:

water.c:10:8: error: unused variable 'Minutes' [-Werror,-Wunused-variable] 
    int Minutes = get_int(); 
^
water.c:12:7: error: use of undeclared identifier 'Minutes' 
while(Minutes< 0); 
^
water.c:14:4: error: use of undeclared identifier 'Minutes' 
y= Minutes * 12; 
^
    3 errors generated. 
make: *** [water] Error 1 
+0

'INT分鐘;'移動到前do-while循環。 – BLUEPIXY

+0

[找到一個很好的初學者書](http://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list)並閱讀*範圍*。 –

+0

這個錯誤幾乎說明了一切。 –

回答

0

int Minutes被聲明爲局部的循環體,這意味着循環條件while(Minutes< 0)不知道什麼是「紀要」是。

只需將聲明移出循環,在其上方。

1

您在do塊的範圍內定義了Minutes。這意味着它只能在相同的範圍內使用 - 即。圍繞該塊的{}之間。

然而,您正在使用該範圍之外的變量(實際上是兩次)。

相反,do循環之前定義Minutes

int Minutes = 0; 
do { 
    printf("Minutes: "); 
    Minutes = get_int(); 
} 
while(Minutes< 0); 

這使得它在main功能體的範圍內,所以它可以在任何地方在main功能被使用(其定義之後)。

+0

這是顯示以下錯誤:water.c:10:8:錯誤:聲明陰影局部變量[-Werror, - Wshadow] int Minutes = get_int(); ^ water.c:6:11:note:先前的聲明在這裏 int y,Minutes = 0; ^ water.c:10:8:error:未使用變量'Minutes'[-Werror,-Wunused-變量] int Minutes = get_int(); ^ 生成2個錯誤。 make:*** [water]錯誤1 〜/ workspace/pset1/$ –

+1

新的錯誤是因爲您仍然有'int Minutes = get_int();'在循環中意味着'Minutes'被重新聲明 - 它應該be'Minutes = get_int();'。 –

0

這就是答案

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

int main(void) 
{ 
    printf("minutes: "); 
    int minutes = get_int(); 

    printf("bottles: "); 
    int bottles = get_int(); 

    printf("%i\n divided %i\n is %i\n", minutes, bottles, minutes/bottles); 
}