我必须创建一个程序,要求用户输入许多行,然后创建一个弗洛伊德三角形。问题是我似乎没有设法做出这种特殊的模式:

      1
    2 3
  4 5 6
7 8 9 10

I have only managed to creat the basic program

#include <stdio.h>
#include <stdlib.h>

int rows, r, c, a;
int number=1;

int main()
{

    printf("Floyd Triangle\n");
    printf("--------------");
    printf("\nPlease enter an integer number of rows: ");
    scanf("%d",&rows);
    while(rows<=0)
    {
      printf("\nYou must enter an integer value: ");
      scanf("%d",&rows);
    }

    for(r=1;r<=rows;r++)
    {
      for(c=1;c<=r;+c++)
      {
       printf("%d ", number++);
      }
      printf("\n");
    }


到目前为止,我的代码中没有错误

最佳答案

只需在每行的第一个数字之前打印一些空格

    // ...
    for (r = 0; r < rows; r++) {
        printsomespaces(r, rows); // prints some spaces depending on current row and total rows
        for (c = 0; c < r; +c++) {
            printf("%d ", number++);
        }
        printf("\n");
    }
    // ...


如果您不能编写自己的函数(没有printsomespaces),请使用循环:

        //...
        //printsomespaces(r, rows);
        for (int space = 0; space < XXXXXXXX; space++) putchar(' ');
        //...


其中XXXXXXXX是使用rrows进行的一些计算。
尝试(未经测试)2 * (rows - r)(2是每个数字的宽度:1表示数字+ 1表示空格)。

关于c - 弗洛伊德三角右图案,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58593016/

10-11 18:15