代码1:
int i, j, n;
int R = 9;
n = -(R - 2) / 2;
for (i = 1; i <= R; i++){
if (R / 2 == i || R / 2 + 1 == i) continue;
if (R / 2 - abs(n) != 0) printf("%*c", R / 2 - abs(n), ' ');
n++;
for (j = abs((R / 2 + 1) - i) * 2 - 1; j>0; j--){
printf("%c", '*');
}
printf("\n");
}
代码2:
int i, j, n;
n = -7 / 2;
for (i = 1; i <= 9; i++){
if (9 / 2 == i || 9 / 2 + 1 == i) continue;
if (3 - abs(n) != 0) printf("%*c", 3 - abs(n), ' ');
n++;
for (j = abs((9 / 2 + 1) - i) * 2 - 1; j>0; j--){
printf("%c", '*');
}
printf("\n");
}
代码:
int i, j, k, n;
for (i=0,k=-3;i<7;i++,k++)
{
if (k <= 0)
{
n = k * -1;
}
else
n = k;
for (j = 0; j < n; j++)
{
printf(" ");
}
for (j = 0; j < 7 - n * 2; j++)
{
printf("*");
}
printf("\n");
}
#include <stdio.h>
#define R 21
int main ()
{
int i, j;
for(i=0; i<R; i++)
{
/*根据行数 计算当前行应该输出 多少个空格*/
j=abs(R/2-i);
/*如果为0 则不输出空格*/
if(j) printf("%*c", j, ' ');
/*打印左边的星号*/
printf("*");
/*根据行数i计算应该空多少个空格*/
j=((R/2-j+1))*2-1;
/*前两行和倒数两行 不用输出空格*/
if(i>=1 && i<=R-2) printf("%*c", j-2, ' ');
/*第一行和倒数第一行不用输出星号*/
if(i>0 && i<R-1) printf("*");
/*每次循环换行*/
printf("\n");
}
}
第二种
#include <stdio.h> #define R 7 int main () { int i, j; for(i=0; i<R; i++) { j=abs(R/2-i); if(j) printf("%*c", j, ' '); printf("*"); j=((R/2-abs(R/2-i)+1))*2-1; if(i>=1 && i<=R-2) printf("%*c", j-2, ' '); if(i>0 && i<R-1) printf("*"); printf("\n"); } }