打印5行10列的前50个数字

时间:2019-06-22 19:08:56

标签: c

我想打印5行10列的前49个数字。

Example

我尝试使用某些宽度含义并尝试使其对齐,但我不知道该怎么做。

#include <stdio.h>
#include <stdlib.h>
int main()
{
   int i, j;
   int count = 50;
   int r = 5;
   int c = 10;

   for (i = 0; i <= r; i++)
   {
     for(int j = 1; j <=count; j++)
     {
       printf("%9d", i);
       i++;
     }
   }

   return (0);
}

我可以从0-49打印,但是对齐不正确,有人可以帮忙吗?谢谢。

4 个答案:

答案 0 :(得分:1)

您只需要一个循环,就可以使用剩下的运算符来检测何时需要换行。

    0        1        2        3        4        5        6        7        8        9
   10       11       12       13       14       15       16       17       18       19
   20       21       22       23       24       25       26       27       28       29
   30       31       32       33       34       35       36       37       38       39
   40       41       42       43       44       45       46       47       48       49

输出为:

private static final Predicate<Parent> HAS_SON = parent -> IS_CHILD(parent.getChild);
private static final Predicate<Child> IS_CHILD = Objects::nonNull;
private static final Predicate<Parent> IS_PARENT = Objects::nonNull;
private static final Predicate<Parent> IS_FATHER = IS_PARENT.and(HAS_SON);

答案 1 :(得分:1)

无需使用两个循环,一个循环就可以了。

  1. 使用“%2d”为每个数字保留两位数字。
  2. 不要在循环内增加循环变量。在这里没有多大用处。

代码

#include <stdlib.h>
#include <stdio.h>
int main()
{
   int i, j;
   int count = 50;
   int c = 10;

   for (i = 0; i < count; i++)
   {
       printf("%2d ", i);
       if (i%c == 9) printf("\n");
   }

   return (0);
}

答案 2 :(得分:0)

您将需要知道该列是否已打印10个值,您需要一个偏移量来提醒您,最后一个元素发生的位置是最后10个值,因此我们将SELECT ListID, a.DOWID, tb.DOWName AS "Day", a.aTimeID, c.aTime AS "Time", -- ... 变量分配给该变量元素值基于每行10列,因此如果模数可以被10整除,则取模数,然后移至下一行

offset

答案 3 :(得分:-1)

在“%9d”之前添加空格或任何字符可以解决此问题。

   printf(" %9d", i);

Output when the above line is used