用c写一个for循环

writing a for loop in c

大家好!我正在尝试解决 cs50 中的马里奥问题,当我插入这样的 for 循环时:

#include <cs50.h>
#include <stdio.h>

int main(void)
{
    int height;
    int i = 0;
    int j = 9;

    do
    {
        height = get_int("establish the height of the pyramide: ");
    }
    while (height < 1 || height > 8);
    printf("you select the height of: %i\n", height);

    for (i < height; i++)
    {
        for (j > height; j++)
        {
            printf("#");
        }
    }
}

我收到这样的错误:

mario.c:17:12: error: relational comparison result unused [-Werror,-Wunused-comparison] for (i <= height; i++):

我已经尝试在循环内声明 i,但结果错误是一样的。我在这里做错了什么?

即使在for循环中需要跳过初始化,也需要放入;.

for (; i < height; i++) {
  for (; j > height; j++) {
    printf("#");
  }
}

只需将其更改为应该就可以了。

在 C 中,for 循环定义如下

for ( expressionopt ; expressionopt ; expressionopt ) statement
for ( declaration expressionopt ; expressionopt ) statement

也就是说它分为三个部分。第一部分是表达式(可能省略)或声明。

所以这些 for 循环

for (i < height; i++)
for (j > height; j++)

不满足语法要求。此外,第二个循环中的条件

j > height

没有意义。

也尝试在使用它们的最小范围内定义变量。

看来你需要的是下面这样的东西

for ( int i = 0 ; i < height; i++)
{
    for ( int j = 0; j < i + 1; j++)
    {
        putchar( '#' );;
    }
    putchar( '\n' );
}

或者像下面这样

for (int i = 0; i < height; i++)
{
    printf( "%*c", height - i, '#' );
    for (int j = 1; j < i + 1; j++)
    {
        putchar( '#' );;
    }
    putchar( '\n' );
}