浙大版《C语言程序设计(第3版)》题目集 习题3-5 三角形判断 (15 分)

习题3-5 三角形判断 (15 分)

给定平面上任意三个点的坐标(x1,y1)、(x2,y2)、(x3,y3),检验它们能否构成三角形。1??,y?1??)、(x?2??,y?2??)、(x?3??,y?3??),检验它们能否构成三角形

输入格式:

输入在一行中顺序给出六个[?100,100]范围内的数字,即三个点的坐标x1、y1、x2、y2、x3、y3。(。x1,y1)、(x2,y2)、(x3,y3)1??、y?1??、x?2??、y?2??、x?3??、y?3??。

输出格式:

若这3个点不能构成三角形,则在一行中输出“Impossible”;若可以,则在一行中输出该三角形的周长和面积,格式为“L = 周长, A = 面积”,输出到小数点后2位。

输入样例1:

4 5 6 9 7 8

输出样例1:

L = 10.13, A = 3.00

输入样例2:

4 6 8 12 12 18

输出样例2:

Impossible


思路:先用两点间距离公式求出三边边长。(d=√[(x? - x?)2+(y? - y?)2])   再用海伦公式判断是否能组成三角形,并求出面积。  代码如下:
#include<stdio.h>
#include<math.h>
int main()
{
    double x1 ,x2, x3, y1, y2, y3, a, b, c, L, A, s, delta;

    scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3);
    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));
    s=(a+b+c)/2;
    delta=(s-a)*(s-b)*(s-c);//用delta判别是否能成为三角形
    if(delta<=0)     printf("Impossible\n");
    else
    {
    L=2*s;
    A=sqrt(s*delta);
    printf("L = %.2lf, A = %.2lf\n",L,A);
    }

    return 0;
}

科普:海伦-秦九韶公式

    希羅公式Heron‘s formulaHero‘s formula),又译希罗公式希伦公式海龙公式,亦称“海伦-秦九韶公式”。此公式是亚历山大港的海伦发现的,并可在其于公元60年的《Metrica》中找到其证明,利用三角形的三条边长来求取三角形面积。亦有认为早于阿基米德已经懂得这条公式,而由于《Metrica》是一部古代数学知识的结集,该公式的发现时期很有可能先于海伦的著作。

    假设有一个三角形,边长分别为,三角形的面积可由以下公式求得:,其中。中国南宋末年数学家秦九韶发现或知道等价的公式,其著作《数书九章》卷五第二题即三斜求积。“问沙田一段,有三斜,其小斜一十三里,中斜一十四里,大斜一十五里,里法三百步,欲知为田几何?”答曰:“三百十五顷.”其术文是:“以小斜幂并大斜幂,减中斜幂,余半之,自乘于上;以小斜幂乘大斜幂,减上,余四约之为实,……开平方得积。”若以大斜记为,中斜记为,小斜记为,秦九韶的方法相当于下面的一般公式:

                          ,其中

像其他中国古代的数学家一样,他的方法没有证明。根据现代数学家吴文俊的研究,秦九韶公式可由出入相补原理得出。一些中国学者将这个公式称为秦九韶公式

由于任何边的多边形都可以分割成个三角形,所以海伦公式可以用作求多边形面积的公式。比如说测量土地的面积的时候,不用测三角形的高,只需测两点间的距离,就可以方便地导出答案。

各种证明如下:

利用三角公式和代数式变形来证明

与海伦在他的著作《Metrica》中的原始证明不同,在此我们用三角公式和公式变形来证明。设三角形的三边的对角分别为,则余弦定理为

                                  

利用和平方、差平方、平方差等公式,从而有

利用勾股定理和代数式变形来证明

用旁心来证明

中,

为内心,为三旁切圆。

四点共圆,并设此圆为圆

  1. 做铅直线交,再延长,使之与圆交于点。再过做铅直线交点。
  2. 先证明为矩形,,又(圆周角相等)。为矩形。因此,
  3. 内切圆半径旁切圆半径。且易知。由圆幂性质得到:。故

