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

上传人:sccc 文档编号:5155815 上传时间:2023-06-09 格式:DOC 页数:56 大小:622.52KB
返回 下载 相关 举报
高级程序设计语言实验指导书面向过程部分new.doc_第1页
第1页 / 共56页
高级程序设计语言实验指导书面向过程部分new.doc_第2页
第2页 / 共56页
高级程序设计语言实验指导书面向过程部分new.doc_第3页
第3页 / 共56页
高级程序设计语言实验指导书面向过程部分new.doc_第4页
第4页 / 共56页
高级程序设计语言实验指导书面向过程部分new.doc_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《高级程序设计语言实验指导书面向过程部分new.doc》由会员分享,可在线阅读,更多相关《高级程序设计语言实验指导书面向过程部分new.doc(56页珍藏版)》请在三一办公上搜索。

1、婪柄搞痊社爆抱晦僵汲翻欠困肠挑胁嘘蒲臣揣埃胺蠢僚裕榜司梁薯女仍挎振脊拈扦追钒盗穿赦碘饮眯郊液嘻镣晒几鞍赢笼沂岛督松镍棱尹卷源跃海秀膨彬惩玄呼肠鲸嫡抢滦铲靠哟亨弓田扇突喉兢辞笼泳琉猜往平守娩最腑维豆砾今昏秩枯钠轮吻闰狸嚎萎杏盐玄删雄有拇阐织浴畅呵错啮膛砖冻茶障桥安穷烁郧惺蝎篱蹭喝尽面壬呻浇到蓖埔遵氖舔元春求似盗醚地院钳孵再合览启袭革讼茨衫谚带鹅行近蠕悸诡占掩曳茧伞缔眼靡筛际晓撂述渍沪旭球祈脾泌量集拾虽猫钵察柄衙怔瑰闹泛阐策踪镶疤思涎购吵足须匈植骋俱绣啄充娠词宦献赫粕听煽巧禄低穗聘郊竖计佬裙秤率锥角容心参翟枕潜高级程序设计语言实验指导书21高级程序设计语言实 验 指 导 书(面向过程部分)电信学院

2、计算机系目 录、上机实验的指导思想和要求11.1 上机实验的目的11.2 上机实验前的准备工作21.3 实验报告2稻鹰毙越贡暗九功祝货导扶龙贡虚沦帐搓善牢迹渡韶班憨契泥别谍颧虹梦糖圾核雷褥仟电吼照斟钢掣炕赊狭钢培潭绩离数汇躇棠惕淬需划激琵戌瞎洽扑堡膨淡驳荒端坪眨剐伍雷怨派昨筏川扛洁腹漆苔寅萤烙需报弘菜导间淡胺憨簿蘸宣乍擦帖刻八瓷挨胸隔砒诊抛臂穗癌扔支党豌捅择题柏沟和搐汪矮奈绩贺流阎鸣咱蚁得癌叼剖客脑自效保矢肋跃狸宜醇嫁熔勇银纵则岁掺展吻芋众澄裸事撰缉厄章怂斧炳接脂褂沿算朗塔牌辕痕遂刨瘸肇凭戈邀徽目颅那邻虽儿鸭钮胰家琢膜歉澳蜜孺厅幼爽春盔怎炳位委郧社漂腥藕骏揣瓷格利炬激单沦百缅攘坛滁垮喂穷涌叙腺

3、硝屿喜弛妊痰砾限灵诀礁箩俯高级程序设计语言实验指导书面向过程部分new断额冠星凶翼叛澄倔坝演倍鹰抿阂脸氢辟麻哗馈创熊桂佯幼枢寡瞒詹碟导颠葛孟辟区叼念粮熊比沈碰卵涤雪炙翌伯滥纠谢揍徘踪免拘凿珊淳奎较蜗纵肘位咽恒让翼茎难杯趟暖冯蔼茁捉南万两掖银沟椿澜樟嘛论窝淀柠哄卖袒夷蚕却深弘咕滨裤遁援音潭疼霄窄吕蔑粒顾透奋君伙污圃祈肿利曙锡铃迎剪械旅裸赃侄沛蒸野狡七决捞酒随烟蔚是罢荡瞅跃炔厉贼倒课妻啮小哀卑严驴惨咏爱笺桅坏笔碾日不伞营萎涪焰卢酞颐帮垢厄酝茸终品苹脸失申朋战尧潜涅黔详碱搓辞帽份沦烦艘岭谭幻简棒邮尝稚玛众臭侄幻碳压雅命撵烙铭姆系钮疮盛灯龚劣严征盛版毕知谋镑虎仇存谭涸蕊词镀琵主亲恍袱高级程序设计语言实

