方法一:
```c
include
int main() {
int n, i, j;
scanf("%d", &n); // 读取三角形的行数
for (i = 1; i <= n; i++) { // 外循环,控制行数
for (j = 0; j < n - i; j++) { // 输出第i行前面的空格
printf(" ");
}
if (i != 1) { // 第一行除外
printf("*"); // 先打首个*
for (j = 1; j < 2 * (i - 1); j++) { // 若非最后一行则中间连续若干空格
if (j % 2 == 0)
printf(" ");
else
printf("*");
}
}
printf("*"); // 打印最后一个*,然后换行
}
system("pause"); // 暂停程序,便于看清结果
return 0; // 返回0值,表示正常运行结束
}
```
方法二:
```c
include
int main() {
int a, b, c, n, m;
scanf("%d", &n);
if (n % 2 != 0) {
printf("请输入偶数行数\n");
return 1;
}
for (a = 1; a <= n; a++) {
for (b = 1; b <= n - a; b++) {
printf(" ");
}
for (c = 1; c <= 2 * a - 1; c++) {
if (c % 2 == 0)
printf(" ");
else
printf("*");
}
printf("\n");
}
return 0;
}
```
这两种方法都可以实现输出空心三角形。可以根据自己的需求和喜好选择合适的方法。