高级程序设计语言实验指导书面向过程部分.docx

上传人:b****5 文档编号:27692590 上传时间:2023-07-04 格式:DOCX 页数:76 大小:473.73KB
下载 相关 举报
高级程序设计语言实验指导书面向过程部分.docx_第1页
第1页 / 共76页
高级程序设计语言实验指导书面向过程部分.docx_第2页
第2页 / 共76页
高级程序设计语言实验指导书面向过程部分.docx_第3页
第3页 / 共76页
高级程序设计语言实验指导书面向过程部分.docx_第4页
第4页 / 共76页
高级程序设计语言实验指导书面向过程部分.docx_第5页
第5页 / 共76页
点击查看更多>>
下载资源
资源描述

高级程序设计语言实验指导书面向过程部分.docx

《高级程序设计语言实验指导书面向过程部分.docx》由会员分享,可在线阅读,更多相关《高级程序设计语言实验指导书面向过程部分.docx(76页珍藏版)》请在冰豆网上搜索。

高级程序设计语言实验指导书面向过程部分.docx

高级程序设计语言实验指导书面向过程部分

 

高级程序设计语言

实验指导书

(面向过程部分)

 

电信学院计算机系

 

—、上机实验的指导思想和要求

1.1上机实验的目的

学习C++程序设计不能满足于“懂得了”,满足于了解了语法和能看懂书上的程序,而应当掌握程序设计的全过程,即能独立编写出源程序,独立上机调试程序,独立运行程序和分析结果。

设计C++的初衷是为方便开发大型程序,虽然在学校中初学C++时还没有机会接触到大型程序,更不可能编写出能供实际应用的大型程序,而只能接触到比较简单的程序。

但是应当通过学习C++课程,对C++有比较全面的、然而是初步的认识,为今后进一步学习和应用C++打下良好的基础。

程序设计是一门实践性很强的课程,必须十分重视实践环节。

许多实际的知识不是靠听课和看书学到手的,而是通过长时间的实践积累的。

要提倡通过实践去掌握知识的方法。

必须保证有足够的上机实验时间,除了学校规定的上机实验以外,建议学生自己课余抽时间多上机实践。

上机实验的目的,绝不仅是为了验证教材和讲课的内容,或者验证自己所编的程序正确与否。

学习程序设计,上机实验的目的是:

(1)加深对讲授内容的理解,尤其是一些语法规定,光靠课堂讲授,既枯燥无味又难以记住,但它们是很重要的,初学者的程序出错往往错在语法上。

通过多次上机,就能自然地、熟练地掌握。

通过上机来掌握语法规则是行之有效的方法。

(2)熟悉所用的计算机系统的操作方法,也就是了解和熟悉C++程序开发的环境。

一个程序必须在一定的外部环境下才能运行,所谓“环境”,就是指所用的计算机系统的硬件和软件条件,或者说是工作平台。

使用者应该了解为了运行一个C++程序需要哪些必要的外部条件(例如硬件配置、软件配置),可以利用哪些系统的功能来帮助自己开发程序。

每一种计算机系统的功能和操作方法不完全相同,但只要熟练掌握一两种计算机系统的使用,再遇到其他系统时便会触类旁通,很快地学会。

(3)学会上机调试程序。

也就是善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行。

经验丰富的人,在编译连接过程中出现“出错信息”时,一般能很快地判断出错误所在,并改正之。

而缺乏经验的人即使在明确的“出错提示”下也往往找不出错误而求助于别人。

要真正掌握计算机应用技术,就不仅应当了解和熟悉有关理论和方法,还要求自己动手实现。

对程序设计来说,则要求会编程序并上机调试通过。

因此调试程序不仅是得到正确程序的一种手段,而且它本身就是程序设计课程的一个重要的内容和基本要求,应给予充分的重视。

调试程序固然可以借鉴他人的现成经验,但更重要的是通过自己的直接实践来累积经验,而且有些经验是只能“会意”难以“言传”。

别人的经验不能代替自己的经验。

调试程序的能力是每个程序设计人员应当掌握的一项基本功。

因此,在做实验时千万不要在程序通过后就认为万事大吉、完成任务了,而应当在已通过的程序基础上作一些改动(例如修改一些参数、增加程序一些功能、改变某些语句等),再进行编译、连接和运行。

甚至于“自设障碍”,即把正确的程序改为有错的(例如语句漏写分号;比较符“==”错写为赋值号“=”;使数组下标出界;使整数溢出等),观察和分析所出现的情况。

这样的学习才会有真正的收获,是灵活主动的学习而不是呆板被动的学习。

1.2上机实验前的准备工作

