在网站建设工作会议上讲话上海公司注册地址

张小明 2026/1/12 15:12:05
在网站建设工作会议上讲话,上海公司注册地址,wordpress如何配置ssl,怎么可以找到做公益的网站新手注意#xff1a;代码部分是用AI#xff08;豆包#xff09;生成的#xff0c;所以写成了依托达芬#xff0c;请见谅#xff0c;别被误导了#xff01;#xff01;#xff01;前言#xff1a;为什么需要自定义函数#xff1f;​在前一篇中#xff0c;我们学会了…新手注意代码部分是用AI豆包生成的所以写成了依托达芬请见谅别被误导了前言为什么需要自定义函数​在前一篇中我们学会了调用系统自带的函数比如 sort 排序、sqrt 求平方根不用自己写复杂逻辑。但实际编程中很多需求是系统函数覆盖不到的 —— 比如 “计算一个学生的总分”“判断一个数是否为质数”“打印指定格式的分隔线”这些重复出现的逻辑如果每次都写一遍代码会又长又难维护。​这时候就需要 “自定义函数”把重复的逻辑封装成一个 “自己的工具”像调用系统函数一样用一句代码就能重复使用。比如把 “判断质数” 的逻辑写成函数 is_prime (n)之后不管是判断 17、23 还是 1009直接调用 is_prime (17) 就行不用再写一遍判断逻辑。​简单说系统函数是别人做好的工具自定义函数是自己做的专属工具学会它能让你的代码更简洁、更易复用、更易调试。​一、先搞懂自定义函数的核心结构​自定义函数就像 “一个有名字的代码模块”有固定的格式必须包含 “函数头” 和 “函数体”缺一不可。我们先看一个最简单的例子计算两个整数的和。// 自定义函数计算两个int类型的和 int add(int a, int b) { // 函数头 int result a b; // 函数体具体逻辑 return result; // 返回结果和的类型与函数返回值类型一致 }拆解函数的 4 个核心部分新手必记​返回值类型函数执行后要返回的数据类型比如上面的 int表示返回整数。如果函数不需要返回值用void表示后面会讲。​函数名自己起的名字比如 add遵循 “见名知义” 原则最好能一眼看出函数功能比如 is_prime 表示 “是否为质数”print_line 表示 “打印分隔线”。​参数列表函数需要的 “输入数据”格式是类型 参数名多个参数用逗号分隔比如 add 的 int a, int b。参数就像函数的 “原材料”调用时必须传入对应类型的值。​函数体用 {} 包裹的具体逻辑包括变量定义、计算、判断等。如果函数有返回值必须用return 结果;语句返回结果类型要和返回值类型匹配。​新手易混点函数声明 vs 函数定义​如果函数定义在main函数后面编译器会找不到函数因为 C 是从上到下编译的这时候需要在main前加 “函数声明”—— 告诉编译器 “有这个函数具体实现后面再写”。​格式返回值类型 函数名(参数类型列表);注意末尾有分号​示例#include namespace std; // 函数声明告诉编译器有一个add函数 int add(int, int); // 参数名可以省略只写类型 int main() { int x 5, y 3; int sum add(x, y); // 调用函数传入x和y的值 cout 3 sum endl; // 输出538 return 0; } // 函数定义具体实现要和声明的格式一致 int add(int a, int b) { return a b; // 简化写法直接返回结果不用临时变量 }二、3 类常用自定义函数实战案例 代码​根据返回值和参数的不同新手最常用的自定义函数有 3 类每类都配 “可直接运行的代码”复制就能练。​1. 有参数、有返回值最常用​功能需要输入数据执行后返回结果比如计算、判断、查找。​案例 1判断一个数是否为质数返回 bool 类型#include iostream #include cmath // 用到sqrt函数 using namespace std; // 函数声明判断n是否为质数是返回true否返回false bool is_prime(int n); int main() { int num; cout 请输入一个正整数; cin num; if (is_prime(num)) { cout num 是质数 ; } else { cout num 不是质数 ; } return 0; } // 函数定义判断质数的逻辑 bool is_prime(int n) { if (n ; // 1及以下不是质数 if (n 2) return true; // 2是唯一的偶数质数 if (n % 2 0) return false; // 偶数除2外不是质数 // 只需判断到sqrt(n)优化效率 for (int i 3; i i 2) { if (n % i 0) return false; // 能被整除不是质数 } return true; // 遍历结束没找到除数是质数 }运行结果​请输入一个正整数17 17是质数案例 2计算 n 的阶乘n! 1×2×...×n​#include using namespace std; int factorial(int n); // 函数声明 int main() { int n; cout 非负整数; cin n; if (n 0) { cout 负数 return 1; // 异常退出 } cout ) return 0; } // 函数定义计算阶乘 int factorial(int n) { int res 1; for (int i 1; i res * i; } return res; }运行结果​请输入一个非负整数5 5的阶乘是1202. 有参数、无返回值void 类型​功能需要输入数据执行一个操作比如打印、修改数组不需要返回结果用void表示返回值类型。​案例打印指定长度和字符的分隔线#include std; // 函数声明打印分隔线length长度ch字符 void print_line(int length, char ch); int main() { cout 内容 print_line(20, -); // 调用函数打印20个- cout _line(15, *); // 调用函数打印15个* return 0; } // 函数定义打印分隔线 void print_line(int length, char ch) { for (int i 0; i length; i) { cout } cout endl; // 换行 }运行结果​第一部分内容 -------------------- 第二部分内容 ***************3. 无参数、有返回值​功能不需要输入数据执行后返回一个固定或动态的结果比如获取随机数、获取当前时间。​案例生成 1-100 的随机数#include #include // rand()函数 #include time()函数设置随机数种子 using namespace std; // 函数声明返回1-100的随机数 int get_random(); int main() { // 设置随机数种子确保每次运行结果不同 srand((unsigned int)time(NULL)); cout 1-100的随机数 ; for (int i 0; i { cout _random() } cout endl; return 0; } // 函数定义生成1-100的随机数 int get_random() { // rand()返回0~RAND_MAX的随机数取模100得0~99加1得1~100 return rand() % 100 1; }运行结果每次不同​生成5个1-100的随机数 45 68 23 90 12三、关键知识点参数传递的 2 种方式新手必懂​调用函数时参数传递有两种核心方式值传递和引用传递新手容易混淆直接看对比表 案例更清晰。​​传递方式​核心特点​适用场景​值传递​函数接收参数的 “副本”修改副本不影响原变量​不需要修改原变量比如计算、判断​引用传递​函数接收参数的 “内存地址”修改会影响原变量​需要修改原变量比如交换两个数、修改数组元素​​1. 值传递默认方式​示例试图交换两个数但失败因为修改的是副本#include namespace std; // 值传递x和y是a和b的副本 void swap_value(int x, int y) { int temp x; x y; y temp; cout x x y y ; // 函数内交换成功 } int main() { int a 3, b 5; cout a b // 交换前a3, b5 swap_value(a, b); // 传入a和b的值副本 cout 交换后a , b 交换后a3, b5原变量未变 return 0; }运行结果​交换前a3, b5 函数内x5, y3 交换后a3, b52. 引用传递参数前加 ​示例成功交换两个数修改的是原变量#include using namespace std; // 引用传递x是a的别名y是b的别名指向同一内存 void swap_ref(int x, int y) { int temp x; x y; y temp; } int main() { int a 3, b 5; cout 前a a , b b endl; // 交换前a3, b5 swap_ref(a, b); // 传入a和b的引用 cout 交换后a , b 交换后a5, b3原变量已变 return 0; }运行结果​交换前a3, b5 交换后a5, b3新手记住如果想让函数修改原变量就用引用传递参数前加 否则用值传递默认。​四、综合实战用自定义函数实现 “学生成绩管理”​结合前一篇的系统函数和本篇的自定义函数实现一个更完整的成绩管理工具功能包括​输入 n 名学生的成绩自定义函数 input_scores​计算平均分自定义函数 calc_average​找出最高分自定义函数 find_max​按降序排序系统函数 sort​输出结果自定义函数 print_result。​完整代码#include 函数 using namespace std; const int MAX_STUDENT 100; // 最大学生数 // 函数声明 void input_scores(double scores[], int n); // 输入成绩引用传递n因为要修改它 double calc_average(double scores[], int n); // 计算平均分 double find_max(double scores[], int n); // 找最高分 void print_result(double scores[], int n); // 输出结果 int main() { double scores[MAX_STUDENT]; int n; // 实际学生数 // 调用自定义函数完成各功能 input_scores(scores, n); if (n 0) { cout 输入成绩 ; return 1; } print_result(scores, n); return 0; } // 函数定义1输入成绩 void input_scores(double scores[], int n) { cout 输入学生人数不超过 cin n; if (n 1 || n MAX_STUDENT) { n 0; return; // 非法输入返回0人 } cout 请输入 n 成绩 for (int i 0; i n; i) { cout ; cin scores[i]; } } // 函数定义2计算平均分 double calc_average(double scores[], int n) { double total 0; for (int i 0; i n; i) { total scores[i]; } return total / n; } // 函数定义3找最高分 double find_max(double scores[], int n) { double max_score scores[0]; for (int i 1; i n; i) { if (scores[i] max_score) { max_score scores[i]; } } return max_score; } // 函数定义4输出结果 void print_result(double scores[], int n) { // 调用系统函数sort按降序排序 sort(scores, scores n, greater()); double average calc_average(scores, n); double max_score find_max(scores, n); cout 成绩统计结果 endl; cout 降序排序后的成绩; for (int i 0; i { cout [i] } cout \n最高分 max_score 平均分 average 分 endl; }运行结果​请输入学生人数不超过1005 请输入5名学生的成绩 第1名学生成绩85.5 第2名学生成绩92.0 第3名学生成绩78.5 第4名学生成绩90.0 第5名学生成绩88.0 成绩统计结果 降序排序后的成绩92 90 88 85.5 78.5 最高分92分 平均分86.8分五、新手自定义函数的 4 个常见坑点与解决方案​函数声明和定义的格式不一致​错误现象编译器报错 “conflicting declaration”冲突声明​例子声明是int add(int a, double b)定义是int add(int x, int y)参数类型不一致​解决方案声明和定义的 “返回值类型、函数名、参数类型 顺序” 必须完全一致。​返回值类型和 return 语句不匹配​错误现象编译器报错 “return type mismatch”返回类型不匹配​例子函数返回值类型是 int却 return 3.14double 类型​解决方案return 的结果类型必须和函数头的返回值类型一致必要时用强制类型转换比如return (int)3.14;。​引用传递误用修改了不该改的变量​错误现象原变量被函数意外修改​原因不需要​
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

