41340079 林树林 机械1303 实验6.docx
- 文档编号:2841110
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:17
- 大小:160.68KB
41340079 林树林 机械1303 实验6.docx
《41340079 林树林 机械1303 实验6.docx》由会员分享,可在线阅读,更多相关《41340079 林树林 机械1303 实验6.docx(17页珍藏版)》请在冰豆网上搜索。
41340079林树林机械1303实验6
本周实验内容:
函数与预处理1
完成下面实验内容,将程序清单或运行结果截图复制到实验文档中,以“学号+姓名+班级+实验6.doc”命名实验文档,将文档上传至ftp服务器上的“C++\”目录下。
注:
本此实验内容与教材略有不同,请按本文档完成实验内容。
一、实验目的
1、理解函数的概念和定义。
2、锻炼调试程序的能力。
二、实验内容和实验要求
按实验指导书P166至P167的要求,完成实验6的实验内容及自测练习。
1.练习题1
运行结果截图:
思考题及问题:
答案:
#include
usingnamespacestd;
intprime(intn);
intmain()
{
intj;
for(j=200;j<=300;j++)
{if(prime(j))
cout< if(j+2==235||j+2==265||j+2==285) cout< return0; } prime(intn) {inti; for(i=2;i<=n-1;i++) if(n%i==0)break; if(i==n) return1; else return0; } 2.练习题2 运行结果截图: 思考题及问题: 答案: #include usingnamespacestd; intmain() { intm,n; cout<<"求最大公约数和最小公倍数,请输入m和n\n"; cin>>m>>n; intremainder,temp,i; if(n>m) {temp=m;m=n;n=temp;} remainder=m%n; while(remainder! =0) {m=n; n=remainder; remainder=m%n; } i=n; cout<<"最大公约数为"< return0; } 3.练习题3 运行结果截图: 思考题及问题: 答案: #include #include usingnamespacestd; inlinecharfun(charch) {if(ch>='D'&&ch<='Z'||ch>='d'&&ch<='z') ch=ch-3; elseif(ch>='A'&&ch<='C'||ch>='a'&&ch<='c') ch=(ch+26)-3; returnch; } intmain() {charc; cout<<"pleaseinputastring: "; while((c=getchar())! ='\n') { cout< } cout<<"\n"; return0; } 4.练习题4 运行结果截图: 思考题及问题: 答案: voidroot(floata,floatb); voidroot(floata,floatb,floatd); voidroot1(floata,floatb,floatd); voidprint(floatb,floatc); voidprint(floata,floatb,floatc); 5.练习题五(此题为新增内容) ⑴数字反射 ⑵要求 编写一个函数,接收一个整数值,返回这个数中数字逆序后的结果值。 例如: 给定数7631,函数返回1367. ⑶思路 1通过%10运算与循环的结合,可依次获得给定数的每位数字。 例如: 7631%10=1,获得了个位数;7631/10=763,即丢掉了个位数字。 继续下去,可依次得到数字1、3、6、7. 2边循环边将每次得到的数字添加到需返回的数值中。 例如: 0*10+1=1;1*10+3=13;13*10+6=136;136*110+7=1367. ⑷程序代码 #include usingnamespacestd; intfan(inta) {intb; b=a%10*1000+a/10%10*100+a/100%10*10+a/1000; returnb; } intmain() {intm; cout<<"输入一个四位数: "; cin>>m; cout<<"该数的反射数为: "< return0; } ⑸运行结果 6.练习题六(此题为新增内容) ⑴猜数字游戏 ⑵要求 编写一个程序,可以玩“猜数字”的游戏。 具体描述如下: 程序在1~1000之间的整数中随机选择需要猜的数。 然后显示: Ihaveanumberbetween1and1000. Canyouguessmynumber? Pleasetypeyourfirstguess. 玩家于是输入猜想的第一个数。 程序会做出如下响应之一: 1.ExcellentYouguessedthenumber! Wouldyouliketoplayagain(yorn)? 2.Toolow.Tryagain. 3.Toohigh.Tryagain. 如果玩家的猜测是不正确的,程序应继续循环,直到玩家最终猜对为止。 此过程中程序要一直提醒玩家是猜大了(Toolhigh)还是猜小了(Toollow),这样帮助玩家尽快获得正确的答案。 ⑶思路 1通过rand()函数产生随机数。 关于rand()的介绍和使用方法已附在本文档最后,请参考使用。 2程序流程介绍如下: a)产生一个让玩家猜想的介于1~1000的数,并显示提示. b)通过循环检测玩家猜想是否正确。 如正确,输出相应提示并退出循环;如不正确,输出相应提示,继续循环。 3本题中关于函数的使用不做具体限制,可使用函数,也可不使用函数。 若使用函数,可将本程序按功能进行分解,每一个子功能应用函数。 ⑷程序代码 #include #include #include usingnamespacestd; intmain() { intt,a,i,k; for(i=1;i<2;) { srand(time(0)); t=rand()%1001+1; cout<<"Ihaveanumberbetween1and1000."< cout<<"Canyouguessmynumber? "< cout<<"Pleasetypeyourfirstguess."< do { cin>>a; if(a==t){cout<<"ExcellentYouguessedthenumber! "< cout<<"Wouldyouliketoplayagain(y=1orn=0)? "< cin>>k; if(k==0)i++;} elseif(a elsecout<<"Toohigh.Tryagain."< }while(a! =t); } return0; } ⑸运行结果 三、自测练习 1.自测练习1 源程序文本: #include #include usingnamespacestd; inlinecharfun(charch) {if(ch=='T') ch=''; returnch; } intmain() {charc; cout<<"pleaseinputastring: "; while((c=getchar())! ='\n') {cout< } cout<<"\n"; return0; } 运行结果截图: 2.自测练习2 源程序文本: #include #include usingnamespacestd; intmain() { intMax(inta,intb); intMax(intc,intd,inte); doubleMax(doublef,doubleg); doubleMax(doubleh,doublei,doublej); inta,b,c,d,e; doublef,g,h,i,j; cin>>a>>b>>c>>d>>e; cout< cin>>f>>g>>h>>i>>j; cout< cout<<"最大值分别为: "<<"\n"< return0; } intMax(inta,intb) {if(a>b) returna; else returnb; } intMax(intc,intd,inte) {intk; if(c {k=c;c=d;d=k;} if(c {k=c;c=e;e=k;} returnc; } doubleMax(doublef,doubleg) {if(f>g) returnf; else returng; } doubleMax(doubleh,doublei,doublej) {doublek; if(h {k=h;h=i;i=k;} if(h {k=h;h=j;j=k;} returnh; } 运行结果截图: 3.自测练习3 设计一个打印年历的程序。 要求: 打印每个月的月历的功能由一个独立的函数完成,程序运行时,主程序通过若干次调用该函数完成年历的输出。 注意处理闰年问题。 (此题选做! ) 提示: 在主程序中输入年份,然后调用打印月历的函数依次打印该年12个月的月历。 打印月历的函数参数为: 年份,月份,无返回值。 打印结果: 纵向对应星期日至星期六,依次在相应位置输出日期。 如: 2012年4月的月历: 2012年4月月历: 日一二三四五六 1234567 891011121314 15161718192021 22232425262728 2930 此函数有两个问题需要解决: 1、该月的天数。 关于此问题只需注意闰年的影响即可。 2、该月的第一天是星期几? 这个问题需找一个参照点,如设2000年1月1日为参照点,这天是星期六,则可计算该月的第一天距离参照点有多少天,如2012年4月1日与2000年1月1日相差4474天,4474&
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 41340079 林树林 机械1303 实验6 树林 机械 1303 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)