2014-09-02 58 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; 
}