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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

华中科技大学

《计算机基础与程序设计(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<0)

cout<

else ;

{

x0=a/2;

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

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

{

x0=x1;

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

}

cout<< a<<"的平方根为:"<

}

return 0;

语法错误:

1.最后缺少花括号。

逻辑错误:

1.else后面有分号,导致花括号中的语句不受else限制。

2.abs所提供的精度为整数

更改后的程序:

#include

#include

using namespace std;

int main( )

{

float x0,x1,a;

cout<<"输入一个正数:";

cin>>a;

if(a<0)

cout<

else

{

x0=a/2;

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

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

{

x0=x1;

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

}

cout<< a<<"的平方根为:"<

}

return 0;

}

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

编译调试该程序看是否正确,不正确的话修改之直至完全满足要求。并解释出错原因。

int main()

{

int fib0=0,fib1=1,fib2;

int n;

cout<

for(n=1;n<=20;n++)

{ fib2=fib0+fib1;

cout<

fib1=fib2;

fib0=fib1;

if(n%5==0) cout<

}

return 0;

}

语法错误:

1.缺少头文件(iostream以及iomanip)以及命名空间。

2.return 0后的分号为中文分号。

逻辑错误:

1. cout<

2.前面已经输出一个月所以n<=19。而且后面的换行也需要改为n+1

3.复制顺序错误,应该为fib0=fib1;fib1=fib2;

改正后的程序:

#include

#include

using namespace std;

int main()

{

int fib0=0,fib1=1,fib2;

int n;

cout<

for(n=1;n<=19;n++)

{ 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;

{

cout<<"请输入需要判断的正整数"<

int a,g,s,b;

cin>>a;

g=a%10;

s=(a/10)%10;

b=a/100;

if (a==g*g*g+s*s*s+b*b*b)

cout<<"该整数为水仙花数"<

else

cout<<"该整数不是水仙花数"<

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(判断一个数是否为素数)。

要求:

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

#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;n

相关文档
最新文档