求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");
展开
 我来答
布天音
2010-12-17
知道答主
回答量:15
采纳率:0%
帮助的人:13.9万
展开全部
#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");
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式