华中科技大学c++第3次上机作业_c语言第三次上机作业

其他范文 时间:2020-02-27 22:57:58 收藏本文下载本文
【www.daodoc.com - 其他范文】

华中科技大学c++第3次上机作业由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言第三次上机作业”。

华中科技大学

《计算机基础与程序设计(C++)》

实验报告

实验名称:第三次上机实验实验学时:4 姓名:学号:班级:电气

实验日期:2017/3/27

教师批阅签字:

一、实验目的

   掌握三种循环语句的使用。学会使用continue 和break。掌握多重循环的设计。掌握常用算法的应用。

二、实验内容

1.在vc环境下编写下述程序代码,编译调试然后用不同的数据测试直至得到完全正确的结果。并解释出错原因。

#include #include using namespace std;int main(){ float x0,x1,a;

cout

cin>>a;

if(a

cout

else;

{

x0=a/2;

x1=(x0+a/x0)/2;

while(abs(x1-x0)>=1e-5){

x0=x1;

x1=(x0+a/x0)/2;

}

cout

} return 0;语法错误:

1.最后缺少花括号。逻辑错误:

1.else后面有分号,导致花括号中的语句不受else限制。2.abs所提供的精度为整数 更改后的程序:

#include #include using namespace std;int main(){ float x0,x1,a;

cout

cin>>a;

if(a

cout

else

{

x0=a/2;x1=(x0+a/x0)/2;

while(fabs(x1-x0)>=1e-5){

x0=x1;

x1=(x0+a/x0)/2;

}

cout

} return 0;} 2.下列程序的功能是:计算一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子,假设兔子不存在死亡问题,请问从第1个月到第20个月,每个月有多少对兔子?要求输出时按行列方式每行显示5个数据。如下图:

编译调试该程序看是否正确,不正确的话修改之直至完全满足要求。并解释出错原因。int main(){ int fib0=0,fib1=1,fib2;int n;

} cout

语法错误:

1.缺少头文件(iostream以及iomanip)以及命名空间。2.return0后的分号为中文分号。逻辑错误:

1.cout

#include #include using namespace std;int main(){

int fib0=0,fib1=1,fib2;int n;

cout

fib2=fib0+fib1;

cout

fib0=fib1;

fib1=fib2;

if((n+1)%5==0)cout

} 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

cout

解决本题的算法思路描述。

首先要解决的是如何取得个十百三位的数字,然后用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(判断一个数是否为素数)。

要求:

程序原代码,及运行结果截图。(直接粘贴在此)

#include #include using namespace std;int main(){ int i,n,m=0,s=0,a;for(i=3;i

a=1;

for(n=2;n

{

if(i%n==0)

}

{

a=0;

break;

} }

if(a==1)

{

cout

m=m+1;

if(m%8==0)

cout

}

else

;

} return 0;

解决本题的算法思路描述

运用双重循环语句进行,一个用来判断是否为素数,另外一个用来循环3-100.调试过程的记载(包括出现的错误,以及修改过程)

a需要每次循环都赋值,最初放在循环外,导致只能输出3一个数字。花括号位置错误,导致格式不正确。

5. 连续输入n 个整数(n由键盘输入)统计其中正数、负数和零的个数。要求:

程序原代码,及运行结果截图。(直接粘贴在此)

#include using namespace std;int main(){ cout>n;cout

cin>>a;

if(a==0)

l++;

else if(a>0)

z++;

else

f++;} cout

解决本题的算法思路描述

首先判断输入数据的个数,然后运用for循环和if-else语句进行统计出现次数。调试过程的记载(包括出现的错误,以及修改过程)未出现错误,但是最开始的程序未进行相关提示。

6. 改写教材115 例18,规则为5局3胜制规则,其余条件不变。要求:

程序原代码,及运行结果截图。(直接粘贴在此)

#include #include using namespace std;int main(){ int v1=0,v2=0,i,p1,p2;while(v1

cout

cin>>p1>>p2;

switch(p1)

{

case 1:cout

} case 2:cout

continue;if(p1==1&&p2==2||p1==2&&p2==3||p1==3&&p2==1)

v1++;else

v2++;} if(v1==3)cout

解决本题的算法思路描述

通过修改while的循环条件即可实现五局三胜制

只需要统计两个孩子的胜利次数,谁先到达三次即获胜 调试过程的记载(包括出现的错误,以及修改过程)由于为书中例题,只需简单修改即可完成,故未出现错误

7. 改写教材龟兔赛跑程序,要求在指定距离的条件下比赛,其余规则不变。要求:

程序原代码,及运行结果截图。(直接粘贴在此)

#include using namespace std;int main(){

int s,sw=0,st=0,station=0,sleep=0,run=0;cout>s;while(sw

if(station==0)

{

run++;

sw+=3;

st+=9;

if(run==10)

{

run=0;

if(st>sw)

station=1;

else

;

}

else

;

} else {

sleep++;sw+=3;if(sleep==30){

station=0;sleep=0;} else;} } if(sw>st)

cout

cout

else

cout

