我写这篇文章是因为我尝试了一段时间,但没有取得任何成功。我将发布我的代码和错误消息(来自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
循环中的所有内容,并且我已经将变量的声明放在了这样一个位置,即所有使用它的地方都可以访问它
您的代码有三个基本问题:
-
for
循环在main()
函数之外。这在C中是不允许的。任何控制流语句都需要在函数内部,而不是全局范围内。 -
CCD_ 5在CCD_ 7中的CCD_ 6循环内部的每次迭代中被声明/定义为新的。如果希望
h
在循环外可见,则需要在循环外声明它。 -
h < 1 && h > 8
的do while
循环条件没有意义。它检查h
是否低于1
和同时高于8
。这种情况永远不会发生,所以结果只是通过循环的主体一次,这使得循环非常无用。