关于用C语言求三点坐标围成的面积的问题
是最后的输出应该用%lf因为s是double型数据
这是已知三角形3顶点坐标A(x1,y1),B(x2,y2),C(x3,y3),求三角形ABC的面积的公式
公式中书写形式是二阶行列式
写成一般形式如下:
设A(x1,y1),B(x2,y2),C(x3,y3)在坐标系中中顺序为三点按逆时针排列,
S=1/2[(x1y2-x2y1)+(x2y3-x3y2)+(x3y1-x1y3)]。
找点D(-3,-1),E(4,-1),F(4,6)..连接A、D,连接D、E,连接E、F 连接A、F
用矩形面积ADEF=7*7=49减去三角形ABD面积=7*2/2=7、三角形BCE=5*3/2=7.5、ACF=4*7/2=14的面积,最后等于20.5
扩展资料:
行列式的概念是从解线性方程组的需要中引进来的。所谓线性方程组是指未知项的最高次数是一次的方程组,其中最简单的是在中学时学习的二元线性方程组:
其中 表示第 个方程中第 个未知数的系数, 表示第 个方程的常数项。
xj表未知量,aij称系数,bi称常数项。
称为系数矩阵和增广矩阵。若x1=c1,x2=c2,…,xn=cn代入所给方程各式均成立,则称(c1,c2,…,cn)为一个解。若c1,c2,…,cn不全为0,则称(c1,c2,…,cn)为非零解。若常数项均为0,则称为齐次线性方程组,它总有零解(0,0,…,0)。两个方程组,若它们的未知量个数相同且解集相等,则称为同解方程组。线性方程组主要讨论的问题是:
①一个方程组何时有解。
②有解方程组解的个数。
③对有解方程组求解,并决定解的结构。这几个问题均得到完满解决:所给方程组有解,则秩(A)=秩(增广矩阵);若秩(A)=秩=r,则r=n时,有唯一解;r<n时,有无穷多解;可用消元法求解。
当非齐次线性方程组有解时,解唯一的充要条件是对应的齐次线性方程组只有零解;解无穷多的充要条件是对应齐次线性方程组有非零解。但反之当非齐次线性方程组的导出组仅有零解和有非零解时,不一定原方程组有唯一解或无穷解,事实上,此时方程组不一定有 ,即不一定有解。
克莱姆法则(见行列式)给出了一类特殊线性方程组解的公式。n个未知量的任一齐次方程组的解集均构成n维空间的一个子空间。
#include<math.h>
int main() //C99标准写法
{
double x1,x2,x3,y1,y2,y3,s,a,b,c,p;
printf("请输入A,B,C点坐标:");
scanf("(%lf,%lf),(%lf,%lf),(%lf,%lf)",&x1,&y1,&x2,&y2,&x3,&y3); //输入格式不对,
//请看下面解释;另外输入时,应这样输入,比如:(0,0),(0,4),(4,0)
a=sqrt(pow((x1-x2),2)+pow((y1-y2),2));
b=sqrt(pow((x2-x3),2)+pow((y2-y3),2));
c=sqrt(pow((x1-x3),2)+pow((y1-y3),2));
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
printf("三点所围成的面积=%f\n",s); //输出格式不对,请看下面解释
return 0;
}
说明:
(1)printf的%f说明符既可以输出float型又可以输出double型。
根据“默认参数提升”规则(在printf这样的函数的可变参数列表中,不论作用域内有没有原型,都适用这一规则)float型会被提升为double型。因此printf()只会看到双精度数。
(2)scanf对于float类型必须用%f,double必须用%lf
对于scanf,情况就完全不同了,它接受指针,这里没有类似的类型提升。(通过指针)向float存储和向double存储大不一样,因此,scanf区别%f和%lf。
(3)事实上,printf没有定义%lf,但很多系统可能会接受它.为确保可移植性,请坚持使用%f。
要想保留小数位数,请使用(比如保留8位小数):
printf("%.8f",a);
你的代码缺点scanf()函数写的太复杂,把里面的括号与逗号最好去掉,避免在输入数据时忘了按而出错,其中可以用空格来代替。
主要有两个错误,而出错的地方原因都是相同的,就是格式控制符不对,你定义的变量全部是double类型的,而你的输入输出格式却是整形%d的,你试着将输入输出中的%d改成%lf看看。
用c语言将x∈[0,2π]区间几等分,试用三点拉格朗日插值法方式求x=1.4...
,&x);x0=x-0.1;x1=x+0.1;x2=x+0.15;\/\/需要输入3个插值点,即对应的x值和函数y值,这里简单计算的可以手动输入 y0=sin(x0);y1=sin(x1);y2=sin(x2);printf("sin(%lf)=%lf---fun(%lf)=%lf\\n",x,sin(x),x,fun(x,x0,x1,x2,y0,y1,y2));return 0;} ...
关于C语言程序 三角形知顶点求内角
把你的代码贴上来吧,我看看能不能给你改一下!!基本思路是使用余弦定理 cos B = (a^2 + c^2 -b^2) \/ (2*a*c);首先可以算出三条边的长度,如果有两个之和等于第三个,那么就是三点共线,不是三角形。其他情况就是三角形了,调用余弦定理一个一个算就行了。下面是代码 include <...
c语言,三点共线,wrong answer,找错
不知道你的是什么算法来着...可以看成两个直角三角形, 比较他们的比例是否一样, 不是就不成立.include<stdio.h>#define DS 3#define D 2int main(void){ int i, j, cishu; i = j = cishu = 0; int dian [DS][D] ={{0,0}}; scanf("%d", &cishu); while...
C语言编程:输入ABCD四点坐标,假设ABC可以构成三角形,判断D在不在内...
你最近备考的是什么?全是计算几何的东西啊 上一个问题的大部分没变,加了一个判断符号的函数,一个求三点叉积的函数,判断三个叉积方向相同就行了。include<stdio.h>#include<math.h>typedef struct Point{ \/\/ 二维点或矢量 double x, y;}Point;Point decPoint(Point p1,Point p2){ \/...
C语言如何用表达式表达时间time是上午十点或下午三点?求大神指教
(time==10||time==15)
C语言求判断三角形并求面积和周长,输入坐标系的三个点(x1,y1)(x2...
三角形,要同时满足:(1)两边之和大于第三边 ,(2)两边之差小于第三边。你只考虑了 (1),(还考虑得不全,应当是 &&)其实,最简单的判别法 是 判断:s*(s-a)*(s-b)*(s-c) 的 值。如果 大于 0, 就是 合法的 三角形。可以计算面积和周长。如果 等于 0, 3点 在 一条线上...
c语言编写一个求三个整数和的程序并输出结果。
程序代码如下:直接编译,程序输出结果中任意输入三个数字,程序执行结果如下图所示:
c语言求三者之中最大数
C语言求三个数中最大数如下:假定三个数为a,b,c,求出最大数,算法分析如下:如果a>b,则a与c比较,a>c则输出a,a<c则输出c。否则b与c比较,b>c则输出b,b<c则输出c。C语言简介 C语言是一种通用的、高级的编程语言,于1972年由贝尔实验室的Dennis Ritchie开发。它被广泛应用于系统软件...
C语言:平面上有三个点A、B、C,求∠ABC的大小。
include <stdio.h> include <math.h> void main(){ float x1,y1,x2,y2,x3,y3;float a,b,c,t;printf("请输入6个实数:");\/\/A(x1,y1),B(x2,y2),C(x3,y3)scanf("%f,%f,%f,%f,%f,%f,%f",&x1,&y1,&x2,&y2,&x3,&y3);c=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-...
c语言三个数求最大值_输入三个数求最大值c语言
作为走进计算机软件编程大门和进军IT行业的入门语言,c语言的重要历史地位和应用的广泛性毋庸置疑。为了帮助c语言初学者入门,今天我给大家带来C语言三个数求最大值与最小值源代码语句,我使用的编译环境是vc++6.0,以c语言三个数求最大值为例子演示。方法一:c语言三个数求最大值_输入三个数求最大...
暨之妇科: //三个顶点坐标是6个参数...#include <stdio.h> #include <math.h>double S_triangle(double ax,double ay,double bx,double by,double cx,double cy) {double mx=cx-ax,my=cy-ay,nx=bx-ax,ny=by-ay;double Lm= sqrt(mx*mx+my*my),Ln= sqrt(nx*...
玉山县19283503412: C语言,求三角形面积:从键盘输入三个顶点坐标(x1,y1)(x2,y2)(x3,y3)假设可能构成 - ?
暨之妇科: #includefloat dis(float x1,float y1,float x2,float y2) {float dx,dy;dx=x1-x2;dy=y1-y2;return sqrt(dx*dx+dy*dy); } int main() {float x1,x2,x3,y1,y2,y3,p,s,a,b,c; scanf("%f %f",&x1,&y1);scanf("%f %f",&x2,&y2);scanf("%f %f",&x3,&y3); a=dis(x...
玉山县19283503412: c语言,输入三个点坐标,求围成的三角形面积,请大家帮忙看下程序错在哪里,(输出了nan) - ?
暨之妇科: 注意输入格式,double 用 %lf 不能用 %f,(输出 允许 用 %f) . 输入数据 格式,你 语句 用 逗号分隔格式,数据也要含 逗号.
玉山县19283503412: 求一个"通过三角形的3个点坐标求其面积的C++程序"如题 谢谢了 - ?
暨之妇科: #include#include using namespace std; int main() { double data[3][2]; double a[3],p;//存储三条边的长度. int i; for(i=0;i<3;i++) { cout<<"请输入第"<<<"个点"<>data[i][0]>>data[i][1]; } p=pow(data[0][0]-data[1][0],2)+pow(data[0][1]-data[1][1],2); ...
玉山县19283503412: C语言中有关三角形面积的求解~~~ - ?
暨之妇科: 已知平面上三角形3个顶点坐标 x[3],y[3], 计算 3 角形面积:#include#include double tri_area_2D(double x[3], double y[3]){ double a,b,c,s; double dx1,dx2,dx3,dy1,dy2,dy3,dz1,dz2,dz3; double area; dx1 = x[1]-x[0]; dx2 = x[2]-x[1]; dx3 = x[0]-x[2]; dy1 ...
玉山县19283503412: C语言,求三角形的面积.输入平面上的三个点的坐标(X1,Y1)(X2,Y2)(X3,Y3)? - ?
暨之妇科: 先求出两点之间的距离,a=√(x1-x2)^2+(y1-y2)^2,b=√(x2-x3)^2+(y2-y3)^2,c=√(x1-x3)^2+(y1-y3)^2.再用海伦公式求三角形的面积s=√p(p-a)(p-b)(p-c),其中p=(a+b+c)/2.
玉山县19283503412: C语言编程,给4个坐标求围成图形面积.. 有4种情况1:三个坐标一条直线,2:4坐标一条直线 3:凹四边形 4:凸四边形 急用啊~~~~ - ?
暨之妇科: #include"stdio.h" #include"stdlib.h" #include"match.h" main() {int x1,x2,x3,x4,y1,y2,y3,y4,a,b,c,d,e,f,g,p1,p2,p3,p4,P,s1,s2,s3,s4,S; printf("输入A点坐标:"); scanf("%d,%d",&x1,&y1); printf("输入B点坐标:"); scanf("%d,%...
玉山县19283503412: c语言新手求助 关于一个给定3点坐标的矩形 求面积跟第四点坐标的问题 - ?
暨之妇科: void d (double x1,double y1,double.....){ double b1,b2,b3; b1 = sqrt((x1-x2)* (x1-x2) + (y1-y2)* (y1-y2));b2 =... 2 和3的边b3=... 1 3 //三边长度if(b1*b1+b2*b2==b3*b3){ printf("f%", b1*b2 ); printf("\n"); printf("%f,%f",x1+x3-x2,y1+y3-y2); }...
玉山县19283503412: 用c语言怎么计算yi'zhi坐标点与坐标轴围成面积 - ?
暨之妇科: 与坐标系有关,与你的围法有关. 假定直角坐标系,已知坐标点是 x,y,假定围法 是 [0,0] -> [x, 0] ->[x,y] -> [0, y]->[0,0]. 那么面积A 等于 x * y 的绝对值.基本语句: double x,y,A printf("input coords x y\n"); scanf("%lf %lf", &x, &y); A = x * y; if (A < 0) A = -A; printf("Area = %lf\n",A);