当前位置: 首页 > 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.dtcms.com/a/284530.html

相关文章:

  • .vscode 扩展配置
  • 浅析网络安全面临的主要威胁类型及对应防护措施
  • 【C++指南】C++ list容器完全解读(四):反向迭代器的巧妙实现
  • 如何做好DNA-SIP?
  • 【41】MFC入门到精通——MFC中 GetLBText()、GetWindowText()、SetWindowText区别
  • 扭蛋机小程序开发:开启线上娱乐新风尚
  • 分布式光伏发电系统中的“四可”指的是什么?
  • 教资科三【信息技术】— 学科知识: 第一章(信息技术基础)
  • 基于springboot+vue+mysql技术的实验室管理系统(源码+论文)
  • 044_设计模式入门(创建型 / 结构型 / 行为型)
  • 【解决方案】鸿蒙 / 矿鸿系统 Shell 无故退出问题(息屏导致)详解
  • Spatial Frequency Modulation for Semantic Segmentation。针对图像下采样造成信息丢失问题的解决思路
  • 深入理解 Spring Boot Starter 的生成机制
  • tcp/udp调试工具
  • Linux内核网络栈深度剖析:inet_connection_sock.c的服务器端套接字管理
  • LINUX例行性工作(计划任务)实验操作 ---at和crontab以及系统级别的计划任务
  • springboot跨域问题 和 401
  • 当下主流摄像头及其核心参数详解
  • 不同场景下git指令的搭配
  • pycharm回车、删除、方向键和快捷键等不能使用原因
  • TRAE Agent 在 SWE-bench Verified 上得分 75.2%,并已开源
  • opencv、torch、torchvision、tensorflow的区别
  • Linux717 SWAP扩容;逻辑卷条带化
  • 前端-HTML
  • 杰理AC70NN项目用脚本自定义添加.mk文件,直接链接进主Makefile脚本编译
  • 开通腾讯位置复位
  • 深入理解Collections.addAll方法
  • 【华为】交换机vlan互访实验
  • 【人工智能99问】梯度消失、梯度爆炸的定义、后果及规避手段?(7/99)
  • JAVA面试宝典 -《Kafka 高吞吐量架构实战:原理解析与性能优化全攻略》