2014-09-02 61 views
2

我有點掙扎如何讓我的輸出顯示是這樣的:對齊文本向右用C

a 
aa 
aaa 

我現在的輸出顯示這個代替:

a 
aa 
aaa 

下面是我的代碼:

void displayA(int a){ 
    for(int i = 0; i < a; i++) 
     printf("a"); 
} 

int main(void){ 
    displayA(1); 
    printf("\n"); 
    displayA(2); 
    printf("\n"); 
    displayA(3); 
    printf("\n"); 
    return 0; 
} 

有什麼建議嗎?謝謝。

感謝您的回答。我意識到我的編碼邏輯是錯誤的。使用下面的建議幫助我弄清楚了。謝謝!

+3

嘗試'的printf( 「%3S」, 「A」);' – 2014-09-02 15:17:45

+1

提示:你的'displayA函數將需要兩個參數。要打印的a的數量,以及我以前嘗試過的列寬度 – thelaws 2014-09-02 15:20:10

+0

不起作用。 @ Don'tYouWorryChild – Salman2013 2014-09-02 15:20:39

回答

8

您可以使用printf("%*s", <width>, "a");打印右對齊變量no的任何文本。的空間。

檢查here live

+0

感謝您的發佈。希望這能幫助我一點點。只是好奇,如果你有另一個解決方案涉及循環?我不想使用硬編碼。謝謝!建議會很棒! – Salman2013 2014-09-02 15:27:54

+2

@Salman2013:「*我不想使用硬編碼。*」你不想用什麼? – alk 2014-09-02 16:10:22

0

在這裏,參數w確定字符寬度與a的對準

void displayA(int a, int w){ 
    int i; 
    for(i = 0; i < w; i++) { 
    if(i < w - a) printf(" "); 
    else printf("a"); 
    } 
} 
0

這可能是有幫助的。

要打印樓梯模式:

 # 
    ## 
    ### 
    #### 
##### 
###### 

以下是代碼:

#include<stdio.h> 

void print(int n) 
{ int i,j; 
    for(i=1;i<=n;i++) 
    {  printf("%*s",n-i,""); //for right alignment by n-1 spaces. 
     for(j=0;j<i;j++) 
     { 
        printf("%s","#");  
     } 
     printf("\n"); 
    } 
}  
int main(void) 
{ 
    print(6); 
    system("pause"); 
    return 0; 
}