对于pset1 mario,我在C中得到expect表达式错误

对于pset1 mario,我在C中得到expect表达式错误,c,cs50,C,Cs50,代码: int main(无效) { printf(“高度:”); 整数高度=0; 高度=get_int(); int heightcopy=高度; int空格=高度复制-2; int hash=2; 而(高度>0 | |高度

代码:

int main(无效)
{
printf(“高度:”);
整数高度=0;
高度=get_int();
int heightcopy=高度;
int空格=高度复制-2;
int hash=2;
而(高度>0 | |高度<23)
{
对于(int a=0;a
错误:

让MarioEasy_2
clang-fsanitize=integer-fsanitize=undefined-ggdb3-O0-std=c11-Wall-Werror-Wextra-Wno符号比较-Wshadow MarioEasy_2.c-lcrypt-lcs50-lm-o MarioEasy_2

这是新的错误


您在这里使用了while循环:
while(inta;a
但这不是
while
语句的格式。
while
语句将只接受一个布尔表达式,正如您之前在
while(height>0 | | height<23)
中所做的那样。您需要使用
for
循环,还需要初始化与数字一起使用的
int
,例如
int a=0

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");
        }
    }
}
for(int a=0;a

你的另一个
也是如此,而
也在下面循环。

首先,你需要解释这个程序应该产生什么结果,以获得关于任何逻辑错误的正确反馈

从句法上讲:

空间
需要在获得
高度

while(int-letter;letter

应该是

int字母

for(字母=0;字母


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

谢谢,我也做了你所有的建议,但它不会运行,但它也不会给我错误lang-fsanize=integer-fsanize=undefined-ggdb3-O0-std=c11-Wall-Werror-Wextra-Wno符号比较-Wshadow MarioEasy\u 2.c-lcrypt-lcs50-lm-o MarioEasy\u 2你们中的任何人都能理解吗that@FantasticMrFox它是在循环中声明的,但是它没有初始化。第一个
while
循环没有意义。这是一个无限循环,因为在循环内部,你永远不会改变高度。我想你的意思是使用
if
。你真的需要回到书本上,学习如何使用
if
while
进行工作。你不懂基础知识。所以这不是一所编程学校,它不应该代替学习语言。你还需要解释这个程序应该做什么。
a
b
c
变量的用途是什么。如果(hash==1)
有什么意义?没有任何内容会更改
散列的值,因此这将始终为真。抱歉,我没有看到他使用的是C11。我提出的建议并不安全,你可能会惊讶于有多少编译器没有默认使用C99+:)是的,我假设大多数人使用的是一种不到20年的语言版本。它现在可以工作了,但是| | bollian expresion dosent workBarmar?不如果((高度>0)| |(高度<23)),则尝试

for(int a = 0;a < height;a++)