C语言实验3:函数的定义

目录

一、实验要求

二、实验原理

1.函数头

2.函数体

3.函数的定义及使用

三、实验内容

1. sum函数

代码

截图

分析

2. sum函数

代码

截图

分析

3. rank_grade函数

代码

截图

分析

4. rank_grade函数

代码

截图

分析

5. 函数的嵌套使用

代码

截图

分析

6. inputt函数

代码

截图

分析

7.函数的递归

代码

截图

分析


一、实验要求

  1. 熟悉定义函数的方法。
  2. 熟悉声明函数的方法。
  3. 熟悉调用函数时实参与形参的对应关系,以及“值传递”的方式。
  4. 学习对多文件的程序的编译运行。

二、实验原理

在C语言中,函数是一种可重复使用的代码块,用于执行特定的任务。函数的定义包括函数头和函数体两部分。

1.函数头

函数头包含以下信息:

1.返回类型:指定函数返回的数据类型,如int、float、void等。
2.函数名:函数的标识符,用于在程序中调用该函数。
3.参数列表:函数接受的输入参数,可以包含零个或多个参数,每个参数都有自己的数据类型和名称。

2.函数体

函数体是函数的具体实现部分,包含一系列要执行的语句。在函数体中,可以定义局部变量、执行操作和控制流语句等。函数体内的代码在函数调用时被执行。

3.函数的定义及使用

函数的定义原理如下:

1.在程序中声明函数,包括函数头和函数体。
2.在需要调用函数的地方使用函数名和合适的参数列表进行函数调用。
3.程序执行到函数调用语句时,会跳转到函数定义的位置,并将控制权转移到函数体中。
4.在函数体中,执行函数内部的代码,包括变量的初始化、操作和控制流语句等。
5.函数执行完毕后,将返回值(如果有)返回给函数调用处,并将控制权返回给函数调用处继续执行。

函数的定义和使用可以将程序分解为更小的模块,提高代码的可读性和可维护性。通过函数的参数和返回值,可以在函数之间传递数据和结果。这样的模块化设计使得程序更易于理解、调试和修改。

三、实验内容

1. sum函数

定义一个函数,功能为返回两个整型数字的和。

代码

#include<iostream>
using namespace std;
int sum(int a,int b) {return a + b;
}
int main() {int input1, input2,answer;cin >> input1 >> input2;answer = sum(input1, input2);cout << answer;return 0;
}

截图

分析

上述代码定义了一个int型函数,叫做sum,会返回一个int型值。

在定义函数名时,不能随便定义,不能定义库中已有的函数,会发生函数重定义的错误。函数重定义错误通常会导致编译失败,并生成相应的错误消息。

由于需要输入两个数,则参数列表(即括号内部)应包含两个参数,分别为a和b,等于定义了a和b,在函数内部就可以使用a和b。

int型一定只会返回一个值,而且是int型。sum(int a,int b)相当于一个int型的值。

在函数的使用中,只需把要使用的数填补到函数中,如上述代码,将input1和input2放入。

2. sum函数

定义一个函数,功能为返回两个float型数字的和。

代码

#include<iostream>
using namespace std;
float sum(float a,float b) {	return a+b;
}
int main() {float a,b,ans;cin >> a >> b;ans = sum(a, b);cout << ans;return 0;
}

截图

分析

因为要求返回float型数字的和,只需把int改为float即可

3. rank_grade函数

定义一个函数,分数低于60评级为4,位于60-80分评级为3,位于80-90分评级为2,位于90-100分评级为1

代码

#include<iostream>
using namespace std;
int rank_grade(int a) {if (a < 60) {return 4;}else if (a < 80) {return 3;}else if (a < 90) {return 2;}else if (a < 100) {return 1;}
}
int main() {int grade,rank;cout << "请输入你的分数:";cin >> grade;rank = rank_grade(grade);cout << "你的等级为:"<<rank;return 0;
}

截图

分析

这个函数只需要一个输入参数,即分数,但是可能会返回不同的值

