求c语言高手逐句解释下列程序语句的意思,如 定义函数,设置宏等
#include<stdio.h>#defineN100typedefstruct{doublex[N];doubley[N];intpointNum;}points;i...
#include <stdio.h>
#define N 100
typedef struct{
double x[N];
double y[N];
int pointNum;
}points;
int polygon(points nps)
{
double var1,var2;
int i,j,k;
if(nps.pointNum<3) return 0;
for(i=0;i<nps.pointNum;i++)
{
j=(i+2)%nps.pointNum;
k=(i+1)%nps.pointNum;
var1=(nps.x[i]-nps.x[k])*(nps.y[i]-nps.y[j])-(nps.y[i]-nps.y[k])*(nps.x[i]-nps.x[j]);
for(j=(j+1)%nps.pointNum;j!=i;j=(j+1)%nps.pointNum)
{
var2=(nps.x[i]-nps.x[k])*(nps.y[i]-nps.y[j])-(nps.y[i]-nps.y[k])*(nps.x[i]-nps.x[j]);
if(var1*var2<0) return 0;
if(var2!=0) var1=var2;
}
if(var1==0) return 0;
}
return 1;
}
main()
{
int i;
points nps;
printf("请输入顶点的个数:");
scanf("%d",&nps.pointNum);
printf("请输入这些顶点的坐标,每个点的横坐标和纵坐标用逗号分隔开( 例如12.5,34 ):\n");
for(i=0;i<nps.pointNum;i++)
{
printf("第%d个顶点:",i+1);
scanf("%lf,%lf",&nps.x[i],&nps.y[i]);
}
if(polygon(nps))
printf("该多边形是凸多边形。\n");
else
printf("该多边形不是凸多边形!!!\n"); 展开
#define N 100
typedef struct{
double x[N];
double y[N];
int pointNum;
}points;
int polygon(points nps)
{
double var1,var2;
int i,j,k;
if(nps.pointNum<3) return 0;
for(i=0;i<nps.pointNum;i++)
{
j=(i+2)%nps.pointNum;
k=(i+1)%nps.pointNum;
var1=(nps.x[i]-nps.x[k])*(nps.y[i]-nps.y[j])-(nps.y[i]-nps.y[k])*(nps.x[i]-nps.x[j]);
for(j=(j+1)%nps.pointNum;j!=i;j=(j+1)%nps.pointNum)
{
var2=(nps.x[i]-nps.x[k])*(nps.y[i]-nps.y[j])-(nps.y[i]-nps.y[k])*(nps.x[i]-nps.x[j]);
if(var1*var2<0) return 0;
if(var2!=0) var1=var2;
}
if(var1==0) return 0;
}
return 1;
}
main()
{
int i;
points nps;
printf("请输入顶点的个数:");
scanf("%d",&nps.pointNum);
printf("请输入这些顶点的坐标,每个点的横坐标和纵坐标用逗号分隔开( 例如12.5,34 ):\n");
for(i=0;i<nps.pointNum;i++)
{
printf("第%d个顶点:",i+1);
scanf("%lf,%lf",&nps.x[i],&nps.y[i]);
}
if(polygon(nps))
printf("该多边形是凸多边形。\n");
else
printf("该多边形不是凸多边形!!!\n"); 展开
1个回答
展开全部
#include <stdio.h> /*头文件*/
#define N 100 /*定义常量N为100*/
typedef struct{ /*定义一个结构体*./
double x[N];
double y[N];
int pointNum;
}points; /*定义变量points*/
int polygon(points nps) /*定义一个名为polygon的函数*/
{
double var1,var2;
int i,j,k;
if(nps.pointNum<3) return 0; /*判断变量pointNum是否小于3,若是,则返回0*/
for(i=0;i<nps.pointNum;i++) /*在polygon里定义for的循环函数,i从0到pointNum内循环,每循环一次加1*/
{
j=(i+2)%nps.pointNum; /*j=(i+2)除以pointnum的余数*/
k=(i+1)%nps.pointNum; /*k=(i+1)除以pointNum的余数*/
var1=(nps.x[i]-nps.x[k])*(nps.y[i]-nps.y[j])-(nps.y[i]-nps.y[k])*(nps.x[i]-nps.x[j]);
for(j=(j+1)%nps.pointNum;j!=i;j=(j+1)%nps.pointNum)
/*在上一个for函数里再建立一个for函数,j从(j=1)除以poinyNum的余数到j不等于i为止,每循环一次加(j=1)除以poinyNum的余数*/
{
var2=(nps.x[i]-nps.x[k])*(nps.y[i]-nps.y[j])-(nps.y[i]-nps.y[k])*(nps.x[i]-nps.x[j]);
if(var1*var2<0) return 0; /*如果var1乘var2小于0,则返回0*/
if(var2!=0) var1=var2; /*如果var2不等于0,则把var2的值给var1*/
} /*第二个for结束*/
if(var1==0) return 0; /*如果var1等于0,则返回08/
} /*第一个for结束*/
return 1;
} /*polygon函数定义结束*/
main() /*主函数*/
{
int i;
points nps;
printf("请输入顶点的个数:"); /*输出“请输入顶点的个数:”*/
scanf("%d",&nps.pointNum); /*输入数据*/
printf("请输入这些顶点的坐标,每个点的横坐标和纵坐标用逗号分隔开( 例如12.5,34 ):\n");
for(i=0;i<nps.pointNum;i++) /*依次输出几个顶点及x[i],y[i]*/
{
printf("第%d个顶点:",i+1);
scanf("%lf,%lf",&nps.x[i],&nps.y[i]);
}
if(polygon(nps)) /*如果poligon返回为真,则输出“该多边形是凸多边形。”*/
printf("该多边形是凸多边形。\n");
else /*否则输出“该多边形不是凸多边形!!!”*/
printf("该多边形不是凸多边形!!!\n");
#define N 100 /*定义常量N为100*/
typedef struct{ /*定义一个结构体*./
double x[N];
double y[N];
int pointNum;
}points; /*定义变量points*/
int polygon(points nps) /*定义一个名为polygon的函数*/
{
double var1,var2;
int i,j,k;
if(nps.pointNum<3) return 0; /*判断变量pointNum是否小于3,若是,则返回0*/
for(i=0;i<nps.pointNum;i++) /*在polygon里定义for的循环函数,i从0到pointNum内循环,每循环一次加1*/
{
j=(i+2)%nps.pointNum; /*j=(i+2)除以pointnum的余数*/
k=(i+1)%nps.pointNum; /*k=(i+1)除以pointNum的余数*/
var1=(nps.x[i]-nps.x[k])*(nps.y[i]-nps.y[j])-(nps.y[i]-nps.y[k])*(nps.x[i]-nps.x[j]);
for(j=(j+1)%nps.pointNum;j!=i;j=(j+1)%nps.pointNum)
/*在上一个for函数里再建立一个for函数,j从(j=1)除以poinyNum的余数到j不等于i为止,每循环一次加(j=1)除以poinyNum的余数*/
{
var2=(nps.x[i]-nps.x[k])*(nps.y[i]-nps.y[j])-(nps.y[i]-nps.y[k])*(nps.x[i]-nps.x[j]);
if(var1*var2<0) return 0; /*如果var1乘var2小于0,则返回0*/
if(var2!=0) var1=var2; /*如果var2不等于0,则把var2的值给var1*/
} /*第二个for结束*/
if(var1==0) return 0; /*如果var1等于0,则返回08/
} /*第一个for结束*/
return 1;
} /*polygon函数定义结束*/
main() /*主函数*/
{
int i;
points nps;
printf("请输入顶点的个数:"); /*输出“请输入顶点的个数:”*/
scanf("%d",&nps.pointNum); /*输入数据*/
printf("请输入这些顶点的坐标,每个点的横坐标和纵坐标用逗号分隔开( 例如12.5,34 ):\n");
for(i=0;i<nps.pointNum;i++) /*依次输出几个顶点及x[i],y[i]*/
{
printf("第%d个顶点:",i+1);
scanf("%lf,%lf",&nps.x[i],&nps.y[i]);
}
if(polygon(nps)) /*如果poligon返回为真,则输出“该多边形是凸多边形。”*/
printf("该多边形是凸多边形。\n");
else /*否则输出“该多边形不是凸多边形!!!”*/
printf("该多边形不是凸多边形!!!\n");
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询