当前位置: 首页 > news >正文

3.2 函数参数与返回值

在这里插入图片描述

1 带参数的函数

参数的概念

参数是函数的输入值,让函数可以处理不同的数据。就像数学函数 f(x) = x² 中的 x 就是参数。

比喻理解:想象一个果汁机:

  • 参数:放入的水果(苹果、橙子等)
  • 函数体:榨汁过程
  • 返回值:榨好的果汁

计算平方的示例

#include <iostream>
using namespace std;// 带参数的函数
int calculateSquare(int num) {return num * num;
}int main() {int number = 5;// 调用时传入参数int result = calculateSquare(number); cout << number << "的平方是:" << result << endl;// 可以直接传入值cout << "3的平方是:" << calculateSquare(3) << endl;return 0;
}

趣味练习:动物叫声函数

void animalSound(string animal) {if(animal == "dog") {cout << "汪汪!" << endl;} else if(animal == "cat") {cout << "喵喵~" << endl;} else if(animal == "cow") {cout << "哞哞..." << endl;} else {cout << "我不知道这种动物的叫声" << endl;}
}int main() {animalSound("dog");  // 输出:汪汪!animalSound("bird"); // 输出:我不知道这种动物的叫声return 0;
}

扩展练习:添加更多动物的叫声,或者让函数返回叫声字符串而不是直接输出

2 返回值的函数

返回值类型

函数可以返回各种类型的值,就像数学函数的输出:

// 返回double类型
double calculateAverage(int a, int b) {return (a + b) / 2.0;
}// 返回bool类型
bool isEven(int num) {return num % 2 == 0;
}// 返回string类型
string getGrade(int score) {if(score >= 90) return "A";else if(score >= 80) return "B";else return "C";
}

多return语句的情况

函数中可以有多个return,但只会执行其中一个:

string checkNumber(int num) {if(num > 0) {return "正数";} else if(num < 0) {return "负数";}return "零";
}

void函数的特点

void函数不返回任何值,通常用于执行操作:

void printStars(int count) {for(int i = 0; i < count; i++) {cout << "* ";}cout << endl;
}int main() {printStars(5); // 输出:* * * * * return 0;
}

常见错误:尝试使用void函数的"返回值"

void func() { /*...*/ }
int main() {int x = func(); // 错误!void函数没有返回值
}

3 多参数函数

多个参数的传递

函数可以接收多个参数,用逗号分隔:

// 计算两个数的和
int addNumbers(int a, int b) {return a + b;
}// 打印个人信息
void printInfo(string name, int age) {cout << name << "今年" << age << "岁" << endl;
}

参数顺序的重要性

参数必须按照定义的顺序传递:

void introduce(string name, string hobby) {cout << "我是" << name << ",我喜欢" << hobby << endl;
}int main() {introduce("小明", "编程"); // 正确introduce("游泳", "小红"); // 逻辑错误!return 0;
}

实践练习:计算矩形面积

#include <iostream>
using namespace std;// 计算矩形面积的函数
double calculateRectangleArea(double length, double width) {return length * width;
}int main() {double l, w;cout << "请输入矩形的长和宽:";cin >> l >> w;double area = calculateRectangleArea(l, w);cout << "矩形面积是:" << area << endl;return 0;
}

扩展挑战

  1. 添加计算矩形周长的函数
  2. 编写一个函数同时返回面积和周长
  3. 添加输入验证,确保长和宽都是正数

本章总结表

概念说明示例
函数参数函数的输入值void func(int param)
返回值函数的输出结果return value;
void函数不返回值的函数void print(...)
多参数多个输入值int add(int a, int b)
参数顺序传递参数的顺序必须匹配定义func(a,b) vs func(b,a)

综合练习

  1. 编写calculateCircleArea()函数,接收半径返回圆面积
  2. 创建isAdult()函数,接收年龄返回是否成年(≥18岁)
  3. 实现printCard()函数,接收姓名、年龄和爱好,打印个人信息卡片
  4. 挑战:编写solveQuadratic()函数,接收a,b,c参数,解一元二次方程

编程小项目:制作一个简单的学生成绩计算器,包含以下功能:

  • 计算平均分(averageScore)
  • 判断是否及格(isPassing)
  • 输出成绩报告(printReport)
http://www.lryc.cn/news/591261.html

相关文章:

  • 通过轮询方式使用LoRa DTU有什么缺点?
  • Stone3D教程:免编码制作在线家居生活用品展示应用
  • Spring,Spring Boot 和 Spring MVC 的关系以及区别
  • WSL2 离线安装流程
  • 元宇宙与Web3的深度融合:构建沉浸式数字体验的愿景与挑战
  • 手写Promise.all
  • C#中的LINQ解析
  • Level-MC 5”雪原“
  • 探微“元宇宙”:概念内涵、形态发展与演变机理
  • MTK平台--如何查询手机连接的TX速率和带宽
  • 【PY32】使用轩微烧录器烧录PY32微控制器
  • 跨域通信inframe高级
  • Nginx/OpenResty HTTP 请求处理阶段与 Lua 实践全解20250717
  • Java中的字符串——String,StringBuilder,StringBuffer
  • 基于邻域统计分析的点云去噪方法
  • 【测试100问】没有接口文档的情况下,如何做接口测试?
  • TC500R立式加工中心主轴箱机械结构设计cad【11张】三维图+设计说明书
  • 【后端】.NET Core API框架搭建(7) --配置使用Redis
  • Android本地浏览PDF(Android PDF.js 简要学习手册)
  • React hooks——useReducer
  • 面试Redis篇-深入理解Redis缓存穿透
  • 基于YOLOv11的水面垃圾智能检测系统
  • halcon 模板匹配
  • 高精度加法模版介绍
  • 阿里云-通义灵码:隐私保护机制—为数据安全筑起铜墙铁壁
  • USRP中心频率与采样率联合设置
  • MyBatis 之配置与映射核心要点解析
  • CPU架构、三级缓存以及内存优化屏障
  • 指针数组和数组指针的应用案例
  • 「Trae IDE 全流程实战」——从 0 下载安装,到在本地跑起一个可玩的 2048 小游戏