利用if来判断最后返回哪个评级,但是这个函数有一个问题,当输入比100大的数字,即输入不规范的情况下,它会返回1,这是因为这个函数在运行过程中最后运行到return 1

在函数的最后加入一个 return 0,就会返回0

因为函数会在运行到符合条件的return处结束

4. rank_grade函数

定义一个函数,分数低于60评级为D,位于60-80分评级为C,位于80-90分评级为B,位于90-100分评级为A

代码

#include<iostream>
using namespace std;
char rank_grade(int a) {if (a < 60) {return 'D';}else if (a < 80) {return 'C';}else if (a < 90) {return 'B';}else if (a < 100) {return 'A';}
}
int main() {int grade;char rank;cout << "请输入你的分数:";cin >> grade;rank = rank_grade(grade);cout << "你的等级为:" << rank;return 0;
}

截图

分析

由于要返回字符,要将int型改为char型,且一个函数不可能返回不同类型的数。

5. 函数的嵌套使用

实现函数的加减乘除,共输入三个数,返回一个数字,前两个数字是需要参加运算的数,第三个数代表运算符,输入1代表加法,输入2代表减法,输入3代表乘法,输入4代表除法。

代码

#include<iostream>
using namespace std;
int addd(int a,int b) {	return a+b;
}
int decc(int a, int b) {return a - b;
}
int mull(int a, int b) {return a * b;
}
int divv(int a, int b) {return a / b;
}
int sortt(int a,int b,int c) {if (c == 1) {return addd(a, b);}else if (c == 2) {return decc(a, b);}else if (c == 3) {return mull(a, b);}else if (c == 4) {return divv(a, b);}
}
int main() {int a,b,c,ans;cout << "请输入两个数字:";cin >> a>>b;cout << "请输入运算规则:";cin >> c;ans = sortt(a, b, c);cout << "答案为:"<<ans;return 0;
}

截图

分析

定义了五个函数,前四个函数是实现加减乘除的功能,第五个函数是判断实现什么运算符的功能,第五个函数会用到前四个函数,所以定义时放在它们的后面定义,否则会报错

如下

所以要注意函数定义顺序

6. inputt函数

定义一个函数,可以实现输入输出功能

代码

#include<iostream>
using namespace std;
void inputt() {string s;cin >> s;
}
int main() {inputt();return 0;
}

截图

分析

函数不需要返回任何东西,则使用void声明函数即可,void不会返回任何东西,但这不意味着void定义的函数没什么作用,上述所有函数实现的功能都可以用void函数实现,有兴趣的同学可以试一下(全局变量)。

7.函数的递归

兔子数列问题,也称为斐波那契数列(Fibonacci sequence),是一个经典的数学问题,起源于公元13世纪的意大利数学家斐波那契(Leonardo Fibonacci)的著作《算盘书》(Liber Abaci)。

在《算盘书》中,斐波那契提出了一个理想化的问题:假设有一对刚出生的兔子,从第三个月起,每个月都会生一对新兔子(一雄一雌),而新生的兔子在出生后第三个月也开始生兔子。假设所有的兔子都不会死亡,问在第n个月时,共有多少对兔子?

斐波那契数列的定义如下:

第0个月:0对兔子
第1个月:1对兔子
第2个月:1对兔子
第3个月及以后:前两个月的兔子总数之和
用数学符号表示为:

F(0) = 0
F(1) = 1
F(2) = 1
F(n) = F(n-1) + F(n-2),其中 n ≥ 3
斐波那契数列的前几个数字为:0, 1, 1, 2, 3, 5, 8, 13, 21, ...

代码

#include<iostream>
using namespace std;
int fac(int n)
{if (n == 0) {return 0;}else if (n == 1) {return 1;}else if (n == 2) {return 1;}else {return fac(n - 1) + fac(n - 2);}
}
int main() {int n;cin >> n;cout << fac(n);return 0;
}

截图

分析

当n大于等于3时,不能直接得到结果,得通过fac(n-1)和fac(n-2),一直推,直到可以直接从函数中得知fac的值,会不断调用fac,原理是栈(数据结构会学到)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/586138.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp中uview组件库的丰富Upload 上传上午用法