电商网站设计与制作总结湛江网站制作

目录已开发项目效果实现截图开发技术系统开发工具:核心代码参考示例1.建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式&…

张小明 2026/1/1 3:31:20 网站建设

酒店网站建设方案策划书网页设计基础入门

React Flow v12自定义节点连接失效的深度诊断与修复指南 【免费下载链接】xyflow React Flow | Svelte Flow - 这是两个强大的开源库,用于使用React(参见https://reactflow.dev)或Svelte(参见https://svelteflow.dev)构…

张小明 2026/1/1 3:31:17 网站建设

免费网站建设 免备案深圳企业网站建设电话

网络渗透与利用技术实战 1. Scapy工具的强大功能 Scapy是一个功能强大的工具,可用于读取和写入PCAP文件,还能进行数据包的创建、发送和接收等操作。 1.1 深入分析PCAP文件 若想获取PCAP文件中更详细的信息,可使用 show 函数对文件进行逐包解析,这与在Wireshark中看到…

张小明 2025/12/31 16:54:38 网站建设

ai做网站页面建多大的网站做了泛解析 为什么影响seo

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码及仿真咨询…

张小明 2026/1/1 7:00:29 网站建设

网站交互主要做什么的做网站免费吗

第一章:Open-AutoGLM深海协同控制揭秘Open-AutoGLM 是一种面向复杂水下环境的智能协同控制系统,专为深海探测与自主作业设计。该系统融合了大语言模型推理能力与多智能体协作机制,能够在低带宽、高延迟的海洋通信条件下实现稳定决策与动态任务…

张小明 2026/1/6 23:01:58 网站建设

家装网站建设公司dw网站首页制作

第一章:Open-AutoGLM离线任务调度算法概述Open-AutoGLM 是一个面向大规模语言模型训练任务的离线调度框架,专为高并发、资源异构环境下的任务编排与资源优化而设计。其核心调度算法结合了动态优先级评估与资源感知分配策略,能够在复杂依赖关系…

张小明 2026/1/1 10:49:13 网站建设