C金字塔的未声明变量



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

#include <cs50.h>
#include <stdio.h>
int main(void) 
{ 
do { 
int h = get_int("Height of your pyramid pleasen");   
} 
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"); 

}

并且错误消息如下:;mario.c:12:11:错误:使用未声明的标识符"h">

通过";未声明的标识符";clang意味着您在mario.c的第12行使用了一个尚未定义的名称h。如果您想使用h作为变量,请确保通过指定其类型来声明它,并检查变量名的拼写是否正确&";。此外,该代码应该制作一个面朝右的金字塔。谢谢你的帮助!拉格纳罗尼附言:如果有什么奇怪的地方看起来很抱歉,告诉我如何纠正,我会的。

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

int main(void) 
{ 
int h; // this is the height of the pyramid
do { 
h = get_int("Height of your pyramid pleasen");   
} 
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循环中的所有内容,并且我已经将变量的声明放在了这样一个位置,即所有使用它的地方都可以访问它

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

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

  2. CCD_ 5在CCD_ 7中的CCD_ 6循环内部的每次迭代中被声明/定义为新的。如果希望h在循环外可见,则需要在循环外声明它。

  3. h < 1 && h > 8do while循环条件没有意义。它检查h是否低于1同时高于8。这种情况永远不会发生,所以结果只是通过循环的主体一次,这使得循环非常无用。

相关内容

  • 没有找到相关文章

最新更新