目录 基础用法 #上传视频 #文件预览 #隐藏上传按钮 #限制上传数量 #自定义上传样式 API #Props #Methods #Slot #Events 基础用法 可以通过设置fileList参数(数组&#xff0c;元素为对象)&#xff0c;显示预置的图片。其中元素的url属性为图片路径 <template>…

python文件打包实战技巧

众所周知&#xff0c;python是一种脚本语言&#xff0c;python程序必须在python环境下运行&#xff0c;所以如果想把自己写的程序给别人看的话&#xff0c;就比较麻烦&#xff0c;他需要先配置python环境&#xff0c;对于电脑小白来说这是“要命”的事情。而且如果是客户的话&a…

PulseGAN

研究背景 远程光电容积描记术 (rPPG) 是一种非接触式技术&#xff0c;用于测量面部视频中的心脏信号。健康监测和情绪识别等许多领域都迫切需要高质量的 rPPG 脉冲信号。然而&#xff0c;由于脉搏信号不准确的限制&#xff0c;现有的大多数rPPG方法只能用于获取平均心率&#…

AD域组策略

题目&#xff1a; 除manager 组和IT组&#xff0c;所有用户隐藏C盘&#xff1b;除manager 组和IT组&#xff0c;所有普通给用户禁止使用cmdIT01用户登陆域后&#xff0c;会自动增加驱动器X&#xff0c;该驱动器自动关联DC1的C:\tools文件夹&#xff1b;sales用户组的InternetE…

ESP32S3+HX8347+3线SPI运行LVGL例程

一、clone lv_port_esp32到本地 git clone https://github.com/lvgl/lv_port_esp32.git 二、增加hx8347.c、hx8347.h components\lvgl_esp32_drivers\lvgl_tft下新增2个文件&#xff1a;hx8347.c、hx8347.h。因为lv_port_esp32中没有hx8347的驱动&#xff0c;需要自己写。这两个…

1.2.0 IGP高级特性之FRR

理论部分参考文档&#xff1a;Segment Routing TI-LFA FRR保护技术 - 华为 一、快速重路由技术 FRR(Fast Reroute)快速重路由 实现备份链路的快速切换&#xff0c;也可以与BFD联动实现对故障的快速感知。 随着网络的不断发展&#xff0c;VoIP和在线视频等业务对实时性的要求越…

web:[BJDCTF2020]The mystery of ip(ssti模板注入、Smarty 模板引擎)

题目 进入页面显示如下 点击flag页面得到ip 点击hint页面 在hint.php的源代码页面中发现 由题目可以知道要从ip入手 这里尝试抓包加上X-Forwarded-For请求头修改为127.0.0.1 因为直接将127.0.0.1输出到页面&#xff0c;可以猜测是ssti模板注入 可以继续验证 这里发现输入什么…

【数据结构】八、查找

一、基本概念 静态查找&#xff1a;只查找&#xff0c;不改变集合内数据元素 动态查找&#xff1a;有则输出元素&#xff0c;无则添加元素 二、静态查找表 2.1顺序查找 在线性表、链表、树中依次查找 2.2折半查找&#xff08;二分查找&#xff09; 在有序的线性表中&…

macos下转换.dmg文件为 .iso .cdr文件的简单方法

为了让镜像文件在mac 和windows平台通用, 所以需要将.dmg格式的镜像文件转换为.iso文件, 转换方法也非常简单, 一行命令即可 hdiutil convert /path/to/example.dmg -format UDTO -o /path/to/example.iso 转换完成后的文件名称默认是 example.iso.cdr 这里直接将.cdr后缀删…

C#高级 08Json操作

1.概念 Json是存储和交换文本信息的语法。类似于XML。Json比XML更小、更快、更易解析。Json与XML一样是一种数据格式。Json是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。Json采取完全独立于语言的文本格式&#xff0c; 但是也使用了类似于C语言的习惯。这些特性使…

2047过滤空格(C语言)

