即使是%2d,输出数据仍然粘在一起

时间:2016-12-22 04:19:56

标签: c

这是我的代码:

#include <stdio.h>
#define N 3
void getScore(int score[], int size)
{
    for(int i=0; i<size; i++)
    scanf("%2d", &score[i]);
    return;
}

int sortScore(int score[], int size)
{
    int max;
    for(int i=0; i<size; i++)
    {
        for(int j=i+1; j<size; j++)
        {
            if(score[i]<score[j])
            {
                max=score[i];
                score[i]=score[j];
                score[j]=max;
            }
        }
    }
    return score[N];
}

void output(int score[], int size)
{
    printf("\nIn descending order: ");
    for(int i=0; i<size; i++)
        printf("%2d", score[i]);

    printf("\n\n");
    return;
}

这是我的结果:result

我想知道为什么15到10之间没有空格,当我在%2d之前添加空格时:

printf(" %2d", score[i]);

它将是未对齐的。

非常感谢您抽出时间和耐心回答我的问题!

2 个答案:

答案 0 :(得分:1)

当您在显示的代码中使用"%2d"时,将使用2个或更多位置(2个用于数字-999,其中前导空格为数字{{1} }到0;对于此范围之外的数字更多)。打印15时,那两个地方;下一个输出是10,并且不需要空间;最后一个数字是5,需要一个空白和数字来占据两个地方。当您为格式添加空格时,数字之间至少会有一个空格。

如果您希望在每个号码之间使用一个空格,而不是在第一个号码之前,您可以玩以下游戏:

9

我觉得这种技术很适合我。

答案 1 :(得分:0)

通常情况下,可以更好地左对齐:

 printf("%-6d", score[i]);