算法竞赛入门【码蹄集新手村600题】(MT1040-1060)C语言(二)

简介: 算法竞赛入门【码蹄集新手村600题】(MT1040-1060)C语言(二)

MT1049 三角形坐标

(1)题目

输入三角形三个顶点A,B,C的坐标(x,y),根据公式计算并输出三角形面积。

S=1/2 * |x1y2+x2y3+x3y1-x1y3-x2y1-x3y2|


格式

输入格式:
依次输入三个顶点A,B,C的坐标(x,y),整型,空格分隔。
输出格式:
输出实型,保留2位小数。

样例1

输入:
0 1 0 0 1 0
输出:
0.50

(2)参考代码

#include<stdio.h>
int main() 
{
    int x1, y1, x2, y2, x3, y3;
    double S;
    scanf("%d %d %d %d %d %d", &x1, &y1, &x2, &y2, &x3, &y3);
    if (x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2 >= 0)
    {
        S=1.0/2.0 * (x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2);
    }
    else
    {
        S=-1.0/2.0 * (x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2);
    }
    printf("%.2lf", S);
    return 0; 
}

MT1050 空间三角形

(1)题目

输入在三维空间的三角形三个顶点A,B,C的坐标(x,y,z),计算并输出三角形面积。不考虑不能构成三角形的特殊情况。


格式

输入格式:
依次输入三个顶点A,B,C的坐标(x,y,z),整型,空格分隔。
输出格式:
输出实型,保留2位小数。

样例1

输入:
0 0 0 0 0 3 3 0 0
输出:
4.50

(2)参考代码

#include<stdio.h>
#include<math.h>
int main() 
{
    int x1, y1, z1, x2, y2, z2, x3, y3, z3, a, b, c;
    double S, A, B, C, P;
    scanf("%d %d %d %d %d %d %d %d %d %d", &x1, &y1, &z1, &x2, &y2, &z2, &x3, &y3, &z3);
    a = (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2);
    b = (x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)+(z3-z2)*(z3-z2);
    c = (x1-x3)*(x1-x3)+(y1-y3)*(y1-y3)+(z1-z3)*(z1-z3);
    A = sqrt(a);
    B = sqrt(b);
    C = sqrt(c);
    P = (A+B+C)/2.0;
    S = sqrt(P*(P-A)*(P-B)*(P-C));
    printf("%.2lf", S);
    return 0; 
}

MT1051 四边形坐标

(1)题目

输入四边4个顶点A,B,C,D的坐标(x,y),计算并输出四边形面积。


格式

输入格式:
依次输入4个顶点A,B,C,D的坐标(x,y),四边形一定是凸四边形,整型,空格分隔。
输出格式:
输出实型,保留2位小数。

样例1

输入:
0 0 1 0 5 5 0 1
输出:
5.00

备注

分解成2个三角形,三角形面积公式: S=1/2 * |x1y2-x1y3+x2y3-x2y1+x3y1-x3y2|

(2)参考代码

#include<stdio.h>
int main() 
{
    int x1, y1, x2, y2, x3, y3, x4, y4;
    double S = 0;
    scanf("%d %d %d %d %d %d %d %d", &x1, &y1, &x2, &y2, &x3, &y3, &x4, &y4);
    if (x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2 >= 0)
    {
        S += 1.0/2.0 * (x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2);
    }
    else
    {
        S += (-1.0/2.0 * (x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2));
    }
    if (x2*y3+x3*y4+x4*y2-x2*y4-x3*y2-x4*y3 >= 0)
    {
        S += 1.0/2.0 * (x2*y3+x3*y4+x4*y2-x2*y4-x3*y2-x4*y3);
    }
    else
    {
        S += (-1.0/2.0 * (x2*y3+x3*y4+x4*y2-x2*y4-x3*y2-x4*y3));
    }
    if (x2*y4+x4*y1+x1*y2-x2*y1-x4*y2-x1*y4 >= 0)
    {
        S += 1.0/2.0 * (x2*y4+x4*y1+x1*y2-x2*y1-x4*y2-x1*y4);
    }
    else
    {
        S += (-1.0/2.0 * (x2*y4+x4*y1+x1*y2-x2*y1-x4*y2-x1*y4));
    }
    if (x1*y4+x4*y3+x3*y1-x1*y3-x4*y1-x3*y4 >= 0)
    {
        S += 1.0/2.0 * (x1*y4+x4*y3+x3*y1-x1*y3-x4*y1-x3*y4);
    }
    else
    {
        S += (-1.0/2.0 * (x1*y4+x4*y3+x3*y1-x1*y3-x4*y1-x3*y4));
    }
    printf("%.2lf", S / 2);
    return 0; 
}

MT1052 直角坐标到极坐标的转换

(1)题目

请编写一个简单程序,实现直角坐标(x,y)到极坐标 (r,θ)的转换。数学中,极坐标系是一个二维坐标系,其中平面上的每个点由一个夹角和一段相对中心点——极点(相当于我们较为熟知的直角坐标系中的原点)的距离来表示。PI=3.1415926

其中:


格式

输入格式:
输入float型,空格分隔
输出格式:
输出float型,空格分隔,保留1位小数

样例1

输入:
1 1
输出:
1.4 45.0

(2)参考代码

#include<stdio.h>
#include<math.h>
#define PI 3.1415926
int main() 
{ 
    double x, y, r, o;
    scanf("%lf %lf", &x, &y);
    r = sqrt(x*x + y*y);
    o = atan2(y, x) * 180.0 / PI;
    printf("%.1lf %.1lf", r, o);
    return 0; 
}

MT1053 极坐标到直角坐标的转换

