2017-03-22 165 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); 
}