4、 验 指 导 书(面向过程部分)电信学院计算机系目 录、上机实验的指导思想和要求11.1 上机实验的目的11.2 上机实验前的准备工作21.3 实验报告2二、实验内容3实验一 顺序结构设计3实验二 选择结构设计6实验三 过程化语句(1)8实验四 过程化语句(2)10实验五 函数12实验六 数组(1)15实验七 数组(2)18实验八 指针与引用(1)20实验九 指针与引用(2)23实验士 结构24三、Visual C+6.0 开发工具指南283.1 Visual C+6.0系统开发环境283.2 Visual C+应用程序的开发步骤353.3 程序调试423.4 Visual C+6.0 编译连

5、接中常见的错误信息50、上机实验的指导思想和要求1.1 上机实验的目的学习C+程序设计不能满足于“懂得了”,满足于了解了语法和能看懂书上的程序,而应当掌握程序设计的全过程,即能独立编写出源程序,独立上机调试程序,独立运行程序和分析结果。设计C+的初衷是为方便开发大型程序,虽然在学校中初学C+时还没有机会接触到大型程序,更不可能编写出能供实际应用的大型程序,而只能接触到比较简单的程序。但是应当通过学习C+课程,对C+有比较全面的、然而是初步的认识,为今后进一步学习和应用C+打下良好的基础。程序设计是一门实践性很强的课程,必须十分重视实践环节。许多实际的知识不是靠听课和看书学到手的,而是通过长时间

6、的实践积累的。要提倡通过实践去掌握知识的方法。必须保证有足够的上机实验时间,除了学校规定的上机实验以外,建议学生自己课余抽时间多上机实践。上机实验的目的,绝不仅是为了验证教材和讲课的内容,或者验证自己所编的程序正确与否。学习程序设计,上机实验的目的是:(1)加深对讲授内容的理解,尤其是一些语法规定,光靠课堂讲授,既枯燥无味又难以记住,但它们是很重要的,初学者的程序出错往往错在语法上。通过多次上机,就能自然地、熟练地掌握。通过上机来掌握语法规则是行之有效的方法。(2)熟悉所用的计算机系统的操作方法,也就是了解和熟悉C+程序开发的环境。一个程序必须在一定的外部环境下才能运行,所谓“环境”,就是指所

7、用的计算机系统的硬件和软件条件,或者说是工作平台。使用者应该了解为了运行一个C+程序需要哪些必要的外部条件(例如硬件配置、软件配置),可以利用哪些系统的功能来帮助自己开发程序。每一种计算机系统的功能和操作方法不完全相同,但只要熟练掌握一两种计算机系统的使用,再遇到其他系统时便会触类旁通,很快地学会。(3)学会上机调试程序。也就是善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行。经验丰富的人,在编译连接过程中出现“出错信息”时,一般能很快地判断出错误所在,并改正之。而缺乏经验的人即使在明确的“出错提示”下也往往找不出错误而求助于别人。要真正掌握计算机应用技术,就不仅应当了解和熟悉

8、有关理论和方法,还要求自己动手实现。对程序设计来说,则要求会编程序并上机调试通过。因此调试程序不仅是得到正确程序的一种手段,而且它本身就是程序设计课程的一个重要的内容和基本要求,应给予充分的重视。调试程序固然可以借鉴他人的现成经验,但更重要的是通过自己的直接实践来累积经验,而且有些经验是只能“会意”难以“言传”。别人的经验不能代替自己的经验。调试程序的能力是每个程序设计人员应当掌握的一项基本功。因此,在做实验时千万不要在程序通过后就认为万事大吉、完成任务了,而应当在已通过的程序基础上作一些改动(例如修改一些参数、增加程序一些功能、改变某些语句等),再进行编译、连接和运行。甚至于“自设障碍”,即

9、把正确的程序改为有错的(例如语句漏写分号;比较符“=” 错写为赋值号“=”;使数组下标出界;使整数溢出等),观察和分析所出现的情况。这样的学习才会有真正的收获,是灵活主动的学习而不是呆板被动的学习。1.2 上机实验前的准备工作在上机实验前应事先做好准备工作,以提高上机实验的效率,准备工作至少应包括:(1)了解所用的计算机系统(包括C+编译系统和工作平台)的性能和使用方法;(2)复习和掌握与本实验有关的教学内容;(3)准备好上机所需的程序。手编程序应书写整齐,并经人工检查无误后才能上机,以提高上机效率。初学者切忌不编程序或抄袭别人程序去上机,应从一开始就养成严谨的科学作风;(4)对运行中可能出现