(1)题目

请编写一个简单程序,实现极坐标 (r,θ)到直角坐标(x,y)的转换。数学中,极坐标系是一个二维坐标系,其中平面上的每个点由一个夹角和一段相对中心点——极点(相当于我们较为熟知的直角坐标系中的原点)的距离来表示。PI=3.1415926

其中:

x = r × cos( θ )

y = r × sin( θ )


格式

输入格式:
输入实型,空格分隔
输出格式:
输出实型,逗号分隔,保留2位小数

样例1

输入:
1.4142 45
输出:
1.00,1.00

(2)参考代码

#include<stdio.h>
#include<math.h>
#define PI 3.1415926
int main() 
{ 
    double r, o, x, y;
    scanf("%lf %lf", &r, &o);
    x = r * cos(o*PI/180.0);
    y = r * sin(o*PI/180.0);
    printf("%.2lf,%.2lf", x, y);
    return 0; 
}

MT1054 弓形弦长

(1)题目

假定弓形弦长为C,半径为R,弦高为H,输入R和H,输出弓形弦长C。计算公式如下:


格式

输入格式:
输入实型,空格分隔。
输出格式:
输出实型,保留2位小数。

样例1

输入:
3 2.23607 
输出:
5.80

(2)参考代码

#include<stdio.h>
#include<math.h>
int main() 
{ 
    double R, H, C;
    scanf("%lf %lf", &R, &H);
    C = 2 * sqrt(H * (2 * R - H));
    printf("%.2lf", C);
    return 0; 
}
目录
相关文章
|
1月前
|
存储 编译器 C语言
【C语言程序设计——入门】C语言入门与基础语法(头歌实践教学平台习题)【合集】
本文档介绍了C语言环境配置和编程任务,主要内容包括: - **C语言环境配置**:详细讲解了在Windows系统上配置C语言开发环境的步骤。 - **第1关:程序改错**:包含任务描述、相关知识(如头文件引用、基本语法规则)、编程要求、测试说明及通关代码。 - **第2关:scanf函数**:涉及`scanf`和`printf`函数的格式与使用方法,提供编程要求、测试说明及通关代码。 文档结构清晰,涵盖从环境搭建到具体编程任务的完整流程,适合初学者学习和实践。
51 4
|
1月前
|
C语言
【C语言程序设计——入门】基本数据类型与表达式(头歌实践教学平台习题)【合集】
这份文档详细介绍了编程任务的多个关卡,涵盖C语言的基础知识和应用。主要内容包括: 1. **目录**:列出所有关卡,如`print函数操作`、`转义字符使用`、`数的向上取整`等。 2. **各关卡的任务描述**:明确每关的具体编程任务,例如使用`printf`函数输出特定字符串、实现向上取整功能等。 3. **相关知识**:提供完成任务所需的背景知识,如格式化输出、算术运算符、关系运算符等。 4. **编程要求**:给出具体的代码编写提示。 5. **测试说明**:包含预期输入输出,帮助验证程序正确性。 6. 文档通过逐步引导学习者掌握C语言的基本语法和常用函数,适合初学者练习编程技能。
45 1
|
2月前
|
存储 NoSQL 编译器
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
指针是一个变量,它存储另一个变量的内存地址。换句话说,指针“指向”存储在内存中的某个数据。
124 3
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
|
2月前
|
存储 算法 程序员
C 语言递归算法:以简洁代码驾驭复杂逻辑
C语言递归算法简介:通过简洁的代码实现复杂的逻辑处理,递归函数自我调用解决分层问题,高效而优雅。适用于树形结构遍历、数学计算等领域。
|
3月前
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
78 1
|
3月前
|
存储 缓存 算法
C语言在实现高效算法方面的特点与优势,包括高效性、灵活性、可移植性和底层访问能力
本文探讨了C语言在实现高效算法方面的特点与优势,包括高效性、灵活性、可移植性和底层访问能力。文章还分析了数据结构的选择与优化、算法设计的优化策略、内存管理和代码优化技巧,并通过实际案例展示了C语言在排序和图遍历算法中的高效实现。
74 2
|
3月前
|
算法 数据处理 C语言
C语言中的位运算技巧,涵盖基本概念、应用场景、实用技巧及示例代码,并讨论了位运算的性能优势及其与其他数据结构和算法的结合
本文深入解析了C语言中的位运算技巧,涵盖基本概念、应用场景、实用技巧及示例代码,并讨论了位运算的性能优势及其与其他数据结构和算法的结合,旨在帮助读者掌握这一高效的数据处理方法。
94 1
|
3月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
99 1
|
3月前
|
搜索推荐 C语言
【排序算法】快速排序升级版--三路快排详解 + 实现(c语言)
本文介绍了快速排序的升级版——三路快排。传统快速排序在处理大量相同元素时效率较低,而三路快排通过将数组分为三部分(小于、等于、大于基准值)来优化这一问题。文章详细讲解了三路快排的实现步骤,并提供了完整的代码示例。
82 4
|
8月前
|
机器学习/深度学习 算法 C语言
详细介绍递归算法在 C 语言中的应用,包括递归的基本概念、特点、实现方法以及实际应用案例
【6月更文挑战第15天】递归算法在C语言中是强大力量的体现,通过函数调用自身解决复杂问题。递归涉及基本概念如自调用、终止条件及栈空间管理。在C中实现递归需定义递归函数,分解问题并设定停止条件。阶乘和斐波那契数列是经典应用示例,展示了递归的优雅与效率。然而,递归可能导致栈溢出,需注意优化。学习递归深化了对“分而治之”策略的理解。**
172 7

热门文章

最新文章