我在 C 中得到了 pset1 mario 的 expect 表达式错误

I get expect expression error in C for pset1 mario

代码:

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

这是新错误

............................................

您在这里使用了 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 循环也是如此。

首先,您需要解释这个程序应该产生什么,以获得对任何逻辑错误的正确反馈。

语法上:

spaces需要在得到height

的值后进行初始化

while(int letter; letter < param; letter++)

应该是

int letter;

for(letter=0; letter < param; letter++)

C 代码不喜欢 for 循环中的 int 声明(C++ 用它很酷)