DEV C++及VC++2002编译运行通过(当然是只用C)
输入坐标时格式为:
X Y Z
*/
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
#define PointInit(p) p[0]=0.0,p[1]=0.0,p[2]=0.0
#define PointAdd(p0,p1) p0[0]+=p1[0],p0[1]+=p1[1],p0[2]+=p1[2]
#define PointDiv(p,n) p[0]/=n,p[1]/=n,p[2]/=n
#define PointDiff(p0,p1) (p0[0]-p1[0])*(p0[0]-p1[0])+(p0[1]-p1[1])*(p0[1]-p1[1])+(p0[2]-p1[2])*(p0[2]-p1[2])
int main(int argc, char* argv[]){
double g0[3],g1[3],t[3]
int n,m
PointInit(g0)PointInit(g1)PointInit(t)
printf("输入点群1内点的个数:")
for(assert(scanf("%d",&n)==1),printf("输入点:\n"),m=nn>0n--,PointAdd(g0,t))
assert(scanf("%lf %lf %lf",&t[0],&t[1],&t[2])==3)
PointDiv(g0,m)
printf("输入点群2内点的个数:")
for(assert(scanf("%d",&n)==1),printf("输入点:\n"),m=nn>0n--,PointAdd(g1,t))
assert(scanf("%lf %lf %lf",&t[0],&t[1],&t[2])==3)
PointDiv(g1,m)
printf("点群1重心:%f,%f,%f\n点群2重心:%f,%f,%f\n",g0[0],g0[1],g0[2],g1[0],g1[1],g1[2])
for(printf("\n请输入测试距离的点:")scanf("%lf %lf %lf",&t[0],&t[1],&t[2])==3)
{
double d0=PointDiff(g0,t),d1=PointDiff(g1,t)
if(d0==d1) printf("与两个点群重心的距离相等\n")
else if(d0>d1) printf("与点群2重心的较近\n")
else printf("与点群1重心的较近\n")
}
return 0
}
三角形的重心坐标公式x=(x1+x2+x3)/3,y=(y1+y2+y3)/3两点距离 sqrt[(x1-x2)(x1-x2)+(y1-y2)(y1-y2)]
#include <math.h>
main(){
clrscr()
printf("顶点为 (1.5,2)(3,1)(2.1,4)的三角形\n")
printf("重心坐标为(%4.1f,%4.1f)\n",(1.5+3+2.1)/3,(2+1+4)/3)
printf("三边长为%5.3f %5.3f %5.3f \n",sqrt((1.5-3)*(1.5-3)+(2-1)*(2-1)),
sqrt((1.5-2.1)*(1.5-2.1)+(2-4)*(2-4)), sqrt((2.1-3)*(2.1-3)+(4-1)*(4-1)),)
}
c语言是很多人都想学习的内容,但是很多人都不知道如何开头。
1.初级阶段
这个阶段,其实就是入门阶段。这个阶段的学习办法也很简单,看书、做题。不过这个简单的看书做题却又有一些留意事项。就是书看什么书,题做什么题。首先,关于初学来说,我以为看谭浩强的c言语就能够了,毕竟是初学,不用看难度太大、写的太深的书。至于做题,分两种方式,一种是把谭浩强c言语对应的题集买下来,好好地做一遍;另外一种是把这些题再在电脑里面编一遍。纸上做题是为了锻炼思想、稳固根底,电脑上编程才是真正的学致使用,两者都需求停止。置信依照这个过程,会提升你对c言语的兴味,也能让你快速入门。
有人可能会说谭浩强的c言语太浅,这里我要解释下为什么我要引荐这本书。由于我觉得作为初学者,应该由浅入深,上来就看太难的东西,会消除本人的学习兴味。
2.中级阶段
这个阶段,是对c言语的进阶阶段。这个阶段的学习办法是看书、练习、琢磨。这个阶段的重点倾向于c言语语法背后的原理,例如全局变量和部分变量在内存中分配的区别,又比方栈中分配和分配在堆中又有什么区别等等。这个阶段需求看的书应该主要是《c专家编程》、《c圈套与缺陷》这样的书。在这里,我还要特别引荐一本宋劲杉写的《c言语一站式编程》。这本书的作者固然不是计算机专业的,但是我以为真的写得十分好,关于理解c言语背后的原理,十分合适。经过这个阶段,你对c言语曾经有一个十分不错的功底了。
3.进阶
这个阶段的标题我没有用高级阶段,只用了进阶。由于我觉得高级阶段要懂得东西太多,而且不只仅限于c言语自身或者是编程的东西,所以我用了进阶。
在这个阶段主要是对算法和数据构造上面的学习。入门首先引荐严蔚敏的数据构造。这本书不厚,都是根底的学问,需求将这本书中的学问好好地控制。这本书学完,数据构造根本上没有问题了,根底算法也理解一些了。那么就能够再学习《算法导论》,并且选择一些算法本人入手完成。
当然,这个阶段你也能够选择不重点在算法上面研讨。除了严蔚敏的数据构造是必需控制的外,你也能够选择学习《unix环境高级编程》、《unix网络编程》这样的书籍停止学习。但是我倾向于算法的学习。
4.实战
阅历了上面三个阶段,我以为你根本上曾经晓得本人还要学哪些、该怎样学习了。但是我还是要提示你,这个时分还能够找一个c言语完成的开源项目,好好的研讨一下。个人以为最好的就是linux内核源码。
总结
c言语作为一门编程言语,应该是每个软件开发人员都应该控制的,而对计算机专业的学生来说更是根底。假如你依照我上面说的步骤,把这些学问都控制的话,置信你的c言语可以到达一个较好的程度。