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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

华中科技大学c++第3次上机作业.docx

1、华中科技大学c+第3次上机作业华 中 科 技 大 学计算机基础与程序设计(C+)实 验 报 告实验名称:第三次上机实验 实验学时:4姓名: 学号: 班级:电气实验日期:2017/3/27 教师批阅签字:一、实验目的掌握三种循环语句的使用。学会使用continue 和break。掌握多重循环的设计。掌握常用算法的应用。二、实验内容1在vc环境下编写下述程序代码,编译调试然后用不同的数据测试直至得到完全正确的结果。 并解释出错原因。#include#includeusing namespace std;int main( ) float x0,x1,a; couta; if(a0) couta不能

2、开平方!=1e-5) x0=x1; x1=(x0+a/x0)/2; cout a的平方根为:x1endl; return 0;语法错误:1.最后缺少花括号。逻辑错误:1.else后面有分号,导致花括号中的语句不受else限制。2.abs所提供的精度为整数更改后的程序:#include#includeusing namespace std;int main( ) float x0,x1,a; couta; if(a0) couta不能开平方!=1e-5) x0=x1; x1=(x0+a/x0)/2; cout a的平方根为:x1endl; return 0;2下列程序的功能是:计算一对兔子,从出

3、生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子,假设兔子不存在死亡问题,请问从第1个月到第20个月,每个月有多少对兔子?要求输出时按行列方式每行显示5个数据。如下图:编译调试该程序看是否正确,不正确的话修改之直至完全满足要求。并解释出错原因。int main() int fib0=0,fib1=1,fib2; int n; coutsetw(5)fib0fib1endl; for(n=1;n=20;n+) fib2=fib0+fib1; coutsetw(5)fib2; fib1=fib2; fib0=fib1; if(n%5=0) coutendl; return

4、0;语法错误:1.缺少头文件(iostream以及iomanip)以及命名空间。2.return 0后的分号为中文分号。逻辑错误:1. coutsetw(5)fib1;最初只需要输出一个月而且无需换行2.前面已经输出一个月 所以n=19。而且后面的换行也需要改为n+13.复制顺序错误,应该为fib0=fib1; fib1=fib2;改正后的程序:#include #include using namespace std;int main() int fib0=0,fib1=1,fib2; int n; coutsetw(5)fib1; for(n=1;n=19;n+) fib2=fib0+fi

5、b1; coutsetw(5)fib2; fib0=fib1; fib1=fib2; if(n+1)%5=0) coutendl; return 0;3编程任意输入一个三位数,判断其是否是水仙花数(水仙花数是指这个数等于个位,十位和百位的立方和。 例如:153=13+53+33)要求:程序原代码,及运行结果截图。(直接粘贴在此)#include using namespace std;int main() cout请输入需要判断的正整数a; g=a%10; s=(a/10)%10; b=a/100; if (a=g*g*g+s*s*s+b*b*b) cout该整数为水仙花数endl; else

6、 cout该整数不是水仙花数endl; return 0;解决本题的算法思路描述。首先要解决的是如何取得个十百三位的数字,然后用if语句进行判断。调试过程的记载(包括出现的错误,以及修改过程)对十位和百位的数字进行提取的时候出现错误。开始时: g=a%10; 改正后:g=a%10; s=a%100; s=(a/10)%10; b=a%1000; b=a/100;4输出3到100以内的所有素数。(要求每行显示8个数) 提示:该题需要用到多重循环,外循环代表需要判断的数,从3到100,内循环判断该数是否是素数,参考教材的例4.9(判断一个数是否为素数)。要求:程序原代码,及运行结果截图。(直接粘贴

7、在此)#include #include using namespace std;int main() int i,n,m=0,s=0,a; for (i=3;i=100;i+) a=1; for (n=2;ni;n+) if (i%n=0) a=0; break; if (a=1) coutsetw(3)i; m=m+1; if (m%8=0) coutendl; else ; return 0;解决本题的算法思路描述运用双重循环语句进行,一个用来判断是否为素数,另外一个用来循环3-100.调试过程的记载(包括出现的错误,以及修改过程)a需要每次循环都赋值,最初放在循环外,导致只能输出3一个

