2014-09-02 3 views
2

Я немного борется, как сделать свой вывод, чтобы показать, как это:Align текст справа в 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

Попробуйте 'Е ("% 3s", "A");' –

+1

Подсказка: ваш 'displayA 'функции потребуются два аргумента. Количество a для печати и ширина столбца – thelaws

+0

Я пробовал это раньше, не работает. @ Don'tYouWorryChild – Salman2013

ответ

8

Вы можете использовать printf("%*s", <width>, "a"); для печати любого текста, выровненного по правой клавише. пространств.

Проверить here live.

+0

Спасибо за ваше сообщение. Надеюсь, это поможет мне немного. Любопытно, если у вас есть другое решение, которое связано с циклом? Я не хочу использовать жестко закодированные. Благодаря! Предложение было бы здорово! – Salman2013

+2

@ Salman2013: «* Я не хочу использовать жестко закодированные. *« Вы не хотите использовать что? – alk

0

Здесь параметр w определяет ширину символа для выравнивания a «S к

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; 
} 
Смежные вопросы