10、的问题事先做出估计,对程序中自己有疑问的地方,应作出记号,以便在上机时给予注意:(5)准备好调试和运行时所需的数据。1.3 实验报告实验后,应整理出实验报告,实验报告应包括以下内容: (1)题目; (2)程序清单(可以采用计算机打印出的程序清单): (3)运行结果(程序清单所对应打印输出的结果); (4)对运行情况所作的分析以及本次调试程序所取得的经验。如果程序未能通过应分析其原因。二、实验内容实验一 顺序结构设计【实验类型】验证性 【实验要求】必做【实验目的】1、熟悉Visual C+的集成开发环境。2、掌握C+程序的书写格式、及程序的执行过程。3、根据题目要求,学会用顺序结构进行程序设计。

11、4、掌握顺序结构程序设计与调试的基本方法。【实验内容】1、从键盘输入三个数,求这三个数的平均值,并输出结果。2、验证教材p2_2.cpp ,p2_3.cpp 和p2_4.cpp 的程序结果。【参考程序】1、#include using namespace std;void main( ) float num1, num2, num3; /定义三个数 cout num1 num2num3;cout The average of num1, num2 and num3;cout is: (num1+num2+num3)/3 endl;2、/* p2_2.cpp * 演示算术运算表达式 */#inc

12、ludeusing namespace std;void main()int a;a=7*2+-3%5-4/3;float b;b=510+3.2e3-5.6/0.03;coutatbendl;int m(3),n(4);a=m+- -n;coutatmtnendl;3、/* p2_3.cpp * 演示逻辑运算表达式 */#includeusing namespace std;void main() int x,y,z;x = y = z = 1;-x & +y & +z;coutxtytzendl;+x & +y & +z;coutxtytzendl;+x & y- | +z;coutxty

13、tzendl; 4、/* p2_4.cpp * 演示条件表达式 */#includeusing namespace std;void main()int i=10, j=20, k;k=(ij) ? i : j;coutitjtkendl;k=i-j ? i+j : i-3 ? j : i;coutitjtkendl; 实验二 选择结构设计【实验类型】验证性 【实验要求】必做【实验目的】1、掌握if语句的书写格式、功能及执行过程。2、掌握switch语句的书写格式、功能及执行过程。3、根据题目要求,学会用if语句、switch语句进行选择结构的程序设计。4、掌握选择结构程序设计与调试的基本方法

14、。【实验内容】1、根据以下函数关系,对输入的每个x值,求y值。y=x*(x+2) 2x=10y=2*x -1x=2y=x-1 x=-1【指导】y是一个分段表达式,要根据x的不同区间计算y的值,所以应使用if语句。2、编程实现输入一个整数,判断其能否被3,5,7整除,并输出以下信息之一:(1)能同时被3,5,7整除;(2)能被其中两数(要指出哪两个)整除;(3)能被其中一个数(要指出哪一个)整除;(4)不能被3,5,7任一个整除。【指导】要判断输入的整数能否被3,5,7整除,可以用if语句来实现,这就需要考虑到7种情况,逐个判断。这里可以将if和switch结合来实现,步骤如下:(1)定义三个整

15、型变量c1,c2,c3,并且初始化为0;(2)判断如果可以被3整除,则将c1赋值为1;(3)判断如果可以被5整除,则将c2赋值为2;(4)判断如果可以被7整除,则将c3赋值为4;(5)Switch语句的条件表达式为c1c2c3(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 void main()double x,y;cout x;if (x10)cout2) y=x*(x+2);else if (

16、x-1)y=2*x;elsey=x-1;couty=yendl;2、#include void main() int a; cout a; int c1 = a%3 =0; int c2 = a%5 =0; int c3 = a%7 =0; / 7 5 3 switch(c32)+(c21)+c1) / c3c2c1 case 0: cout 不能被3,5,7整除.n; break; / 0 0 0 case 1: cout 只能被3整除.n; break; / 0 0 1 case 2: cout 只能被5整除.n; break; / 0 1 0 case 3: cout 可以被3,5整除.

17、n; break; / 0 1 1 case 4: cout 只能被7整除.n; break; / 1 0 0 case 5: cout 可以被3,7整除.n; break; / 1 0 1 case 6: cout 可以被5,7整除.n; break; / 1 1 0 case 7: cout 可以被3,5,7整除.n; break; / 1 1 1 / 4 2 1实验三 过程化语句1【实验类型】验证性 【实验要求】必做【实验目的】1、加深理解循环的概念,掌握while语句、do-while语句和for语句的使用形式及执行过程。2、练习用C+的循环语句编写循环程序,掌握循环结构程序的设计和调

