2017年苏州大学研究生复试机试编程上机题C

以每相邻两个整数为一对按顺序构成二维平面上的坐标点. 例如:有数据 12 , 34 , 53 , 25 , 61 ,
28 , 78 等,则构成六个坐标点如下: (12, 34) 、 (34, 53) , (53, 25) , (25, 61) , (61, 28) , (28,
78) ;
以每个坐标点为圆心,以该点与其后面第一个点的欧氏距离为半径 r . 计算每个圆包含的坐标点数. 计算最后
一个点时以其和第一个点的欧氏距离为半径.
例如:
坐标点 (12, 34) 的圆半径$r=\sqrt{(12-34)^2+(34-53)^2}$是坐标点 (12, 34) 与 (34, 53) 的欧式距离.
坐标点 (28, 78) 的圆半径$r=\sqrt{(28-12)^2+(78-34)^2}$是坐标点 (28, 78) 与 (12, 34) 的欧式距离.
坐标点 包含点数 点密度
(x坐标,y坐标) (占5列,右对齐) (占7列,右对齐,保留2位小数)
计算所有圆的点密度值,然后输出点密度值最大的 5 个坐标点以及相应圆中包含的点数和点密度值. 输出格式
要求:
上述文字部分不需要显示.
其中:圆的点密度为圆包含的点数除以圆面积,如果点在圆上,则也算圆包含该点,在计算点密度时,圆心也算一
个点. 计算圆面积时$\pi=3.14$. 例如:坐标点 (2, 1) ,则该坐标点也属该坐标点的圆内的一个点.

有小伙问我,所以写了一下。

 

#include
#include
#include
#include
#include
#define PI 3.14
typedef struct 
{
	int x;
	int y;
	double r;
	int dianshu;
	double midu;
	double mianji;
}Circle;
double distance(int a,int b,int c,int d)
{
	int val = (a - c) * (a - c) +(b - d) * (b - d);
	return sqrt((double)val);
}
double suanmianji(Circle* c)
{
	double mianji;
	mianji=(c->r*c->r)*PI;
	return mianji;
}
int create_circle(int* num,int count,Circle*& circles)
{
	int circle_num;
	circle_num=count-1;
	circles=(Circle*)malloc(sizeof(Circle)*circle_num);
	for(int i=0;i


因为没有相关的文件,所以rand了128个,其余的排序选择一个即可,
代码主要是关于开辟内存区间,许久没用c写东西所以指针方面有些生疏,查询了若干代码。代码还有可以改进的地方。

你可能感兴趣的:(C//C++)