マクロを利用した表示

マクロを利用した表示(list_13.c)
#include <stdio.h>
#include <stdlib.h>

#define TEN " * * * * * * * * * *"

int main(void)
{
    int i, n, nline;
    
    while (scanf("%d", &n) == 1 && (nline = abs(n)) != 0){
        for(i=(n > 0)?0:nline-1;0<=i&&i<nline;n>0?i++:i--)
            printf("%*s%*.*s\n",
                   nline-i,"*",i*2,(0<i&&i<nline-1)?2:i*2,TEN TEN TEN TEN);
    }
    return 0;
}
実行結果
Gami[810]% list_13.exe
1
*
2
 *
* *
3
  *
 * *
* * *
4
   *
  * *
 *   *
* * * *
5
    *
   * *
  *   *
 *     *
* * * * *
0
Gami[811]%
inserted by FC2 system