如何在C中打印对角线?

How to print a diagonal line in C?

我正在尝试用 C 语言制作对角线,就像制作金字塔一样。

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

int main(void)
{
    char builder = get_char("Building Material: ");
    int size = get_int("Line Size: ");
    for (int i = 0; i < size; i++)
    {
        for (int j = size - 1; j < i + size; j--)
        {
            printf(" ");
        }
        printf("%c\n", builder);
    }
}

这是我迄今为止最好的一个,但我仍然无法确定应该如何添加空格。

I don't wanna make a pyramid.

这里有什么问题?

一种这样的方式如下:

#include <stdio.h>

int main(void)
{   
    char builder = '#';
    int size = 5;

    for(int i = 0; i < size; i++)
    {
        for(int j = 0; j < size; j++)
        {
            if(j == i)
                printf("%c", builder);
            else
                printf(" ");
        }
        printf("\n");
    }

    return 0;
}

输出

$ gcc main.c -o main.exe; ./main.exe;
#
 #
  #
   #
    #

我不知道你的问题到底出在哪里。您对代码问题的描述太少了。

作为旁注:

您使用了很多冗余代码。如果要打印从右上角到左下角的对角线,可以这样简化代码:

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

int main(void)
{
    char builder = get_char("Building Material: ");
    int size = get_int("Line Size: ");

    for ( ; 0 < size ; size-- )
    {
        printf("%*c\n", size, builder);
    }
}

*用于设置宽度

示例输入:

Building Material: c
Size: 12

示例输出:

           c
          c
         c
        c
       c
      c
     c
    c
   c
  c
 c
c