这是我的代码:
#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;
}
我想知道为什么15到10之间没有空格,当我在%2d之前添加空格时:
printf(" %2d", score[i]);
它将是未对齐的。
非常感谢您抽出时间和耐心回答我的问题!
答案 0 :(得分:1)
当您在显示的代码中使用"%2d"
时,将使用2个或更多位置(2个用于数字-9
到99
,其中前导空格为数字{{1} }到0
;对于此范围之外的数字更多)。打印15时,那两个地方;下一个输出是10,并且不需要空间;最后一个数字是5,需要一个空白和数字来占据两个地方。当您为格式添加空格时,数字之间至少会有一个空格。
如果您希望在每个号码之间使用一个空格,而不是在第一个号码之前,您可以玩以下游戏:
9
我觉得这种技术很适合我。
答案 1 :(得分:0)
通常情况下,可以更好地左对齐:
printf("%-6d", score[i]);