对于pset1 mario,我得到C的表达式错误

时间:2018-01-12 00:49:21

标签: c cs50

代码:

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

这是新错误

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

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 ++很酷)