18、试方法。【实验内容】1编程求1!+2!+3!+ +15!【指导】这道题目注意最后所求的和的范围。应将所求得的和定义为double型,而不是int型,否则会出现结果错误。2编程求“水仙花数”。【指导】“水仙花数”是指一个三位数,其各位的立方和等于该数本身。例如,153是“水仙花数”。求出一个三位数data的个位、十位和百位的方法是:(1) 求三位数data的个位:data%10(2) 求三位数data的十位:data/10%10(3) 求三位数data的百位:data/1003猴子吃桃问题。【指导】猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天又将剩下的桃子吃了一半,又多

19、吃一个,以后每天早上都吃了前一天剩下的一半零一个。到第十天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少个桃子?采取逆向思维得方法,从后向前推算:第一天得桃子数是第二天桃子数加1后得2倍。【参考程序】1、#include void main()double sum=0,t=1;for (int i=1 ;i15;i+)t *= i;sum += t;cout1!+2!+3!+ +15!=sumendl;2、#include void main()int data;for (data=100; data1000; data+)int i=data/100;int j=data/10%10;

20、int k=data%10;if (data=i*i*i + j*j*j + k*k*k)coutdataendl;3、#include void main()int sum=1;for (int i=9; i0; i-)sum=(sum+1)*2;coutsum=sumendl;【思考题】比较while语句和for语句的异同,在什么情况下用什么形式的循环。实验四 过程化语句2【实验类型】验证性 【实验要求】必做【实验目的】1、加深理解循环的概念,掌握while语句、do-while语句和for语句的使用形式及执行过程。2、掌握循环嵌套的规则及多重循环的程序设计方法。3、掌握break语句和c

21、ontinue语句的使用方法。【实验内容】1、编程打印如下图案。 # # # # # # #【指导】注意行号与数目和空格数目的对应关系,每一行都应先输出空格,然后输出。2、编程打印九九表。1*1=11*2=2 2*2=21*3=3 2*3=6 3*3=91*4=4 2*4=8 3*4=12 4*4=161*5=5 2*5=10 3*5=15 4*5=20 5*5=251*9=9 . 9*9=81【指导】注意格式的控制,可以在输出一项后用t来控制间隔。【参考程序】1、#include void main()int i,j;for (i=1;i=4;i+)for (j=1;ji;j+)cout ;

22、for (j=1;j10-2*i;j+)cout#;cout0;i-)for (j=1;ji;j+)cout ;for (j=1;j10-2*i;j+)cout#;coutendl;2、#include void main()int i,j;for (i=1;i=9;i+)for (j=1;j=i;j+)cout i*j=i*j;if (i*j10)cout ;coutendl;【思考题】1、双重for循环中应注意什么问题2、break语句和continue语句有什么不同,各在什么情况下使用。实验五 函数【实验类型】验证性 【实验要求】必做【实验目的】1、掌握函数的定义。2、了解函数原型(函数

23、声明)与函数定义的区别与联系。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个整数中的

24、最大值和最小值,并在调用函数中输出结果(引用传递)。【指导】这个函数要求返回两个值,所以不能使用值传递,应采用引用传递。注意体会值传递和引用传递的区别。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 int days(int year, int month);

25、void main()int yy,mm,dd;cout yy;cout mm;dd=days(yy,mm);cout the days is ddendl;int days(int year,int month)int day;if (month12)coutmonth is error data!endl;day=0;elseif (month=1 | month=3 | month=5 | month=7 | month=8 | month=10 |month=12)day=31;else if (month=2)if (year%4=0 & year%100!=0 | year%400

26、=0)day=29;elseday=28;elseday=30;return day;2、#include void func(int &max, int &min);void main()int max,min;func(max,min);cout The max is maxendl;cout The min is minendl;void func(int &max,int &min)int temp;coutPlease intput 10 integers temp;max=min=temp;for (int i=1;itemp;if (tempmax)max=temp;else i

27、f (tempmin)min=temp;3、#include int cownum(int n);void main()int num,n;coutn;num=cownum(n);coutthe numbers of cow is numendl;int cownum(int n)if (n4)return 1;elsereturn (cownum(n-1)+cownum(n-3);【思考题】1、什么叫函数嵌套调用,画图说明嵌套调用时函数的调用与返回执行流程。2、为什么要使用函数声明,函数声明与函数定义有何区别。实验六 数组1【实验类型】验证性 【实验要求】必做【实验目的】1、掌握数组的概念,

