实验三 函数

  • 实验目的

本实验主要培养、训练学生对函数的理解,要求:

  1. 掌握函数的定义、声明的方法;
  2. 掌握函数的编写要求;
  3. 掌握函数的调用方法;
  4. 掌握函数参数的传递方法;
  5. 掌握变量的作用域;
  6. 掌握多文件编程方法。
  • 实验内容

1、输入自然数 m 和 n,

(1)求他们的最大公约数(或称最大公因数)。

要求输入、输出在主函数中进行,求公约数由函数实现。

(2)在函数中求最大公约数与最小公倍数。(提示:使用引用参数)

2、编写程序满足:声明一个函数,判断一个整数是否为素数,使用以下函数头:bool is_prime(int num),如果num是素数,函数返回true,否则返回false;

利用函数is_prime找出前200个素数,并按每行10个输出:

2  3  5  7  11  13  19  23  29

3、编程实现摄氏温度到华氏温度的转换:

编写一个头文件,包含下面两个函数:

double celsius_to_fah(double cel) //摄氏温度到华氏温度

double fahrenheit_to_cels(double fah) //华氏温度到摄氏温度

实现头文件,并编写测试程序,调用函数显示如下结果:

Celsius Fahrenheit | Fahrenheit Celsius

40.0 10.0 | 120.0 48.89

…… …… | …… ……

31.0 87.8 | 30.0 -1.11

39.0 102.0 | 110.0 43.33

(测试程序为主模块,即main( )函数所在cpp文件,头文件mytemperature.h只有函数声明;函数定义写在另一cpp文件mytemperature.cpp)

4、猴子吃桃:猴子第一天摘若干桃子,当即吃了一半,还不过瘾,又吃了一个。第二天又将剩下的桃子吃掉一半,又多吃一个,以后每天如此,到第10天,发现只剩最后一个桃子,问:第一天猴子共摘多少桃子(用递归实现)。

  • 实验过程

1、输入自然数 m 和 n,

(1)求他们的最大公约数(或称最大公因数)。

要求输入、输出在主函数中进行,求公约数由函数实现。

(2)在函数中求最大公约数与最小公倍数。(提示:使用引用参数)

(1)程序:

#include<iostream>using namespace std;int ys(int,int);int main(){int m,n;cin>>m>>n;cout<<”最大公约数为”<<ys(m,n)<<endl;return 0;}int ys(int x,int y){int Y;for(int i=1;i<=x&&i<=y;i++){if(x%i==0&&y%i==0){Y=i;}}return Y;}

结果:

输入:

分别输入2,3;4,8,观察运行结果

  • 输入2,3时
  • 输出最大公约数1
  • 输入4,8时
  • 输出最大公约数4

(2)程序:

#include<iostream>using namespace std;void ys(int &x,int &y);void bs(int &x,int &y);int main(){int m,n;cin>>m>>n;ys(m,n);bs(m,n);return 0;}void ys(int &x,int &y){int Y;for(int i=1;i<=x&&i<=y;i++){if(x%i==0&&y%i==0){ Y=i;}}cout<<"最大公约数为"<<Y<<endl;
}void bs(int &x,int &y){int B;for(int i=1;;i++){if(i%x==0&&i%y==0){  B=i; break; }}
cout<<"最小公倍数为"<<B<<endl;
}

结果:

输入:

分别输入4,8;5,13,观察运行结果

  • 输入4,8时
  • 输出最大公约数4,最小公倍数8
  • 输入5,13时
  • 输出最大公约数1,最小公倍数65

2、编写程序满足:声明一个函数,判断一个整数是否为素数,使用以下函数头:bool is_prime(int num),如果num是素数,函数返回true,否则返回false;

利用函数is_prime找出前200个素数,并按每行10个输出:

2  3  5  7  11  13  19  23  29

程序 :

