C语言 表中的动态空间

fkaflof6  于 2023-03-12  发布在  其他
关注(0)|答案(2)|浏览(99)

我试图打印乘法表和之前,每个结果,我想增加一定数量的空间,根据数字的结果。
以下是我所做的:

#include <stdio.h>
#define TEN 10

int len_num(int *num);
int main(int argc, const char * argv[])
{
    int i,j;
    int space = 0;
    int multi;
    for(i = 1; i <= TEN; i++)
    {
        for(j=1; j <= TEN; j++)
        {
            multi = i * j;
            space = len_num(&multi);
            printf("%*d", space, i*j);
        }
        printf("\n");
    }
    return 0;
}

int len_num(int *num)
{
    int length = 0;
    while (*num != 0)
    {
        *num /= 10;
        length++;
    }
    return length;
}

由于某种原因,空格没有出现。
这是我想要达到的目标:

有什么建议吗?
谢谢。

zwghvu4y

zwghvu4y1#

如果您希望一个具有 n 位数的值以 n 个空格为前缀,则需要更改:

printf("%*d", space, i*j);

收件人:

printf("%*d", space * 2, i*j);

但是,这将以列不对齐的方式设置表格的格式:
如果你想要一个格式正确的表格,你可能需要一个固定宽度的值,例如(宽度为5):

printf("%*d", 5, i*j);

这将产生以下输出:

边注:

  1. len_num没有理由修改num参数,因此它应该通过值(int len_num(int num))获取该参数。
  2. TEN不是一个很好的名称,考虑更改为MAX(以防您可能更改值10)。
mbzjlibv

mbzjlibv2#

它看起来太简单了:

printf( "%4d", i*j );

相关问题