该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
void print_star(int r)
{
int x1, x2, x3, x4, y,i;
int n1 = r*sin(0.943)+r;
//
int n2 = r*(1-sin(0.943));
int d = r*(1+sin(0.942));//sin54
int d1 = r*(1-sin(0.314));
int offset1, offset2;
for(y = 0; y <= d; y++)
{
/*终端字符宽高比为2:1*/
if(y
{
offset1 = (int)( y*tan(0.314)*2.0); //tg18
x1 = d - offset1;
x2 = d + offset1;
print_char(x1, x2);
}
else if(y>d1)
{
offset1 = (int)( y*tan(0.314)*2.0); //tg18
x1 = d - offset1;
x2 = d + offset1;
offset2 = (int)(
(r*sin(1.256)-(y-r*(1-sin(0.314)) )*tan(0.942) )*2);//tg54,sin72
x3 = d - offset2;
x4 = d + offset2;
print_char(x1, x2, x3, x4);
}
else
{
//for(i=0;i<=n2;i++) {printf("
");}
for(i=0;i<=n1;i++) {printf(" *");}
printf("\n");
}
}
}
int main(int argc, char* argv[])
{
int
r = 20; //默认五角星外接圆半径
scanf("%d",&r);
if (argc > 1)
r = atoi(argv[1]);
print_star(r);
return 0;
}