#include<iostream>#include<iomanip>using namespace std;bool is_prime(int num);int main(){int n=0;for(int i=2;;i++){if(is_prime(i)){cout<<setw(5)<<i<<" ";n++;if(n>0&&(n%10==0)) { cout<<endl;}}if(n==200)  { break;}}return 0;}bool is_prime(int num){int m;bool prime=true;for(int i=2;i<num;i++){if(num%i==0){prime=false;break;}}return prime;}

结果:

  • 输出前200个素数,并按每行10个输出

3、编程实现摄氏温度到华氏温度的转换:

编写一个头文件,包含下面两个函数:

double celsius_to_fah(double cel) //摄氏温度到华氏温度

double fahrenheit_to_cels(double fah) //华氏温度到摄氏温度

实现头文件,并编写测试程序,调用函数显示如下结果:

Celsius Fahrenheit | Fahrenheit Celsius

40.0 105.0 | 120.0 48.89

…… …… | …… ……

31.0 87.8 | 30.0 -1.11

39.0 102.0 | 110.0 43.33

(测试程序为主模块,即main( )函数所在cpp文件,头文件mytemperature.h只有函数声明;函数定义写在另一cpp文件mytemperature.cpp)

程序:

主程序:

#include<iostream>#include "mytemperature.h";using namespace std;int main(){double cel,fah;cout << "Celsius Fahrenheit: ";cin >> cel;printf("%.1f %.1f\n",cel, celsius_to_fah(cel));cout << "Fahrenheit Celsius: ";cin >> fah;printf("%.1f %.2f\n",fah, fahrenheit_to_cels(fah));return 0;}

函数mytemperature.cpp:

#include<iostream>double celsius_to_fah(double cel){double f;f = cel * 1.8 + 32;return f;}double fahrenheit_to_cels(double fah){double c;c = (fah - 32)/1.8;return c;}

头文件mytemperature.h:

#ifndef _mytemperature_h_#define _mytemperature_h_double celsius_to_fah(double cel);//摄氏温度到华氏温度double fahrenheit_to_cels(double fah); //华氏温度到摄氏温度#endif

结果:

输入与输出

  • 输入摄氏度40.0,华氏度120.0
  • 输出转化后的华氏度104.0,转化后的摄氏度48.89
  • 输入摄氏度31.0,华氏度30.0
  • 输出转化后的华氏度87.8,转化后的摄氏度-1.11

4、猴子吃桃:猴子第一天摘若干桃子,当即吃了一半,还不过瘾,又吃了一个。第二天又将剩下的桃子吃掉一半,又多吃一个,以后每天如此,到第10天,发现只剩最后一个桃子,问:第一天猴子共摘多少桃子(用递归实现)。

程序:

#include<iostream>using namespace std;int f(int n);int main(){int n=1;cout<<"第一天摘的桃子数为"<<f(n)<<endl;return 0;}int f(int n){int num;if(n==10){num=1;return num;}elsenum=(f(n+1)+1)*2;return num;}

结果:

  • 直接输出第一天摘的桃子数为1534

、实验思考

1、本实验中函数中返回的值为什么与函数类型一致?

  • 函数本没有类型,只是为了识别返回值的类型,才在声明中在函数前面也加了这个类型,一遍编译程序把返回值以这个指定类型来处理。所以,函数中返回值的类型只能与函数声明时的类型一致。

2、本实验中主函数调用函数时采用的是何种传递方式?

  • 传用参数的传递方式。

五、体会

这节实验内容相比前两节难度增大了许多,但经过不断尝试可以较好地完成,并对c++中的函数知识有较好的掌握。