8、数字。花括号位置错误,导致格式不正确。5连续输入n 个整数(n由键盘输入)统计其中正数、负数和零的个数。 要求:程序原代码,及运行结果截图。(直接粘贴在此)#include using namespace std;int main() cout请输入所需统计的数字的个数n; cout请输入所需统计的数据endl; for (;ia; if (a=0) l+; else if (a0) z+; else f+; cout统计的数据中正数、负数以及0的个数分别z,f,lendl; return 0;解决本题的算法思路描述首先判断输入数据的个数,然后运用for循环和if-else语句进行统计出现次数

9、。调试过程的记载(包括出现的错误,以及修改过程)未出现错误,但是最开始的程序未进行相关提示。6改写教材115 例18 ,规则为5局3胜制规则,其余条件不变。要求:程序原代码,及运行结果截图。(直接粘贴在此)#include #include using namespace std;int main() int v1=0,v2=0,i,p1,p2; while (v13&v23) cout请输入两个小孩的划拳值,1代表石头,2代表剪刀,3代表布。p1p2; switch (p1) case 1:cout石头;break; case 2:cout剪刀;break; case 3:cout布;bre

10、ak; coutt; switch (p2) case 1:cout石头;break; case 2:cout剪刀;break; case 3:cout布;break; coutn; if(p1=p2) continue; if(p1=1&p2=2|p1=2&p2=3|p1=3&p2=1) v1+; else v2+; if (v1=3) cout小孩1获胜endl; else cout小孩2获胜endl; return 0;解决本题的算法思路描述通过修改while的循环条件即可实现五局三胜制只需要统计两个孩子的胜利次数,谁先到达三次即获胜调试过程的记载(包括出现的错误,以及修改过程) 由于为

11、书中例题,只需简单修改即可完成,故未出现错误7改写教材龟兔赛跑程序,要求在指定距离的条件下比赛,其余规则不变。要求:程序原代码,及运行结果截图。(直接粘贴在此)#includeusing namespace std;int main() int s,sw=0,st=0,station=0,sleep=0,run=0; couts; while(sws&stsw) station=1; else ; else ; else sleep+; sw+=3; if(sleep=30) station=0; sleep=0; else ; if(swst) cout乌龟胜endl; else if(sw

12、st) cout兔子胜endl; else cout平局endl; return 0;解决本题的算法思路描述1.以时间为循环的控制条件,计算两者走相同路程时谁的时间少,运用累计时间的算法,有一者到达指定路程就停止计时,然后比较两者的路程。2.对乌龟和兔子的行程进行累计,通过速度和时间来完成。3.判断兔子是否在进行休息,用station来表示,0为运动1为睡觉。4.累计睡觉的时间,每到十分钟要重新从0开始计算。调试过程的记载(包括出现的错误,以及修改过程) 赋值符号与判断相等的符号混淆。8小王拿了50元钱准备去菜场买菜,已知黄瓜3元1斤,韭菜5元1斤,西红柿4元1斤,如何买这3样菜(每种菜都必须

13、买),并且将50元花完,列出所有可能的买法。(只考虑整斤)要求:程序原代码,及运行结果截图。(直接粘贴在此)#include using namespace std;int main() int h,j,x,z; for (h=1;h17;h+) for (j=1;j=10;j+) for(x=1;x13;x+) if (3*h+5*j+4*x=50) cout黄瓜,韭菜,西红柿的数量分别为h,j,x斤。endl; return 0;解决本题的算法思路描述利用多重循环,使用穷举法得出结果。调试过程的记载(包括出现的错误,以及修改过程)For 语句中;错写为,循环语句出错,更改了循环语句。9编程

14、将一个10进制整数转换成2进制整数。要求:程序原代码,及运行结果截图。(直接粘贴在此)#include using namespace std;void main() int s,i=0,j,a,b100; cout请输入需要转化的十进制整数s; while (s!=0) a=s/2; bi=s%2; s=a; i+; for (j=i-1;j=0;j-) coutbj; coutendl;解决本题的算法思路描述十进制转为二进制的各个位数的数字用对2取余获得然后用数组储存数字最后倒序输出调试过程的记载(包括出现的错误,以及修改过程)For语句中的j开始时定义错数值,应为i-1忘记减110编程将