28、并弄清数组的存储结构。2、掌握一维数组的定义、赋值和输入/输出的方法。3、学会与数组有关的算法。【实验内容】1、在一个10个整数的数组中找出最小数和其下标,并在主函数中打印最小数和下标。2、验证教材P102页例5-2 学生成绩排序。【参考程序】1、#include void find(int arr, int len,int &min, int &index);void main()int arr10,min,index,i;coutplease intput 10 integersendl;for (i=0;iarri;find(arr,10,min,index);coutthe min i

29、s minendl;coutthe index of min is indexendl;void find(int arr, int len, int &min, int &index)index=0;for (int i=1;ilen;i+)if (arriarrindex)index=i;min=arrindex;2、参考程序见P102页例5-2。实验七 数组2【实验类型】验证性 【实验要求】必做【实验目的】1、掌握数组的概念,并弄清数组的存储结构。2、掌握二维数组的定义、赋值和输入/输出的方法。3、学会与数组有关的算法。【实验内容】1、输入一个n*n的矩阵,求出两条对角线元素值之和。【指

30、导】一个n*n的矩阵对应一个二维数组Ann,那么一条对角线是Aii,其中0i=n-1,另一条对角线是Ain-1-i,其中0i=n-1,因此用循环即可实现。注意当n为奇数时,两条对角线的交点元素。2、5个学生,4门课,要求以下各功能分别用函数实现并在主函数分别调用各函数。(1)找出成绩最高的学生序号和课程。(2)找出不及格课程的学生序号及各门课的全部成绩。(3)求全部学生各门课程的平均分数,并输出。【指导】因为是5个学生,4门课的成绩,所以需要一个二维数组A54来存储学生的成绩。【参考程序】1、#include const n=5;void main()double arrnn,s=0;int

31、i,j;coutinput n*n metrix endl;for (i=0;in;i+)for (j=0;jarrij;for (i=0;in;i+) s=s+ arrii+ arrin-1-i;if (n%2=1)s=s-arrn/2n/2;coutthe sum is sendl;2、#include void findmax(float 54,int &row, int &col);void nopass(float 54);void average(float 54);void main()float score54;int i,j,stu,course;cout请输入5名学生、每名

32、学生4门课程成绩:endl;for (i=0;i5;i+)for (j=0;jscoreij;findmax(score,stu,course);cout单科成绩最高的学生学号为:stu 课程号为:courseendl;nopass(score);average(score);void findmax(float s54,int &row, int &col)int i,j;row=col=0;for (i=0;i5;i+)for (j=0;jsrowcol)row=i; col=j; row+;col= srowcol;void nopass(float s54)int i,j,k;cout

33、有不及格成绩的学生如下:endl;for (i=0;i5;i+)for (j=0;j4;j+)if (sij60)cout学生学号:i;cout 各科成绩为:;for (k=0;k4;k+)coutsik ;coutendl;break;void average(float s54)float t;int i,j;for (j=0;j4;j+)t=0;for (i=0;i5;i+)t+=sij;t=t/5;cout第j门课程平均成绩为:tendl;实验八 指针与引用(1)【实验类型】验证性 【实验要求】必做【实验目的】1、掌握指针的概念、指针变量的定义、使用以及指针的运算。2、学会使用数组的指

34、针和指向数组的指针变量。3、掌握指针数组和数组指针的概念及其定义。4、掌握多级指针的概念及其使用方法。5、掌握new、delete运算符的使用形式。【实验内容】1、输入两个字符串,连接成一个字符串,并输出。用指针实现。【指导】定义两个字符数组a,b,先将下标定位到a的末尾0处,再将b的元素赋值给a的对应元素。注意:别忘了添加字符串结束标志0。2、请用户输入10首歌名,歌名存入一字符指针数组,然后分别按原序、字母序和字母逆序(从Z到A)显示这些歌名。【参考程序】1、#include void mystrcat(char *str1,char *str2);void main()char str1

35、20;char str210;coutinput two stringsstr1;cinstr2;mystrcat(str1,str2);coutthe result is :str1endl;void mystrcat(char *str1,char *str2)while (*str1 !=0)str1+;while (*str2!=0)*str1=*str2;str1+,str2+;*str1=0;2、#include #include void print(char * name,int len);void sortasc(char * name, int len);void sort

36、desc(char * name,int len);void main()char * song10;char temp100;int i,len;coutInput 10 songnamesendl;for (i=0;itemp;len=strlen(temp);songi=new charlen+1;strcpy(songi,temp);coutthe 10 songnames is:endl;print(song,10);coutthe lettersort is :endl;sortasc(song,10);print(song,10);coutthe reverse lettersort is :endl;sortdesc(song,10);print(song,10);void print(char * n

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号