C++程序设计 实验三相关推荐

  1. c语言程序设计实验三程序,c语言程序设计实验三循环.doc

    c语言程序设计实验三循环 高级语言程序设计 实验三 循环控制 一.实验目的和要求 1. 熟练掌握用while语句.do while语句和for语句实现循环的方法.掌握在程序设计中用循的方法实现一些常用 ...

  2. 20155229实验三 《Java面向对象程序设计实验三 敏捷开发与XP实践 》实验报告

    实验题目 1.在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能. 2.下载搭档实验二的Complex代 ...

  3. linux实验三shell程序设计,实验三 LINUX SHELL编程

    精选文库 -实验三LINUX SHELL 编程 四.实验内容 本实验包含两个具体的SHELL程序编写任务,较为全面地涉及了SHELL 程序的设计方法和技术.内容如下: 1.创建以下菜单程序: USER ...

  4. Java程序设计 实验三

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计   班级:1353       姓名:李海空  学号:20135329 成绩:             指 ...

  5. 合肥工业大学 网络程序设计 实验三

    目录 一.实验目的 二.实验环境 三.实验内容 四.原理实验步骤 实验原理 实验步骤 1.安装VS所需环境(注意VS INSTALLER的"修改"是只保持有当前勾选的组件) 2.创 ...

  6. 南京邮电大学高级语言程序设计实验三(函数实验)

    一. 实验目的和要求 (1)掌握正确的函数定义与调用,需要时会正确使用函数声明.会正确设置形式参数,理解参数传递及程序的执行流程. (2)理解各种不同存储类别变量的生命期与作用域 (3)进一步熟悉调试 ...

  7. c语言已知祖父年龄70,实验三循环结构程序设计.doc

    实验三循环结构程序设计 实验三 循环结构程序设计 一.实验目的 (1) 掌握while.do~while.for语句的使用. (2) 掌握循环体内使用break.continue语句的作用. (3) ...

  8. ## 计算机学院实验报告 课程名称 .NET程序设计 实验名称 实验三 HTML网页设计

    .NET程序设计 实验三 HTML网页设计 一.实验目的: 1.熟练掌握HTML的基本语法. 2.掌握使用记事本进行简单网页编辑的方法. 3.熟练掌握使用Dreamweaver 8插入主要HTML元素 ...

  9. C++程序设计 —— 实验四:STL 应用

    目录 一.STL的基础知识 1.STL简介 2.STL基本组成 2.1 容器 2.2 迭代器 二.应用 1:结合容器和迭代器解决序列变换和像素变换 1.常规方法实现序列变换,如取反.平方.立方 2.特 ...

最新文章

  1. 数据通信技术(二:交换机配置管理)
  2. 欢迎使用markdown编辑器20181206
  3. 准确率,召回率,F值,ROC,AUC
  4. 一款针对Outlook的红队安全研究工具
  5. Linux7安装系统服务,linux系统安装及初始服务优化-centos7.4
  6. Apache Flink 零基础入门(二十)Flink kafka connector
  7. c++ 暂停功能_2020.10.16撸友简报:NC资本澄清;去嗨皮打赏交易
  8. 解决fatal: unable to connect to github.com问题
  9. ABAP内表数据和JSON格式互转
  10. FFmpeg编码支持与定制(三)
  11. 联想服务器(RD540)安装双系统
  12. android activity根节点addview_Android嵌入到页面中的加载动画工具类
  13. TortoiseSVN 官网 中文语言包位置
  14. 模糊自适应PID算法及其运用
  15. 人工智能、机器学习、深度学习和神经网络的关系
  16. 【软件应用】word等office软件中好用的数学公式编辑器插件
  17. 5套精美的石器时代游戏官方网页源码
  18. Prolog语言及程序设计汇总
  19. 逃避追债?贾跃亭把法拉第未来股权转给了外甥,但他还有5套豪宅! | 焦点
  20. 石子合并问题(no circle)

热门文章

  1. 遗传算法(GA)详解
  2. java版 SpringCloud 之Eclipse 教程
  3. kdj超卖_KDJ指标的超买与超卖
  4. Android 蓝牙对战五子棋项目实现(含人机对战功能)
  5. 台式计算机的CPU上安装有小风扇,台式电脑cpu风扇安装教程
  6. Ubuntu学习 wc
  7. 计算机的专业的个人陈述,计算机专业留学个人陈述范文
  8. 数据分析——EXCEL可视化
  9. Python轻松抓取微信公众号文章
  10. 用VScode做vue开发好用的小工具(推荐)