在上机实验前应事先做好准备工作,以提高上机实验的效率,准备工作至少应包括:

(1)了解所用的计算机系统(包括C++编译系统和工作平台)的性能和使用方法;

(2)复习和掌握与本实验有关的教学内容;

(3)准备好上机所需的程序。

手编程序应书写整齐,并经人工检查无误后才能上机,以提高上机效率。

初学者切忌不编程序或抄袭别人程序去上机,应从一开始就养成严谨的科学作风;

(4)对运行中可能出现的问题事先做出估计,对程序中自己有疑问的地方,应作出记号,以便在上机时给予注意:

(5)准备好调试和运行时所需的数据。

1.3实验报告

实验后,应整理出实验报告,实验报告应包括以下内容:

(1)题目;

(2)程序清单(可以采用计算机打印出的程序清单):

(3)运行结果(程序清单所对应打印输出的结果);

(4)对运行情况所作的分析以及本次调试程序所取得的经验。

如果程序未能通过应分析其原因。

二、实验内容

实验一顺序结构设计

【实验类型】验证性

【实验要求】必做

【实验目的】

1、熟悉VisualC++的集成开发环境。

2、掌握C++程序的书写格式、及程序的执行过程。

3、根据题目要求,学会用顺序结构进行程序设计。

4、掌握顺序结构程序设计与调试的基本方法。

【实验内容】

1、从键盘输入三个数,求这三个数的平均值,并输出结果。

2、验证教材p2_2.cpp,p2_3.cpp和p2_4.cpp的程序结果。

【参考程序】

1、

#include

usingnamespacestd;

voidmain()

{

floatnum1,num2,num3;//定义三个数

cout<<"Pleaseinputthreenumbers:

";

cin>>num1>>num2>>num3;

cout<<"Theaverageof"<

cout<<"is:

"<<(num1+num2+num3)/3<

}

2、

/*******************************

*p2_2.cpp*

*演示算术运算表达式*

********************************/

#include

usingnamespacestd;

voidmain()

{

inta;

a=7*2+-3%5-4/3;

floatb;

b=510+3.2e3-5.6/0.03;

cout<

intm(3),n(4);

a=m++---n;

cout<

}

3、

/*******************************

*p2_3.cpp*

*演示逻辑运算表达式*

********************************/

#include

usingnamespacestd;

voidmain()

{

intx,y,z;

x=y=z=1;

--x&&++y&&++z;

cout<

++x&&++y&&++z;

cout<

++x&&y--||++z;

cout<

}

 

4、

/*******************************

*p2_4.cpp*

*演示条件表达式*

********************************/

#include

usingnamespacestd;

voidmain()