来源:维基百科-海伦-秦九韶公式(https://zh.wikipedia.org/wiki/%E6%B5%B7%E4%BC%A6%E5%85%AC%E5%BC%8F)

 

原文地址:https://www.cnblogs.com/IT-Lead-The-World/p/10350950.html

时间: 2024-10-02 08:32:57

浙大版《C语言程序设计(第3版)》题目集 习题3-5 三角形判断 (15 分)的相关文章

浙大版《C语言程序设计(第3版)》题目集 练习3-4 统计字符 (15 分)

练习3-4 统计字符 (15 分) 本题要求编写程序,输入10个字符,统计其中英文字母.空格或回车.数字字符和其他字符的个数. 输入格式: 输入为10个字符.最后一个回车表示输入结束,不算在内. 输出格式: 在一行内按照 letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数 的格式输出. 输入样例: aZ & 09 Az 输出样例: letter = 4, blank = 3, digit = 2, other = 1

浙大版《C语言程序设计(第3版)》题目集 练习3-7 成绩转换 (15 分)

练习3-7 成绩转换 (15 分) 本题要求编写程序将一个百分制成绩转换为五分制成绩.转换规则: 大于等于90分为A: 小于90且大于等于80为B: 小于80且大于等于70为C: 小于70且大于等于60为D: 小于60为E. 输入格式: 输入在一行中给出一个整数的百分制成绩. 输出格式: 在一行中输出对应的五分制成绩. 输入样例: 90 输出样例: A 思路:用if-else语句分五种情况讨论. 代码如下: #include<stdio.h> int main() { int a, A, B,

浙大版《C语言程序设计(第3版)》题目集 练习3-5 输出闰年 (15 分)

练习3-5 输出闰年 (15 分) 输出21世纪中截止某个年份以来的所有闰年年份.注意:闰年的判别条件是该年年份能被4整除但不能被100整除.或者能被400整除. 输入格式: 输入在一行中给出21世纪的某个截止年份. 输出格式: 逐行输出满足条件的所有闰年年份,即每个年份占一行.输入若非21世纪的年份则输出"Invalid year!".若不存在任何闰年,则输出"None". 输入样例1: 2048 输出样例1: 2004 2008 2012 2016 2020 2

C语言程序设计 第3版 课后习题答案 苏小红 王宇颖 孙志岗 版 实验题答案 高等教育出版社 课后答案 解析 第3章 课后答案

C语言程序设计 第3版 课后习题答案  苏小红 王宇颖 孙志岗  实验题答案 高等教育出版社 课后答案 解析 第3章 课后答案 C语言程序设计 苏小红 王宇颖 孙志岗 版 习题3 课后习题答案 前辅文第1章 为什么要学C 语言 课后习题答案1.1 引言1.2 游戏?黑客和C 语言1.3 C 语言,不老的传说1.4 C 语言的爱与恨1.5 C 语言教给我们的事1.6 什么是“编程”1.7 本章小结习题1第2章 C 数据类型 课后答案2.1 常量与变量2.1.1 常量2.1.2 变量2.2 简单的屏

浙大版《C语言程序设计(第3版)》题目集 练习2-9 整数四则运算 (10 分)

练习2-9 整数四则运算 (10 分) 本题要求编写程序,计算2个正整数的和.差.积.商并输出.题目保证输入和输出全部在整型范围内. 输入格式: 输入在一行中给出2个正整数A和B. 输出格式: 在4行中按照格式"A 运算符 B = 结果"顺序输出和.差.积.商. 输入样例: 3 2 输出样例: 3 + 2 = 5 3 - 2 = 1 3 * 2 = 6 3 / 2 = 1 思路:格式化输出.代码如下: #include <stdio.h> int main() { int

浙大版《C语言程序设计(第3版)》题目集 习题2-6 求阶乘序列前N项和 (15 分)

习题2-6 求阶乘序列前N项和 (15 分) 本题要求编写程序,计算序列 1!+2!+3!+? 的前N项之和. 输入格式: 输入在一行中给出一个不超过12的正整数N. 输出格式: 在一行中输出整数结果. 输入样例: 5 输出样例: 153 思路:利用函数阶乘累加. 代码如下: #include <stdio.h> long factorial(long n); int main() { long n; scanf("%ld",&n); printf("%l

浙大版《C语言程序设计(第3版)》题目集 习题3-2 高速公路超速处罚 (15 分)

习题3-2 高速公路超速处罚 (15 分) 按照规定,在高速公路上行使的机动车,达到或超出本车道限速的10%则处200元罚款:若达到或超出50%,就要吊销驾驶证.请编写程序根据车速和限速自动判别对该机动车的处理. 输入格式: 输入在一行中给出2个正整数,分别对应车速和限速,其间以空格分隔. 输出格式: 在一行中输出处理意见:若属于正常行驶,则输出"OK":若应处罚款,则输出"Exceed x%. Ticket 200":若应吊销驾驶证,则输出"Exceed

浙大版《C语言程序设计(第3版)》题目集 练习4-10 找出最小值 (20 分)

练习4-10 找出最小值 (20 分) 本题要求编写程序,找出给定一系列整数中的最小值. 输入格式: 输入在一行中首先给出一个正整数n,之后是n个整数,其间以空格分隔. 输出格式: 在一行中按照“min = 最小值”的格式输出n个整数中的最小值. 输入样例: 4 -2 -123 100 0 输出样例: min = -123 思路:假设输入的第一个是最小值,如果后面输入的小于最小值,更新最小值. 代码如下: #include <stdio.h> int main() { int n, i, mi

学习《C语言程序设计第四版.谭浩强》计划

1.每天学习一个章节 2.所有的课程代码手动创建.生成 3.完成课后习题 4.每章节发表博客 5.每章节写笔记 第一章:程序设计和C语言 第二章:算法--程序的灵魂 第三章:最简单的C程序设计--顺序程序设计 第四章:选择结构程序设计 第五章:循环结构程序设计 第六章:利用数组处理批量数据 第七章:用函数实现模块化程序设计 第八章:善于利用指针 第九章:用户自己建立数据类型 第十章:对文件的输入输出 第十一章:常见错误分析