ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:18.17KB ,
资源ID:11248169      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11248169.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验4 函数与预处理.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验4 函数与预处理.docx

1、实验4 函数与预处理中 南 大 学实 验 报 告课程名称 c+程序设计 实验项目名称 实验4 实验5 实验6 指导老师 向瑶 实验学生班级 电子信息工程1503 实验学生姓名 陶韬 学号 0903130309 实验时间 2016.4.1至4.10 实验地点 校本部科技楼4楼实验成绩评定 实验4 函数与预处理实验4.14.1.1题目: 写一个判别素数的函数,在主函数输入一个整数,输出是否为素数的信息。4.1.2自己写的代码:#includeusing namespace std;bool isprime(int x);/函数声明int main() int x;/定义一个变量来储存等下要输入的数

2、 cout请输入一个整数x; if(isprime(x)/用if条件语句根据isprime函数的返回值来输出不同的结果 cout输入的是一个素数endl; else cout输入的不是一个素数endl; return 0;bool isprime(int x) int i=2; if(x=2)/特例 如果输入的是2 直接返回true return true; if(x=1) return false; for(;ix;i+) if(x%i=0) return false; return true;4.1.3根据教材优化修改后的代码 主要是对素数的算法进行优化-i只需要遍历到x的1/2即可,这样

3、的算法对于输入的数是2也是可以正确执行的,为了便于测试可以加上一个循环结构#includeusing namespace std;bool isprime(int x);/函数声明int main() int x;/定义一个变量来储存等下要输入的数 cout当输入的数不为负数时一直进行循环endl; cout请输入一个整数x; while(x=0) if(isprime(x)/用if条件语句根据isprime函数的返回值来输出不同的结果 cout输入的是一个素数endl; else cout输入的不是一个素数endl; cout请继续输入一个整数:x; return 0;bool isprim

4、e(int x) int i=2; if(x=1|x=0) return false; for(;ix/2;i+) if(x%i=0) return false; return true; 4.1.4测试结果当输入的数不为负数时一直进行循环请输入一个整数17输入的是一个素数请继续输入一个整数:34输入的不是一个素数请继续输入一个整数:2输入的是一个素数请继续输入一个整数:1输入的不是一个素数请继续输入一个整数:0输入的不是一个素数请继续输入一个整数:实验4.2 4.2.1题目:写一个函数验证哥德巴赫猜想,一个不小于6的偶数可以表示为两个素数之和,如6=3+3,8=3+5,10=3+7,。在主函

5、数中输入一个不小于6的偶数n,然后调用函数gotbaha,在gotbaha函数中再调用prime函数,prime函数的作用是判别一个数是否为素数。在gotbaha函数中输出以下形式的结果 34=3+31;运行时输入该偶数的值为6,12,20,458,分析运行结果。如果输入2,4,会出现什么情况?修改程序 ,使之能输出相应的信息4.2.2代码部分#includeusing namespace std;bool isprime(int x);/判断一个数是否是素数的函数声明void gotbaha(int y);/验证哥德巴赫猜想的函数int main() cout请输入一个不小于6的偶数endl

6、; cout当输入的数不为负数时一直循环x; while(x=0)/循环直到输入的数为负数 gotbaha(x); coutx; bool isprime(int x) int i=2; if(x=1|x=0) return false; for(;i=x/2;i+) if(x%i=0) return false; return true;void gotbaha(int y) int x1,x2; for(x1=2,x2=y-x1;x1=y/2;x1+,x2=y-x1)/*这里的算法是设出x1 那么x2自然也就等于y-x1分别验证这两个数都满足素数即可*/ if(isprime(x1)&is

7、prime(x2) couty=x1+x2endl; else continue; 4.2.3运行结果1 请输入一个不小于6的偶数当输入的数不为负数时一直循环66=3+3请输入一个新的数据进行验证1212=5+7请输入一个新的数据进行验证2020=3+1720=7+13请输入一个新的数据进行验证458458=19+439458=37+421458=61+397458=79+379458=109+349458=127+331458=151+307458=181+277458=229+229请输入一个新的数据进行验证4.2.4本题第二问:如果输入2,和4 会输出什么情况 ?修改程序使之能输出相应的

8、信息4.2.5运行结果2 请输入一个不小于6的偶数当输入的数不为负数时一直循环2请输入一个新的数据进行验证44=2+2请输入一个新的数据进行验证4.2.6修改代码 使之能输出相应的信息分析 :因为哥德巴赫猜想是针对大于或者等于6的偶数而言 所以如果用户输入一个小于6的偶数时只要提示其输入错误 需要重新输入即可。4.2.7代码2#includeusing namespace std;bool isprime(int x);/判断一个数是否是素数的函数声明void gotbaha(int y);/验证哥德巴赫猜想的函数int main() cout请输入一个不小于6的偶数endl; cout当输入

9、的数大于或者等于6时一直循环x; if(x6) cout请根据哥德巴赫猜想的前提条件输入一个大于或者等于6的偶数=6)/循环直到输入的数为负数 gotbaha(x); coutx; if(x6) cout请根据哥德巴赫猜想的前提条件输入一个大于或者等于6的偶数endl; return 0;bool isprime(int x) int i=2; if(x=1|x=0) return false; for(;i=x/2;i+) if(x%i=0) return false; return true;void gotbaha(int y) int x1,x2; for(x1=2,x2=y-x1;x

10、1=y/2;x1+,x2=y-x1)/*这里的算法是设出x1 那么x2自然也就等于y-x1分别验证这两个数都满足素数即可*/ if(isprime(x1)&isprime(x2) couty=x1+x2endl; else continue; 4.2.8 运行结果请输入一个不小于6的偶数当输入的数大于或者等于6时一直循环66=3+3请输入一个新的数据进行验证4请根据哥德巴赫猜想的前提条件输入一个大于或者等于6的偶数Press any key to continue实验4.34.3.1题目: 解决汉诺塔问题。古代有一个梵塔,塔内有3个座,A,B,C,开始时A座上有64个盘子,盘子大小不等,大的在

11、下,小的在上。有一个老和尚想把这64个盘子从A座移到C座,但每次只允许移动一个盘,且在移动过程中在3个座上都始终保持大盘在下 小盘在上。在移动过程中可以利用B座,要求编程序打印出移动的步骤。 在运行时分别指定盘子数为3.,5,7,。并统计在不同盘子数的情况下,移动盘子多少次。请试一下如果盘子数为16,在你所用的计算机上要运行多少时间。设想一下,如果盘子数为63,会出现什么情况?4.3.2代码#includeusing namespace std;void hannuota(int x,char one,char two,char three);/汉诺塔函数表示one座借助two座把x个盘子移动

12、到three座void move(char a,char b);/移动函数 输出从a移动到bint times=0;/全局变量用来统计一共搬运了多少次int main() cout请输入一共有多少个盘子在A座x; cout具体的操作步骤:endl; hannuota(x,A,B,C); cout一共执行了times次endl; return 0;void hannuota(int x,char one, char two,char three) if(x=1) move(one,three);/当盘子数只为1的时候显然只需要从one搬到three else hannuota(x-1,one,t

13、hree,two);/递归把x-1个盘子从one借助tree移动到two move(one,three);/把剩下的一个盘子从one搬到three hannuota(x-1,two,one,three);/把x-1个盘子从two借助one移动到three void move(char a,char b) coutabCA-BC-BA-CB-AB-CA-C一共执行了7次Press any key to continue4.3.3.2当输入5请输入一共有多少个盘子在A座5具体的操作步骤:A-CA-BC-BA-CB-AB-CA-CA-BC-BC-AB-AC-BA-CA-BC-BA-CB-AB-CA-

14、CB-AC-BC-AB-AB-CA-CA-BC-BA-CB-AB-CA-C一共执行了31次Press any key to continue4.3.3.3考虑篇幅原因就不复制过来 当x=7 一共搬运 127次如果盘子数为16在我的pc上需要运行大约5s4.3.4 如果盘子数为16 要运行多久?如果盘子数为64 会出现什么情况如果盘子数为64 需要执行(264-1=1084467x1019),将会运行几十分钟左右。实验4.44.4.1题目:输入一个字母字符,设置条件编译,使之能根据需要将小写字母改写为大写字母输出,或将大写字母改写为小写字母输出。4.4.2代码:#includeusing nam

15、espace std;/#define UPPER/ 如果需要将大写改为小写把这一行注释即可int main() char c; cout请输入一个字符字母c;#ifdef UPPER if(c=a&c=A&c=Z) c+=32;#endif coutcendl;4.4.3 运行结果请输入一个字符字母AaPress any key to continue请输入一个字符字母aAPress any key to continue实验4.54.5.1题目:求ab和am的值,其中b的值在程序中给出,a和m值由键盘输入,卸一个power函数求am的值,在主函数中求ab,并调用power函数得到am的值。

16、要求将主函数和power函数分别写成两个文件file1.cpp和file2.cpp,用extern将外部变量作用域扩展到其他文件。建立一个项目文件,包含file1.cpp和file2.cpp,按照本书第2部分中介绍的对包含多文件的程序的处理办法,对包含多文件的程序进行编译、连接和运行。通过这个简单的程序,初步掌握处理包含多文件程序的方法。4.5.2 file1.cpp的代码#includeusing namespace std;int a;extern int power(int);int main() int b=2; cout请输入a和m的值am; couta*b=a*bendl; int result; result=power(m); couta的m次方=resultendl; 4.5.3 file2的代码extern a;int power(int m) int i=1,result=1; for(i=1;i=m;i+) result*=a; return result;4.5.4运行结果extern a;int power(int m) int i=1,result=1; for(i=1;i=m;i+) result*=a; return result;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1