代码:
int main(void)
{
printf("Height: ");
int height = 0;
height = get_int();
int heightcopy = height;
int spaces = heightcopy - 2;
int hash = 2;
while(height > 0 || height < 23)
{
for(int a = 0;a < height;a++)
{
for(int b = 0;b < spaces;b++)
{
printf(" ");
}
for(int c = 0;c < hash;c++)
{
printf("#");
}
hash++;
heightcopy--;
printf("\n");
}
}
}
错误:
制作MarioEasy_2 clang -fsanitize = integer -fsanitize = undefined -ggdb3 -O0 -std = c11 -Wall -Werror -Wextra -Wno-sign-compare -Wshadow MarioEasy_2.c -lcrypt -lcs50 -lm -o MarioEasy_2
这是新错误
........................................
答案 0 :(得分:0)
您在此处使用了while循环:while(int a;a < height;a++)
但这不是while
语句的格式。 while
语句只会采用一个布尔表达式,就像之前在while(height > 0 || height < 23)
中所做的那样。您需要使用for
循环,并且还需要使用数字初始化int
,例如。 int a = 0
:
for(int a = 0;a < height;a++)
这下面的其他while
循环也是如此。
答案 1 :(得分:0)
首先,您需要解释本程序的内容,以便对任何逻辑错误进行适当的反馈。
从句法上讲:
获得spaces
的值后,需要初始化 height
while(int letter; letter < param; letter++)
应该是
int letter;
for(letter=0; letter < param; letter++)
C代码不像for循环中的int声明(C ++很酷)