首页 > 解决方案 > 这里有什么问题?C语言

问题描述

试图做一个这样的正方形,但有一些错误,我不明白。

正方形

#include <unistd.h>

int ft_putchar(char c)
{
    write(1, &c, 1);
    return (0);
}

void    rush(x > 0 && y > 0)
{
    int w;
    int h;
    {
        if (w == 1 || w == x) && (h == 1 || h == y)
        {
            ft_putchar('o');
        }

        else if (w == 1 || w == x) && (h != 1 || h != y)
        {
            ft_putchar('|');
        }
        else if (w != 1 || w != x) && (h == 1 || h == y)
        {
            ft_putchar('-');
        }
        else if (w !=1 || w != x) && (h != 1 || h != y)
        {
            ft_putchar(' ');
        }
        h++;
        w++;
        ft_putchar('\n');
    }
}

int main(void)
{
    rush (5, 5);
    return (0);
}

标签: c

解决方案


void    rush(x > 0 && y > 0)

这不是一个有效的 C 函数声明。(是否x > 0并且y > 0应该是函数调用的先决条件?)正确的函数调用显示参数的类型,如下所示:

void    rush(int x, int y)

rush函数和main例程都没有任何循环。为了遍历图像的行和列并准备要输出的字符以生成图像,需要某种循环。

if (w == 1 || w == x) && (h == 1 || h == y)

一个if语句必须有一个用括号括起来的表达式。您可以将两个表达式与 结合起来&&,但整个结果表达式必须用括号括起来:

if ((w == 1 || w == x) && (h == 1 || h == y))

修正函数声明,修正if语句,并编写两个for循环来迭代hw,然后您将朝着目标取得实质性进展。


推荐阅读