C++函数(2):自定义函数

本文介绍了C++中的自定义函数,包括二次函数概念、自定义函数编写与调用示例,以及实际应用如数组求和的函数实现。后续还提及了C++中自定义函数的注意事项和一个编程练习题。

导语

大家好,我是小超,今天我们来学习L2的第二节课:自定义函数,不过在此之前,咱还是来一个……

L1训练时刻!

第一题:短信费

问题描述

用手机发短信,一条短信资费为 0.1 元,但限定一条短信的内容在 70 个字以内(包括 70 个字)。如果一次所发送的短信超过了 70 个字,则会按照每 70 个字一条短信的限制把它分割成多条短信发送。假设已经知道当月所发送的短信的字数,试统计一下当月短信的总资费。

输入格式

第一行是整数 n(1≤n≤100) ,表示当月发送短信的总次数,接着 n 行每行一个正整数(不超过 1000 ),表示每次短信的字数。

输出格式

输出一行,当月短信总资费,单位为元,精确到小数点后 1 位。

样例
输入数据 1
10
39
49
42
61
44
147
42
72
35
46
输出数据 1
1.3
数据范围与提示

(无,以后没有的条件就不写了)

第二题:角谷猜想的步数

问题描述

任给一个正整数 n ,

  • 如果 n 为偶数,就将它变为 2n​ ,

  • 如果 n 为奇数,则将它变为乘 3 加 1 (即 3×n+1 )。

不断重复这样的运算,经过有限步后,一定可以得到1 。

输入格式

输入一个正整数 n

输出格式

输出 n 变成 1 的步数

样例
输入数据 1
3
输出数据 1
7
提示

1≤n≤100

样例解释: 3  → 3×3+1=10  →  10÷2=5  →  3×5+1=16  →  16÷2=8  →  8÷2=4  →  4÷2=2  →  2÷2=1

一起来看今天的数学函数讲解。

第一讲:二次函数

①二次函数定义

一般地,若有两个变量x,y间的关系式可以表示成$ax^2+bx+c$(a,b,c为常数,x的次数为2次,且a≠0)的形式,则称y是x的二次函数(x为自变量);该表达式也成为二次函数的一般式。

一次函数     $y=kx+b(k\ne0)$

二次函数     $y=ax^2+bx+c(a\ne0)$

二次函数的其他表达式:y=ax^2(a\ne0)

                                       y=ax^2+c(a\ne0)

                                       y=ax^2+bx(a\ne0)

练习一:判断以下函数是否是二次函数(多选)                                                                   (_____)

A.y=2x^2
B.y=-5x^2
C.y=\frac{1}{2}x^2-4x
D.y=34x+23x^5

②二次函数图像

自己在Desmos中尝试,没链接点我

从中我们可以发现,函数的系数越大,抛物线就越瘦。

③顶点式

(a-b)^2=(a-b)(a-b)=a^2+b^2-2ab
(a+b)^2=(a+b)(a+b)=a^2-b^2+2ab
具体什么意思自己研究,我们来学习编程。

下节课预告:1.指数函数
                      2.对数函数

留个小作业:搜索指数和对数的概念,明天我们直接讲函数。

第二讲:C++自定义函数

1.如何自定义函数

(下文由创作助手生成)

在 C++ 中,可以使用函数来实现特定的操作。自定义函数可以按照用户的需求编写,以便用于程序中的多次调用。

下面是一个简单的示例,展示了如何编写和调用自定义函数:

#include <iostream>
using namespace std;
void sayHello(){
    cout << "Hello, world!" << endl;
}
int main(){
    sayHello(); 
    return 0;
}

在上面的示例中,我们定义了一个函数sayHello(),它不需要任何参数,并输出一条消息到控制台。然后在main()函数中,我们调用了这个自定义函数。

在自定义函数时需要注意以下几点:

  1. 函数定义必须在程序开始之前,通常定义在程序的头部或者在其他函数之前。
  2. 函数定义必须包含一个函数名、返回类型、参数列表和函数体。
  3. 如果函数不返回任何值,则返回类型应该为 void
  4. 调用自定义函数时,需要使用函数名和括号(即使不需要参数)。

2.使用实例:小明求和

题目描述

现在有两个长度为 n 的数组,有一个询问:op,l,r。

  1. op=1 表示求数组 a 中第 l 个元素到第 r 个元素的和。
  2. op=2 表示求数组 b 中第 l 个元素到第 r 个元素的和。

小可需要回答这个答案。

输入格式
  • 第一行一个整数 n
  • 第二行 n 个整数,表示 a 数组的元素
  • 第三行 n 个整数,表示 b 数组的元素
  • 第四行三个整数op,l,r
输出格式
  • 一个整数,表示答案。
样例
输入数据 1
3
1 2 3
4 5 6
1 1 2
输出数据 1
3
输入数据 2
4
1 2 3 4
5 6 7 8
2 3 4
输出数据 2
15
数据范围与提示

100% 的数据:n\leq 10001\leq a_i,b_i\leq10^6

代码(仅函数部分)
int add(int op, int l, int r){
if(op == 1){
    int he1 = 0;
    for(int i = l; i <= r; i++){
        he1 += a[i];
    }
    return he1;
}
if(op == 2){
    int he2 = 0;
    for(int i = l; i <= r; i++){
        he2 += b[i];
    }
    return he2;
    }
}

作业

通过类比写出上面一题的完整答案。

