C语言代码求解释翻译,越详细越好!

#include "circle.h"

circle *circle_new()
{
circle *returnValue;

returnValue = (circle *) malloc(sizeof(circle));
memset(returnValue, 0, sizeof(circle));

return returnValue;
}

circleList *circleList_new(int noOfCircle)
{
circleList *returnValue;

returnValue = (circleList *) malloc(sizeof(circleList));
memset(returnValue, 0, sizeof(circleList));
returnValue->list = (circle **) malloc(sizeof(circle *)*noOfCircle);
returnValue->noOfCircle = noOfCircle;

return returnValue;
}

circle *circle_getCircle(circleList *aCircleList, int circleID)
{
circle *returnValue;

returnValue = aCircleList->list[circleID];

return returnValue;
}

void circle_print(circle *aCircle)
{
double x, y, radius;

x = aCircle->x;
y = aCircle->y;
radius = aCircle->radius;

printf("(%.5f, %.5f) with radius = %.5f\n", x, y, radius);
}

void circleList_print(circleList *aCircleList)
{
circle **list;
circle *aCircle;

int i;

int noOfCircle;

noOfCircle = aCircleList->noOfCircle;
list = aCircleList->list;

for (i = 0; i < noOfCircle; i++)
{
aCircle = list[i];
printf(" Circle %d \n", i);
circle_print(aCircle);
}
}

int circle_checkWhetherCircleCoverPoint(circle *aCircle, double x, double y)
{
int returnValue;

double centerX, centerY;
double radius;

double leftSide, rightSide;

double temp1, temp2;

centerX = aCircle->x;
centerY = aCircle->y;
radius = aCircle->radius;

temp1 = centerX - x;
temp2 = centerY - y;

leftSide = temp1*temp1 + temp2*temp2;
rightSide = radius*radius;

if (leftSide <= rightSide)
{
returnValue = 1;
}
else
{
returnValue = 0;
}

return returnValue;
}

第1个回答  2013-08-24
#include "circle.h"

//创建一个圆实例(分配内存)
circle *circle_new()
{
circle *returnValue;

returnValue = (circle *) malloc(sizeof(circle));
memset(returnValue, 0, sizeof(circle));

return returnValue;
}

//创建一个圆列表的实例(分配内存)
//noOfCircle表示该列表最多容纳多少个圆
//由于没有头文件,猜测该列表是通过一个数组模拟的。(list是一个圆指针的数组)
circleList *circleList_new(int noOfCircle)
{
circleList *returnValue;

returnValue = (circleList *) malloc(sizeof(circleList));
memset(returnValue, 0, sizeof(circleList));
returnValue->list = (circle **) malloc(sizeof(circle *)*noOfCircle);
returnValue->noOfCircle = noOfCircle;

return returnValue;
}

//根据指定的ID获得圆
//circleList *aCircleList(圆列表), int circleID(圆ID)
//返回指定的圆
circle *circle_getCircle(circleList *aCircleList, int circleID)
{
circle *returnValue;

returnValue = aCircleList->list[circleID];

return returnValue;
}

//打印一个圆,包括圆心坐标:x,y和半径r
void circle_print(circle *aCircle)
{
double x, y, radius;

x = aCircle->x;
y = aCircle->y;
radius = aCircle->radius;

printf("(%.5f, %.5f) with radius = %.5f\n", x, y, radius);
}

//打印一个列表中的所有的圆,
void circleList_print(circleList *aCircleList)
{
circle **list;
circle *aCircle;

int i;

int noOfCircle;

noOfCircle = aCircleList->noOfCircle;
list = aCircleList->list;

for (i = 0; i < noOfCircle; i++)
{
aCircle = list[i];
printf(" Circle %d \n", i);
circle_print(aCircle);
}
}

//检查一个圆(aCircle)是否覆盖某个点(x,y)
int circle_checkWhetherCircleCoverPoint(circle *aCircle, double x, double y)
{
int returnValue;

double centerX, centerY;
double radius;

double leftSide, rightSide;

double temp1, temp2;

centerX = aCircle->x;
centerY = aCircle->y;
radius = aCircle->radius;

temp1 = centerX - x;
temp2 = centerY - y;

leftSide = temp1*temp1 + temp2*temp2;
rightSide = radius*radius;

if (leftSide <= rightSide)
{
returnValue = 1;
}
else
{
returnValue = 0;
}

return returnValue;
}追问

好厉害。好多问题不懂,怎么联系你

本回答被提问者采纳
第2个回答  2013-08-24
太长了,这看着头疼啊追问

还有个800多行的。。。

相似回答