这道题解法很多,
解法一:过多边形任意一边做一条直线,如果其他各顶点都在这条直线的同侧,则把这个多边形叫做凸多边形
求出所有边所在的直线,然后判断所有的顶点是否在直线同一侧即可
解法二:用叉积来判断顺逆关系,这个方法参考大神的,感觉这个方法简单多了
#include<stdio.h>
int x[100],y[100];
bool judge(int a,int b,int c)
{
int x1=x[a]-x[c],x2=x[b]-x[c];
int y1=y[a]-y[c],y2=y[b]-y[c];
return x1*y2-x2*y1>=0;
}
int main()
{
int i,j,k,n;
while(scanf("%d",&n)!=-1&&n)
{
for(i=0;i<n;i++)
scanf("%d%d",&x[i],&y[i]);
for(i=0;i<n;i++)
{
int a=i-1,b=i-2;
if(a<0)a+=n;
if(b<0)b+=n;
if(!judge(b,a,i))
break;
}
if(i==n)
printf("convex\n");
else
printf("concave\n");
}
return 0;
}