在用到格式化I0可变域宽的时候,想到只用一个循环实现最初学c语言时的小练习,打印空心三角形,就实现了一下。
printf("%*d ", m, n);*表示域宽,值由m确定。就由两个可变域宽实现两条边,遗憾的是顶点与底边还得单独实现。
1 // 只用一次循环,打印空心三角形 2 #include <stdio.h> 3 int main(void) 4 { 5 size_t i = 0; 6 size_t n = 10; 7 char s[128] = "* *"; 8 printf("%*c ", n, '*'); 9 for (i = 1; i < n - 1; ++i) 10 { 11 printf("%*c%*c ", n - i, '*', 2 * i, '*'); 12 strcat(s, " *"); 13 } 14 printf("%s ", s); 15 return 0; 16 }