<think>首先,用户正在询问C语言自定义函数的例子。 他们提到了两个参考资料: - 引用[1]:展示了一个简单的自定义函数例子,其中定义了一个名为 a 的函数,它将输入乘以2并返回结果。 - 引用[2]:讨论C语言标准函数(库函数)和自定义函数,说明自定义函数是用户自定义的。 我的回答需要: - 使用中文。 - 遵循系统级指令:内联数学表达式用$...$,独立公式用$$...$$,LaTeX 语法正确,生成相关问题。 - 在回答中引用段落末尾自然地添加引用标识,如[^1]。 - 结构清晰,帮助用户逐步解决问题。 - 基于用户的问题:他们想要C语言自定义函数的示例。 用户说:“我想查找C语言自定义函数的示例 请问C语言自定义函数示例”,所以我应该提供清晰、相关的例子。 关键元素: 1. **自定义函数的定义**:在C语言中,自定义函数需要声明和定义。通常包括返回类型、函数名、参数列表和函数体。 2. **步骤**:为了使回答结构清晰,我可以逐步解释如何定义和使用自定义函数。 3. **例子**:提供至少一个完整的示例代码,类似于引用[1]中的例子。我可以改进它或添加更多。 4. **引用**:在适当的地方添加引用标识。既然用户提供了引用,我应该参考它们。引用[1]直接给出了一个例子,引用[2]解释了自定义函数的概念。 5. **相关问题**:在结尾处生成相关问题,如“§§相关问题§§”所示。 大纲回答: 1. **介绍**:简要解释什么是自定义函数,参考引用[2]。 2. **步骤分解**: - 定义函数:语法和例子。 - 调用函数:如何从main或其他地方调用。 - 返回值:如何处理。 3. **完整示例代码**:提供一个简单的C程序,展示自定义函数。 - 基于引用[1],但可以扩展或改进。 4. **解释**:解释代码的工作原理。 5. **结尾**:自然地添加引用标识。 6. **相关问题**:生成2-3个相关问题。 完整示例: 我可以使用一个简单的函数,比如计算两个数的和或最大值。引用[1]用了乘法函数,很好。 改进引用[1]的例子: 引用[1]有语法错误或不规范(如printf中的引号是奇怪的)。我应该提供正确的代码。 正确C代码: ```c #include <stdio.h> // 自定义函数:返回输入值的两倍 int double_it(int num) { int result = num * 2; return result; } int main() { int x = 10; printf("原始值: %d\n", x); printf("双倍值: %d\n", double_it(x)); return 0; } ``` 输出:原始值: 10\n双倍值: 20 现在,回答结构: 1. **开头**:解释自定义函数2. **定义部分**:描述如何定义函数。 3. **调用部分**:描述如何调用。 4. **完整代码**:显示代码块。 5. **解释**:简要解释。 6. **引用**:在解释中添加引用。 7. **相关问题**。 生成相关问题: - 例如: 1. 如何传递数组到自定义函数2. C语言函数参数可以有默认值吗? 3. 自定义函数的递归实现例子? 确保语言中文:全用中文写。 最终回答: </think>### C语言自定义函数示例 在C语言中,自定义函数是用户根据需求自行定义的函数,用于封装重复使用的逻辑代码。自定义函数由返回类型、函数名、参数列表和函数体组成,区别于C标准库函数(如`printf`或`scanf`)[^2]。下面我将逐步解释自定义函数的定义和使用,并提供完整示例代码。 #### 步骤1: 定义自定义函数 - **语法**: `返回类型 函数(参数列表) { 函数体 }` - 返回类型:指定函数返回值的数据类型(如`int`、`float`或`void`)。 - 函数名:自定义标识符,命名遵循C语言规则。 - 参数列表:可选,定义输入参数(如`int a, int b`)。 - 函数体:包含执行逻辑的代码块,以`return`语句结束(如果返回类型非`void`)。 - **示例定义**: 假设我们定义一个函数`calculate_sum`,计算两个整数的和: ```c int calculate_sum(int a, int b) { int sum = a + b; // 计算两个数的和 return sum; // 返回计算结果 } ``` #### 步骤2: 调用自定义函数 - 在`main`函数或其他函数中,通过函数名和实参调用自定义函数。 - **调用语法**: `函数(实参1, 实参2, ...)` - **示例调用**: 在`main`函数中调用`calculate_sum`: ```c int main() { int x = 5, y = 10; int result = calculate_sum(x, y); // 调用自定义函数 printf("和: %d\n", result); // 输出结果 return 0; } ``` #### 完整示例代码 以下是一个完整的C程序,展示了自定义函数的定义、调用和输出。基于您的引用[1],我改进了代码语法(如修正printf参数),并添加了注释以便理解。 ```c #include <stdio.h> // 自定义函数定义:计算输入值的两倍 int double_value(int num) { int doubled = num * 2; // 输入乘以2 return doubled; // 返回结果 } int main() { int input = 10; // 初始化变量 printf("原始值: %d\n", input); // 输出原始值 int output = double_value(input); // 调用自定义函数 printf("双倍值: %d\n", output); // 输出计算结果 return 0; } ``` - **输出**: ``` 原始值: 10 双倍值: 20 ``` - **解释**: - 函数`double_value`定义在`main`之前,避免声明错误。 - 在`main`中,变量`input`作为实参传递给`double_value`。 - 函数执行后返回结果,存储在`output`中并打印。 此示例演示了自定义函数如何复用代码并简化逻辑[^1]。 #### 关键点总结 - 自定义函数提升代码可读性和复用性,尤其适合重复任务[^2]。 - 确保函数定义和调用匹配参数类型,避免编译错误。 - 在实际项目中,常用自定义函数封装算法、数据处理等。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值