C语言中怎么实现右对齐

当最后一行不满时,如何实现最后一行也右对齐,即50在45下面,以此类推。
#include <stdio.h>
int main()
{
int i,j,a,t;
a=10;
printf("Input:");
scanf("%d",&t);
for(i=1;i<=10;i++)
{
for(j=1;j<=10-i;j++)
{
printf(" ");
}
for(;j<=10&&a<=t;j++,a++)
{
printf(" %d",a);
}
printf("\n");
}
return 0;
}
如图 ,我写的这个程序是这样显示的

第1个回答  推荐于2016-06-16

计算一下需要打印多少空格就好了

#include <stdio.h>
int main()
{
int i, j, a, t;
a = 10;
printf("Input:");
scanf("%d", &t);
for (i = 1; i <= 10; i++)
{
int r;
if (i <= t - a)r = 10 - i;////够
else r = 10 - t + a - 1;////不够
for (j = 1; j <= r; j++)
{
printf("   ");
}
for (; j <= 10 && a <= t; j++, a++)
{
printf(" %d", a);
}
printf("\n");
}
return 0;
}

追问

  运行结果还是我原来显示的哇!怎么破

追答

不会吧,得重新编译之后才会出新的结果吧

追问

恩 重新编译之后出来的是新结果。 但是你定义r 不是要一开始就要定义吗,为什么放在中间还能运行

追答

c++和现在的c标准没那么严格,以前的标准才会那么严格

本回答被提问者采纳
第2个回答  2020-11-09
相似回答