目录 一&#xff1a;题目 二&#xff1a;思路分析 三&#xff1a;代码 一&#xff1a;题目 二&#xff1a;思路分析 1.首先&#xff0c;这道题是一个字符串的问题&#xff0c;我们要先知道字符串存放在char类型的数组中的&#xff0c;并不是一个变量就可直接存放的下一个完整…

1.Linux快速入门

Linux快速入门 Linux操作系统简介Linux操作系统优点Linux操作系统发行版1. Red Hat Linux2. CentOS3. Ubuntu4. SUSE Linux5. Fedora Linux 32位与64位操作系统的区别Linux内核命名规则 Linux操作系统简介 Linux操作系统是基于UNIX以网络为核心的设计思想&#xff0c;是一个性…

云计算:OpenStack 配置云主机实例的存储挂载并实现外网互通

目录 一、实验 1. 环境 2.配置存储挂载 3.云主机实例连接外部网络&#xff08;SNAT&#xff09; 4.外部网络连接云主机实例&#xff08;DNAT&#xff09; 二、问题 1.云主机 ping 不通外部网络 2.nova list 查看云主机列表报错 3.nova list 与 virsh list --all有何区…

【代码随想录】刷题笔记Day42

前言 这两天机器狗终于搞定了&#xff0c;一个控制ROS大佬&#xff0c;一个计院编程大佬&#xff0c;竟然真把创新点这个弄出来了&#xff0c;牛牛牛牛&#xff08;菜鸡我只能负责在旁边喊加油&#xff09;。下午翘了自辩课来刷题&#xff0c;这次应该是元旦前最后一刷了&…

行车记录仪变清晰,变高清的办法一定要收藏

有时候我们会发现行车记录仪拍摄的视频不够清晰&#xff0c;特别是出现事故需要视频为证的时候&#xff0c;如果视频太模糊&#xff0c;很难获得交警的支持&#xff0c;那么如何让行车记录仪拍摄的视频变得更加清晰呢&#xff1f; 小编给大家分享几个办法&#xff0c;建议收藏…

Android实验:contentprovider 实验+SQLite 数据库的实现

目录 SQLite实验目的实验内容实验要求项目结构代码实现结果展示 SQLite SQLite 是一个开源的嵌入式关系数据库&#xff0c;实现了自给自足的、无服务器的、配置无需的、事务性的 SQL 数据库引擎。它是一个零配置的数据库&#xff0c;这意味着与其他数据库系统不同&#xff0c;…

轻松实现iphone截图传电脑

目录 摘要 引言 用户登录工具和连接设备 生成截图 摘要 本篇博文介绍了克魔助手这款工具&#xff0c;解决了iPhone与Windows系统下图片传输的烦恼。通过连接同一Wi-Fi&#xff0c;使用克魔助手轻松实现了iPhone截图传输到电脑上的便捷操作。用户只需简单地下载并安装克魔助…

前端优化 - 防抖和节流

&#x1f4e2; 鸿蒙专栏&#xff1a;想学鸿蒙的&#xff0c;冲 &#x1f4e2; C语言专栏&#xff1a;想学C语言的&#xff0c;冲 &#x1f4e2; VUE专栏&#xff1a;想学VUE的&#xff0c;冲这里 &#x1f4e2; CSS专栏&#xff1a;想学CSS的&#xff0c;冲这里 &#x1f4…

Harmony全局应用生命周期 EntryAbility.ts 讲解

之前 我们说过 page页面的生命周期 组件的生命周期 其实他和uni一样有一个整个应用的生命周期 我们如下图打开EntryAbility.ts 这是我们整个程序app的状态控制 他这里也有几个全局的生命周期 比如 我们手机 点开当前 App 启动 app 会触发 它的 onCreate 生命周期 当我们从手…

Elasticsearch 8.X进阶搜索之“图搜图”实战

Elasticsearch 8.X “图搜图”实战 1、什么是图搜图&#xff1f; "图搜图"指的是通过图像搜索的一种方法&#xff0c;用户可以通过上传一张图片&#xff0c;搜索引擎会返回类似或者相关的图片结果。这种搜索方式不需要用户输入文字&#xff0c;而是通过比较图片的视…