C++程序设计 实验三
实验三 函数
- 实验目的
本实验主要培养、训练学生对函数的理解,要求:
- 掌握函数的定义、声明的方法;
- 掌握函数的编写要求;
- 掌握函数的调用方法;
- 掌握函数参数的传递方法;
- 掌握变量的作用域;
- 掌握多文件编程方法。
- 实验内容
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++程序设计 实验三相关推荐
- c语言程序设计实验三程序,c语言程序设计实验三循环.doc
c语言程序设计实验三循环 高级语言程序设计 实验三 循环控制 一.实验目的和要求 1. 熟练掌握用while语句.do while语句和for语句实现循环的方法.掌握在程序设计中用循的方法实现一些常用 ...
- 20155229实验三 《Java面向对象程序设计实验三 敏捷开发与XP实践 》实验报告
实验题目 1.在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能. 2.下载搭档实验二的Complex代 ...
- linux实验三shell程序设计,实验三 LINUX SHELL编程
精选文库 -实验三LINUX SHELL 编程 四.实验内容 本实验包含两个具体的SHELL程序编写任务,较为全面地涉及了SHELL 程序的设计方法和技术.内容如下: 1.创建以下菜单程序: USER ...
- Java程序设计 实验三
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1353 姓名:李海空 学号:20135329 成绩: 指 ...
- 合肥工业大学 网络程序设计 实验三
目录 一.实验目的 二.实验环境 三.实验内容 四.原理实验步骤 实验原理 实验步骤 1.安装VS所需环境(注意VS INSTALLER的"修改"是只保持有当前勾选的组件) 2.创 ...
- 南京邮电大学高级语言程序设计实验三(函数实验)
一. 实验目的和要求 (1)掌握正确的函数定义与调用,需要时会正确使用函数声明.会正确设置形式参数,理解参数传递及程序的执行流程. (2)理解各种不同存储类别变量的生命期与作用域 (3)进一步熟悉调试 ...
- c语言已知祖父年龄70,实验三循环结构程序设计.doc
实验三循环结构程序设计 实验三 循环结构程序设计 一.实验目的 (1) 掌握while.do~while.for语句的使用. (2) 掌握循环体内使用break.continue语句的作用. (3) ...
- ## 计算机学院实验报告 课程名称 .NET程序设计 实验名称 实验三 HTML网页设计
.NET程序设计 实验三 HTML网页设计 一.实验目的: 1.熟练掌握HTML的基本语法. 2.掌握使用记事本进行简单网页编辑的方法. 3.熟练掌握使用Dreamweaver 8插入主要HTML元素 ...
- C++程序设计 —— 实验四:STL 应用
目录 一.STL的基础知识 1.STL简介 2.STL基本组成 2.1 容器 2.2 迭代器 二.应用 1:结合容器和迭代器解决序列变换和像素变换 1.常规方法实现序列变换,如取反.平方.立方 2.特 ...
最新文章
- 数据通信技术(二:交换机配置管理)
- 欢迎使用markdown编辑器20181206
- 准确率,召回率,F值,ROC,AUC
- 一款针对Outlook的红队安全研究工具
- Linux7安装系统服务,linux系统安装及初始服务优化-centos7.4
- Apache Flink 零基础入门(二十)Flink kafka connector
- c++ 暂停功能_2020.10.16撸友简报:NC资本澄清;去嗨皮打赏交易
- 解决fatal: unable to connect to github.com问题
- ABAP内表数据和JSON格式互转
- FFmpeg编码支持与定制(三)
- 联想服务器(RD540)安装双系统
- android activity根节点addview_Android嵌入到页面中的加载动画工具类
- TortoiseSVN 官网 中文语言包位置
- 模糊自适应PID算法及其运用
- 人工智能、机器学习、深度学习和神经网络的关系
- 【软件应用】word等office软件中好用的数学公式编辑器插件
- 5套精美的石器时代游戏官方网页源码
- Prolog语言及程序设计汇总
- 逃避追债?贾跃亭把法拉第未来股权转给了外甥,但他还有5套豪宅! | 焦点
- 石子合并问题(no circle)