摄影网站的市场可行性广州网站制作开发公司哪家好

张小明 2026/1/7 15:58:20
摄影网站的市场可行性,广州网站制作开发公司哪家好,muiteer主题 wordpress,大型网站开发企业新手注意#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进行投诉反馈,一经查实,立即删除!

建购物网站需要多少钱wordpress文章页随机文章

FaceFusion在电影修复中的辅助作用初探在胶片泛黄、画面抖动的老电影里,一张清晰的脸往往承载着整部作品的情感重量。然而,岁月不仅侵蚀了银幕上的光影,也模糊了那些曾定义时代的面孔——从默片巨星到黑白剧中的主角,他们的面容常…

张小明 2026/1/7 15:57:48 网站建设

企业网站开发所需要的模块网站毕业设计论文模板

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个基于AI的Windows注册表清理工具,能够自动扫描系统注册表,识别无效、冗余或潜在危险的注册表项。工具应具备以下功能:1. 使用机器学习模…

张小明 2026/1/7 15:57:16 网站建设

太原网站建设列表网旅行网站的建设目录

还在为手机无法运行PC游戏而烦恼吗?Winlator这款革命性的手机游戏模拟器应用,通过Wine和Box86/Box64技术,让Android设备也能流畅运行Windows应用和游戏。今天我们就来彻底解决你的移动端游戏兼容问题,让你的手机秒变Windows游戏掌…

张小明 2026/1/7 15:56:44 网站建设

个人信息网站html伊利集团网站建设实训

城通网盘解析终极指南:告别限速,重获下载自由 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 你是否曾经因为城通网盘的下载限制而感到沮丧?面对缓慢的下载速度和繁琐…

张小明 2026/1/7 15:56:12 网站建设

网站系统建设招标文件网站做的好的医院

Jellyfin界面个性化定制终极指南:从入门到精通 【免费下载链接】jellyfin Jellyfin 是一个自由、开源的家庭媒体中心软件,适合用来搭建个人化的多媒体服务器,特点是跨平台支持,提供视频、音频和图片的集中管理和流媒体服务&#x…

张小明 2026/1/7 15:55:07 网站建设

如何做网站seo韩小培网站建设费是业务宣传费吗

如何快速掌握Whisper语音识别:新手必看的完整教程 【免费下载链接】paper-reading 深度学习经典、新论文逐段精读 项目地址: https://gitcode.com/gh_mirrors/pa/paper-reading 还在为语音转文字烦恼吗?OpenAI Whisper让这一切变得简单&#xff0…

张小明 2026/1/7 15:54:35 网站建设