我正在写这篇文章,因为我尝试了一段时间,但没有获得任何成功。我将发布我的代码和错误消息(来自cs50 week1课程)。
["someString"]
错误消息如下:“ mario.c:12:11:错误:使用未声明的标识符'h'
通过“未声明的标识符”,lang意味着您在mario.c的第12行中使用了名称h(尚未定义)。如果您打算将h用作变量,请确保通过指定其类型进行声明,并检查变量名是否正确拼写。”。此外,该代码还应使金字塔朝右。 谢谢你的帮助! 拉格纳罗尼 PS:如果有什么奇怪的事情,对不起,请告诉我如何纠正它,我会的。
答案 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)
您的代码有三个基本问题:
for
循环在main()
函数之外。在C语言中,这是不允许的。任何控制流语句都必须位于函数内部,而不能位于全局范围内。
h
在do while
中main()
循环内的每次迭代中声明/定义为新的。如果您希望h
在循环外部可见,则需要在循环外部对其进行声明。
您的do while
的{{1}}循环条件没有意义。它会检查h < 1 && h > 8
是否在h
以下并同时在1
以上。情况永远不会如此,因此结果只是遍历循环的主体一次,这使循环变得毫无用处。