2016-12-22 67 views
0

這裏貼在一起是我的代碼:輸出數字即使%2D

#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]); 

它將不對齊。

非常感謝您的時間和耐心回答我的問題!

+0

如果你想顯示你的輸出,請複製你的文本。請勿發佈純文本內容的屏幕截圖。 – Gerhardh

回答

1

當您使用"%2d"如所示的代碼,然後2個或更多的地方將被用於(2號到99用數字爲09的空白;此範圍之外的數字更多)。打印15時,這是兩個地方;下一個輸出是10,並且不需要空間;最後一個數字是5,需要一個空白和數字佔據兩個地方。將空格添加到格式時,至少在數字之間至少有一個空格。

如果你想要的東西,每個編號之間的一個空間中工作,但不是第一個數字之前,你可以玩遊戲,如:

int data[] = { 15, 10, 5 }; 
const char *pad = ""; 
for (int i = 0; i < 3; i++) 
{ 
    printf("%s%d", pad, data[i]); 
    pad = " "; 
} 
putchar('\n'); 

我覺得這個技術很好地工作對我來說。

+0

它對我來說也很完美!非常感謝! – Alex

0

通常,這可能是更好的左對齊的東西如:

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