C语言程序设计:数组与指针在函数中的应用

版权申诉
0 下载量 134 浏览量 更新于2024-07-04 收藏 2.75MB PPT 举报
"C语言程序设计教程课件:8_c_Exercise-programming.ppt" 这篇课件主要介绍了C语言中的核心概念,包括数组、指针和函数,并通过一个实际问题——"要发就发"来阐述程序设计的基本步骤和算法设计。以下是详细的知识点解析: 1. **数组与指针**: - 数组是C语言中存储相同类型元素集合的数据结构。数组的元素可以通过索引来访问,索引通常从0开始。 - 指针是存储内存地址的变量,可以用来间接访问数组中的元素。指针变量可以指向数组的第一个元素,通过指针运算可以遍历整个数组。 2. **函数**: - 函数是C语言中实现代码复用和模块化的工具。函数可以接收参数,执行特定任务,并可能返回结果。在本课件中,函数被用来解决特定问题,如查找素数和计算差值。 3. **程序设计的一般步骤**: - 明确问题的性质并分析题意:理解问题的核心,区分数值问题和非数值问题。 - 建立问题的描述模型:根据问题特性,选择数学模型或过程模型来表示问题。 - 设计和确定算法:对数学问题使用数值分析,对非数学问题使用数据结构和算法分析与设计。 - 编程调试:将算法转化为C语言代码并进行调试。 - 分析运行结果:运行程序,检查输出是否符合预期。 4. **"要发就发"问题分析**: - 问题要求找到不超过2008的所有素数,并计算第二行数(素数差值)中是否存在连续整数和为1898的情况。 - 通过分析,问题简化为寻找两个素数,其差值为1898,因为第二行的和等于两个相邻素数的差。 5. **算法设计**: - 素数生成:首先生成一个包含所有不超过2008的素数数组。 - 穷举法寻找:遍历素数数组,尝试找出满足差值条件的素数对。 6. **具体实现**: - 使用循环遍历素数数组,比较相邻素数之间的差值,如果找到符合条件的差值,记录结果。 - 当没有找到满足条件的素数对时,说明不存在这样的连续整数序列。 这个课件不仅涵盖了C语言的基础知识,还强调了问题分析和算法设计的重要性,是学习C语言程序设计的良好参考资料。通过实际问题的解决,可以帮助学生更好地理解和运用所学知识。

#include "prepare_ogm.hpp" namespace senior { namespace guardian { namespace prepare { std::string PrepareOgm::Name() { return "Prepare Ogm Element"; } void PrepareOgm::Initiate() {} void PrepareOgm::Process(data::DataFrame& his, data::DataFrame& cur) { if (cur.source_ogm_points_.is_invalid()) return; if (cur.source_visual_ogm_points_.is_valid()) { cur.source_ogm_points_.insert(cur.source_ogm_points_.end(), cur.source_visual_ogm_points_.begin(), cur.source_visual_ogm_points_.end()); } if (cur.source_higher_ogm_points_.is_valid()) { cur.source_ogm_points_.insert(cur.source_ogm_points_.end(), cur.source_higher_ogm_points_.begin(), cur.source_higher_ogm_points_.end()); } auto& predict_path = cur.monitor_data_.mutable_predict_path(); predict_path.GenerateBoundary(cur); cur.AABox2d_ = predict_path.vehicle_AABox2d_; // if (!his.monitor_data_.is_need_to_take_over()) { // LOG(INFO)<<"1"; cur.AABox2d_.SetWidth(cur.AABox2d_.width() + 1.0); cur.AABox2d_.SetLength(cur.AABox2d_.length() + 1.0); // } std::vector<math::Vec2d> corner_points_; cur.AABox2d_.GetAllCorners(&corner_points_); auto& polygon2d = predict_path.tractor_polygon2d_; math::Vec2d temp; VoxelGrid filter_; common::Time now = common::Time::Now(); for (auto& point : cur.source_ogm_points_) { temp.set_x(point.x()); temp.set_y(-point.y()); if (cur.AABox2d_.IsPointIn(temp)) { cur.AABB_ogm_points_.emplace_back(point); } } cur.guardian_diagnose_["Prepare_PrepareOgm_AABox_filter"] = std::to_string((common::Time::Now() - now).ToSecond() * 1000); now = common::Time::Now(); filter_.VoxelGrid_ApplyFilter( cur.AABB_ogm_points_, cur.ogm_points_, corner_points_, 0.1, 0.1, 0); cur.guardian_diagnose_["Prepare_PrepareOgm_VoxelGrid_ApplyFilter"] = std::to_string((common::Time::Now() - now).ToSecond() * 1000); cur.ogm_points_.set_stamp(cur.source_ogm_points_.stamp()); cur.ogm_points_.set_time(cur.source_ogm_points_.time()); cur.ogm_points_.set_delay_time(cur.source_ogm_points_.delay_time()); cur.ogm_points_.set_valid(); } } // namespace prepare } // namespace guardian } // namespace senior 改变为C语言程序

2023-06-13 上传