1. 项目概述
今天我想和大家分享几个基础的C++编程题目,这些题目都来自洛谷的入门系列,主要涉及函数与结构体的基础应用。作为刚接触算法竞赛的新手,这些题目非常适合用来巩固基础编程能力。我会逐一分析每个题目的解题思路,并给出详细的代码实现和优化建议。
这几个题目涵盖了常见的编程基础知识点:
- 平面几何计算(三角形周长)
- 质数筛选算法
- 闰年判断逻辑
- 数组统计处理
- 阶乘计算
这些题目虽然基础,但包含了算法竞赛中常见的编程模式和思考方式。通过这几个例子,我们可以学习如何将数学概念转化为可执行的代码,以及如何优化常见的计算过程。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 题目详解与实现
2.1 P5735 距离函数与三角形周长计算
这个题目要求计算平面坐标系中三个点构成的三角形的周长。关键在于正确实现两点间距离的计算公式。
数学原理:
两点(x1,y1)和(x2,y2)之间的距离公式为:
√[(x2-x1)² + (y2-y1)²]
实现要点:
- 需要定义一个专门计算距离的函数,提高代码复用性
- 输入三个点的坐标
- 分别计算三条边的长度
- 求和并保留两位小数输出
优化建议:
- 使用
hypot函数可以更简洁地计算两点距离 - 输入时可以封装成点结构体提高可读性
cpp复制#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
struct Point {
double x, y;
};
double distance(Point a, Point b) {
return hypot(a.x - b.x, a.y - b.y);
}
int main() {
Point p1, p2, p3;
cin >> p1.x >> p1.y;
cin >> p2.x >> p2.y;
cin >> p3.x >> p3.y;
double perimeter = distance(p1, p2) + distance(p2, p3) + distance(p1, p3);
cout << fixed << setprecision(2) <