15、一个10进制定点小数转换成2进制定点小数。要求:程序原代码,及运行结果截图。(直接粘贴在此)#include #include using namespace std;double main() int m=0; double s,a; cout请输入需要转化的十进制定点小数s; cout结果为0.; while (m=1) s=a-1; else s=a; m+; coutfloor(a); if (s=0) break; coutendl;解决本题的算法思路描述小数点后的每一位数字用乘2循环求得,乘2后的小数用floor取整调试过程的记载(包括出现的错误,以及修改过程)输入数据的类型出错。

16、由int改为double11编程要求从文件in.txt 中连续读入n个数(n由键盘输入),统计其中正数、负数和零的个数。(in.txt 是事先建好的一个文件存有若干数据,当输入的n值大于in.txt文件中的数据个数时给出相应的提示,判断文件中的数据是否读完使用eof() 函数。eof() 函数是判断是否到文件结尾,如果到文件结尾函数返回1,否则返回0,具体参考教材115页例4.17 )要求:程序原代码,及运行结果截图。(直接粘贴在此)#include #include using namespace std;int main() double x; int z=0,f=0,l=0,n,i=1,

17、m; cout请输入所需统计的数字的个数n; ifstream in; in.open(d:in.txt); while (ix; i+; if (x=0) l+; else if (x0) z+; else f+; m=l+z+f; if (nm) cout数据数量小于所要统计的数量endl; cout统计的正数、负数和零数量分别为z,f,lendl; in.close(); return 0;解决本题的算法思路描述运用读取文件的语句,用if语句累计三种数据的个数。调试过程的记载(包括出现的错误,以及修改过程)逗号用的中文 用了标志 出现错误。更改为英文的逗号正常了。12(选做)一位商人有一

18、个40磅的砝码,由于跌落在地而碎成4块,后来称得每块碎片的重量都是整数,而且可以用这4块来称从1到40磅之间的任意整数磅的重物,问这4块砝码碎片各重多少? 提示:此题需要两次用到穷举法,第一次穷举是4个砝码的重量,分别用四个循环变量i, j, k, l来表示。第二次穷举是当i+j+k+l=40时,对重1磅到40磅共40种物品使用i, j, k, l四个称进行组合,设置一个计数器,组合出1个计数器加1,如果能组合出40个,就是我们要找的答案。要求:程序原代码,及运行结果截图。(直接粘贴在此)#include using namespace std;int main() int i,j,k,l,d

19、1,d2,d3,d4,x,flag,s=0; cout砝码分为; for(i = 1;i 41;i+) for(j = i;j 41;j+) for(k = j;k =k) s=0; for(x=1;x-2&flag=0;d1-) for(d2=1;d2-2&flag=0;d2-) for(d3=1;d3-2&flag=0;d3-) for(d4=1;d4-2&flag=0;d4-) if(x = i*d1+j*d2+k*d3+l*d4) flag = 1; s+; if(s=40) couti,j,k,l四块endl; return 0; 解决本题的算法思路描述首先找出所有组合,然后进行筛选

20、。调试过程的记载(包括出现的错误,以及修改过程)最终的输出语句所在位置一直不正确,通过调试解决。解决同一个x可能导致s多次累加的问题解决存在重复的问题,即出现1.3.9.27和3.1.9.27等三、对本次实验内容及方法、手段的改进建议,以及实验心得 实验心得包括:1)哪些知识点已掌握 2)哪些知识点有困难 3)对讲课的建议 4)对没有掌握知识的补救建议1)For语句循环,while以及do-while语句已经掌握。If-else语句、break、continue已经掌握。文件的读取与写入也已经能够运用。2)对于龟兔赛跑等很复杂的问题掌握不够熟练For语句很多次的叠加可能出错3)多进行程序上的演示,更容易理解。4)多进行相关习题的训练掌握原理重新阅读课本。

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

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