{

inti=10,j=20,k;

k=(i

i:

j;

cout<

k=i-j?

i+j:

i-3?

j:

i;

cout<

}

 

实验二选择结构设计

【实验类型】验证性

【实验要求】必做

【实验目的】

1、掌握if语句的书写格式、功能及执行过程。

2、掌握switch语句的书写格式、功能及执行过程。

3、根据题目要求,学会用if语句、switch语句进行选择结构的程序设计。

4、掌握选择结构程序设计与调试的基本方法。

【实验内容】

√1、根据以下函数关系,对输入的每个x值,求y值。

y=x*(x+2)2

y=2*x-1

y=x-1x<=-1

【指导】

y是一个分段表达式,要根据x的不同区间计算y的值,所以应使用if语句。

2、验证书中的相关的例题和自己有兴趣习题。

3、编程实现输入一个整数,判断其能否被3,5,7整除,并输出以下信息之一:

(1)能同时被3,5,7整除;

(2)能被其中两数(要指出哪两个)整除;

(3)能被其中一个数(要指出哪一个)整除;

(4)不能被3,5,7任一个整除。

【指导】

要判断输入的整数能否被3,5,7整除,可以用if语句来实现,这就需要考虑到7种情况,逐个判断。

这里可以将if和switch结合来实现,步骤如下:

(1)定义三个整型变量c1,c2,c3,并且初始化为0;

(2)判断如果可以被3整除,则将c1赋值为1;

(3)判断如果可以被5整除,则将c2赋值为2;

(4)判断如果可以被7整除,则将c3赋值为4;

(5)Switch语句的条件表达式为c1+c2+c3

(6)Switch语句的常量表达式依次为

0表示不能被3,5,7任一个整除

1表示能被3整除

2表示能被5整除

3表示能被3,5整除

4表示能被7整除

5表示能被3,7整除

6表示能被5,7整除

7表示能同时被3,5,7整除

【参考程序】

1、

#include

voidmain()

{

doublex,y;

cout<<"pleaseinputx:

";

cin>>x;

if(x>10)

cout<<"xiserrordata!

";

else

{

if(x>2)

y=x*(x+2);

elseif(x>-1)

y=2*x;

else

y=x-1;

cout<<"y="<

}

}

3、

#include

voidmain()

{

inta;

cout<<"pleaseinputanumber:

\n";

cin>>a;

intc1=a%3==0;

intc2=a%5==0;

intc3=a%7==0;//753

switch((c3<<2)+(c2<<1)+c1){//c3c2c1

case0:

cout<<"不能被3,5,7整除.\n";break;//000

case1:

cout<<"只能被3整除.\n";break;//001

case2:

cout<<"只能被5整除.\n";break;//010

case3:

cout<<"可以被3,5整除.\n";break;//011

case4:

cout<<"只能被7整除.\n";break;//100

case5:

cout<<"可以被3,7整除.\n";break;//101

case6:

cout<<"可以被5,7整除.\n";break;//110

case7:

cout<<"可以被3,5,7整除.\n";break;//111

}//421

}

实验三过程化语句1

【实验类型】验证性

【实验要求】必做

【实验目的】

1、加深理解循环的概念,掌握while语句、do-while语句和for语句的使用形式及执行过程。

2、练习用C++的循环语句编写循环程序,掌握循环结构程序的设计和调试方法。

【实验内容】

√1.编程求1!

+2!

+3!

++15!

【指导】

这道题目注意最后所求的和的范围。

应将所求得的和定义为double型,而不是int型,否则会出现结果错误。

2.编程求“水仙花数”。

【指导】

“水仙花数”是指一个三位数,其各位的立方和等于该数本身。

例如,153是“水仙花数”。

求出一个三位数data的个位、十位和百位的方法是:

(1)求三位数data的个位:

data%10

(2)求三位数data的十位:

data/10%10

(3)求三位数data的百位:

data/100

3.猴子吃桃问题。

【指导】

猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。

第二天又将剩下的桃子吃了一半,又多吃一个,以后每天早上都吃了前一天剩下的一半零一个。

到第十天早上想再吃时,见只剩下一个桃子了。

求第一天共摘了多少个桃子?

采取逆向思维得方法,从后向前推算:

第一天得桃子数是第二天桃子数加1后得2倍。

【参考程序】

1、

#include

voidmain()

{

doublesum=0,t=1;

for(inti=1;i<15;i++)

{

t*=i;

sum+=t;

}

cout<<"1!

+2!

+3!

++15!

="<

}

2、

#include

voidmain()

{

intdata;

for(data=100;data<1000;data++)

{

inti=data/100;

intj=data/10%10;

intk=data%10;

if(data==i*i*i+j*j*j+k*k*k)

cout<

}

}

3、

#include

voidmain()

{

intsum=1;

for(inti=9;i>0;i--)

sum=(sum+1)*2;

cout<<"sum="<

}

【思考题】

比较while语句和for语句的异同,在什么情况下用什么形式的循环。

 

实验四过程化语句2

【实验类型】验证性

【实验要求】必做

【实验目的】

1、加深理解循环的概念,掌握while语句、do-while语句和for语句的使用形式及执行过程。

2、掌握循环嵌套的规则及多重循环的程序设计方法。

3、掌握break语句和continue语句的使用方法。

【实验内容】

√1、编程打印如下图案。

#######

#####

###

#

###

#####

#######

【指导】

注意行号与#数目和空格数目的对应关系,每一行都应先输出空格,然后输出#。

√2、编程打印九九表。

1*1=1

1*2=2 2*2=2

1*3=3 2*3=6 3*3=9

1*4=4 2*4=8 3*4=124*4=16

1*5=5 2*5=103*5=154*5=205*5=25

1*9=9 ...                                  9*9=81

【指导】

注意格式的控制,可以在输出一项后用‘\t’来控制间隔。

【参考程序】

1、

#include

voidmain()

{

inti,j;

for(i=1;i<=4;i++)

{

for(j=1;j

cout<<"";

for(j=1;j<10-2*i;j++)

cout<<"#";

cout<

}

for(i=3;i>0;i--)

{

for(j=1;j

cout<<"";

for(j=1;j<10-2*i;j++)

cout<<"#";

cout<

}

}

2、

#include

voidmain()

{

inti,j;

for(i=1;i<=9;i++)

{

for(j=1;j<=i;j++)

{

cout<<""<

if(i*j<10)

cout<<"";

}

cout<

}

}

【思考题】

1、双重for循环中应注意什么问题

2、break语句和continue语句有什么不同,各在什么情况下使用。

 

实验五函数

【实验类型】验证性

【实验要求】必做

【实验目的】

1、掌握函数的定义。

2、了解函数原型(函数声明)与函数定义的区别与联系。

3、掌握函数调用的基本方法和返回值的用法。

4、弄清值调用和引用调用在传递参数时的区别。

5、掌握用递归函数解决实际问题。

【实验内容】

√1.设计一个函数,这个函数有两个形参,一个表示年份,一个表示月份,这个函数返回这个月的天数。

【指导】

闰年的判断方法是符合下列两个条件之一:

(1)年数可以被4整除,但是不能被100整除;

(2)年数可以被4整除,又可以被400整除(因为能被400整除,一定能够被4整除,所以这个条件可以简化为能被400整除)。

条件表达式为:

(year%4==0&&year%100!

=0||year%400==0)

√2.设计一个函数,从键盘接受10个整数,求出10个整数中的最大值和最小值,并在调用函数中输出结果(引用传递)。

【指导】

这个函数要求返回两个值,所以不能使用值传递,应采用引用传递。

注意体会值传递和引用传递的区别。

3.编程求解问题。

若一头小母牛,从出生起第四个年头开始每年生一头母牛,按此规律,第n年时有多少头母牛。

(用递归函数方法求解)

【指导】

先写出函数表达式:

f(n)=f(n-1)+f(n-3);f

(1)=f

(2)=f(3)=1。

因为第n年要比n-1年多的牛,都是大于三岁的牛生的小牛,而f(n-3)正是那些在n年大于三岁的牛,然后它们在第n年生下相同数量的小牛。

【参考程序】

1、

#include

intdays(intyear,intmonth);

voidmain()

{

intyy,mm,dd;

cout<<"Pleaseintputyear:

";

cin>>yy;

cout<<"Pleaseintputmonth:

";

cin>>mm;

dd=days(yy,mm);

cout<<"thedaysis"<

}

intdays(intyear,intmonth)

{

intday;

if(month<1||month>12)

{

cout<<"monthiserrordata!

"<

day=0;

}

else

{

if(month==1||month==3||month==5||month==7||

month==8||month==10||month==12)

day=31;

elseif(month==2)

if(year%4==0&&year%100!

=0||year%400==0)

day=29;

else

day=28;

else

day=30;

}

returnday;

}

2、

#include

voidfunc(int&max,int&min);

voidmain()

{

intmax,min;

func(max,min);

cout<<"Themaxis"<

cout<<"Theminis"<

}

voidfunc(int&max,int&min)

{

inttemp;

cout<<"Pleaseintput10integers"<

cin>>temp;

max=min=temp;

for(inti=1;i<10;i++)

{

cin>>temp;

if(temp>max)

max=temp;

elseif(temp

min=temp;

}

}

3、

#include

intcownum(intn);

voidmain()

{

intnum,n;

cout<<"Pleaseinputthenoofyear:

";

cin>>n;

num=cownum(n);

cout<<"thenumbersofcowis"<

}

intcownum(intn)

{

if(n<4)

return1;

else

return(cownum(n-1)+cownum(n-3));

}

【思考题】

1、什么叫函数嵌套调用,画图说明嵌套调用时函数的调用与返回执行流程。

2、为什么要使用函数声明,函数声明与函数定义有何区别。

 

实验六数组1

【实验类型】验证性

【实验要求】必做

【实验目的】

1、掌握数组的概念,并弄清数组的存储结构。

2、掌握一维数组的定义、赋值和输入/输出的方法。

3、学会与数组有关的算法。

【实验内容】

√1、在一个10个整数的数组中找出最小数和其下标,并在主函数中打印最小数和下标。

2、验证教材P102页例5-2学生成绩排序。

【参考程序】

1、

#include

voidfind(intarr[],intlen,int&min,int&index);

voidmain()

{

intarr[10],min,index,i;

cout<<"pleaseintput10integers"<

for(i=0;i<10;i++)

cin>>arr[i];

find(arr,10,min,index);

cout<<"theminis"<

cout<<"theindexofminis"<

}

voidfind(intarr[],intlen,int&min,int&index)

{

index=0;

for(inti=1;i

if(arr[i]

index=i;

min=arr[index];

}

 

2、参考程序见P102页例5-2。

 

实验七数组2

【实验类型】验证性

【实验要求】必做

【实验目的】

1、掌握数组的概念,并弄清数组的存储结构。

2、掌握二维数组的定义、赋值和输入/输出的方法。

3、学会与数组有关的算法。

【实验内容】

1、输入一个n*n的

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

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

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