解决本题的算法思路描述

1.以时间为循环的控制条件,计算两者走相同路程时谁的时间少,运用累计时间的算法,有一者到达指定路程就停止计时,然后比较两者的路程。2.对乌龟和兔子的行程进行累计,通过速度和时间来完成。

3.判断兔子是否在进行休息,用station来表示,0为运动1为睡觉。4.累计睡觉的时间,每到十分钟要重新从0开始计算。调试过程的记载(包括出现的错误,以及修改过程)赋值符号与判断相等的符号混淆。

8. 小王拿了50元钱准备去菜场买菜,已知黄瓜3元1斤,韭菜5元1斤,西红柿4元1斤,如何买这3样菜(每种菜都必须买),并且将50元花完,列出所有可能的买法。(只考虑整斤)要求:

程序原代码,及运行结果截图。(直接粘贴在此)#include using namespace std;int main(){ int h,j,x,z;for(h=1;h

for(j=1;j

{

for(x=1;x

{

if(3*h+5*j+4*x==50)

cout

}

} } return 0;}

解决本题的算法思路描述

利用多重循环,使用穷举法得出结果。

调试过程的记载(包括出现的错误,以及修改过程)For语句中;错写为,循环语句出错,更改了循环语句。

9. 编程将一个10进制整数转换成2进制整数。要求:

程序原代码,及运行结果截图。(直接粘贴在此)

#include using namespace std;void main(){ int s,i=0,j,a,b[100];cout>s;while(s!=0){ a=s/2;b[i]=s%2;s=a;i++;} for(j=i-1;j>=0;j--)cout

解决本题的算法思路描述

十进制转为二进制的各个位数的数字用对2取余获得 然后用数组储存数字 最后倒序输出

调试过程的记载(包括出现的错误,以及修改过程)For语句中的j开始时定义错数值,应为i-1忘记减1

10. 编程将一个10进制定点小数转换成2进制定点小数。要求:

程序原代码,及运行结果截图。(直接粘贴在此)

#include #include using namespace std;double main(){ int m=0;double s,a;cout>s;cout

a=s*2;

if(a>=1)

s=a-1;

else

s=a;

m++;

cout

if(s==0)

break;}

cout

解决本题的算法思路描述

小数点后的每一位数字用乘2循环求得,乘2后的小数用floor取整

调试过程的记载(包括出现的错误,以及修改过程)输入数据的类型出错。由int改为double

11. 编程要求从文件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,m;cout>n;ifstream in;in.open(“d:in.txt”);while(i

in>>x;

i++;

if(x==0)

l++;

else if(x>0)

z++;

else

f++;}

m=l+z+f;

if(n>m)

{cout

cout

in.close();

return 0;}

解决本题的算法思路描述

运用读取文件的语句,用if语句累计三种数据的个数。调试过程的记载(包括出现的错误,以及修改过程)

逗号用的中文用了''标志出现错误。更改为英文的逗号正常了。

12.(选做)一位商人有一个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,d1,d2,d3,d4,x,flag,s=0;

cout

for(i = 1;i

{

for(j = i;j

{

for(k = j;k

{

if((l = 40-i-j-k)>=k)

{ s=0;

for(x=1;x

{ flag=0;

for(d1=1;d1>-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)

{

cout

}

}

}

}

}

}

return 0;

}

解决本题的算法思路描述

首先找出所有组合,然后进行筛选。

调试过程的记载(包括出现的错误,以及修改过程)最终的输出语句所在位置一直不正确,通过调试解决。解决同一个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)

多进行相关习题的训练掌握原理 重新阅读课本。

华中科技大学C++实验总结报告(图形编辑器)

C++ 实验总结报告研究课题:图形编辑器 学 校:华中科技大学 院 系: 班 级: 姓 名: 指导老师: 一、实验目的1.熟悉C++的一些重要性质,利用封装、继承、虚函数和多态性等特性,通过实验......

C++上机实验报告

C++上机实验报告实验名称:实验专业班级:姓名:学号:实验日期:10 11 实验 目录 1.实验目的 2.实验内容 3.程序代码 4.调试结果 5.实验心得 1.实验目的 实验10 (1)进一步了解运算符......

C++上机实验报告

第二次上机实验报告 姓名:王小宁班级:学号: 031012 1234 第一题:题目:编写一个类,声明一个数据成员和一个静态数据成员,其构造函数初始化数据成员,并把静态数据成员加1,其析构函......

华中科技大学

华中科技大学卓越工程师教育培养计划工作进展报告(2012年度)一、总体情况我校卓越工程师培养计划的总体思路为“夯实基础、能力导向、创新机制、校企联动、个性培养、拔尖示范......

c++作业

P179 5.9.2(11)1.意图保证一个类仅有一个实例,并提供一个访问它的全局访问点。2.动机对一些类来说,只有一个实例是很重要的。虽然系统中可以有许多打印机,但却只应该有一个打印......

下载华中科技大学c++第3次上机作业word格式文档
下载华中科技大学c++第3次上机作业.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

热门文章
点击下载本文