繁体   English   中英

如何在 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);
    }
}

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

我不想做金字塔。

这里有什么问题?

一种这样的方法如下:

#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;
}

Output

$ 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

示例 output:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM