C未声明的金字塔变量

时间:2020-07-24 08:41:59

标签: c variables cs50

我正在写这篇文章,因为我尝试了一段时间,但没有获得任何成功。我将发布我的代码和错误消息(来自cs50 week1课程)。

["someString"]

错误消息如下:“ mario.c:12:11:错误:使用未声明的标识符'h'

通过“未声明的标识符”,lang意味着您在mario.c的第12行中使用了名称h(尚未定义)。如果您打算将h用作变量,请确保通过指定其类型进行声明,并检查变量名是否正确拼写。”。此外,该代码还应使金字塔朝右。 谢谢你的帮助! 拉格纳罗尼 PS:如果有什么奇怪的事情,对不起,请告诉我如何纠正它,我会的。

2 个答案:

答案 0 :(得分:1)

让我对h问题进行以下更正:

int main(void) 
{ 
    int h; // this is the height of the pyramid
    do { 
        h = get_int("Height of your pyramid please\n");   
    } 
    while(h < 1 && h > 8); 
    
    for(int i = 0; i < h; i++) { 
        for(int j = 0; j < h; j++) { 
            printf (" "); 
        } 
            
        for(int k = h; k < h; k--) { 
            printf(" # "); 
        } 
        printf("\n"); 
            
    }
} 

如您所见,我确保所有内容都在main循环内,并且已将变量的声明放在这样的位置,所有使用该变量的位置都可以访问它。 / p>

答案 1 :(得分:1)

您的代码有三个基本问题:

  1. for循环在main()函数之外。在C语言中,这是不允许的。任何控制流语句都必须位于函数内部,而不能位于全局范围内。

  2. {li>

    hdo whilemain()循环内的每次迭代中声明/定义为新的。如果您希望h在循环外部可见,则需要在循环外部对其进行声明。

  3. 您的do while的{​​{1}}循环条件没有意义。它会检查h < 1 && h > 8是否在h以下并同时在1以上。情况永远不会如此,因此结果只是遍历循环的主体一次,这使循环变得毫无用处。