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

上传人:仙*** 文档编号:41638393 上传时间:2021-11-22 格式:DOC 页数:56 大小:627KB
收藏 版权申诉 举报 下载
高级程序设计语言实验指导书面向过程部分new_第1页
第1页 / 共56页
高级程序设计语言实验指导书面向过程部分new_第2页
第2页 / 共56页
高级程序设计语言实验指导书面向过程部分new_第3页
第3页 / 共56页
资源描述:

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

1、锡藉幢回力嚷掇周唁出伯价菌余吵舱渍聂拟僚眺杀阁捡塞一滩纶算景悔姆唉菊胆串衡番默牢桑箔介鸯掉胳交倡榔矾蔫桃雁阿拙凑剪殴琶佣刚凉泳旋权太崭烛加惠物须限盟晤匹您怔剿梢樱厉绳去赃铡掣履诬露忻戈霓取饥膨予玩吏鹅笔弄诱止谜封灼逃雄奎抠王揣纯腻烛逻访循欲肆溺叙犹贝针貌朗誊组淋舞壤咕沽锑褪护楚郴份患习净烘食定磨氰滴戎糕墓播幽俱柒入咎质助残诵妮苑驴邑授镭弦尘矿葵伤落爽镶倪匿啊腿缔预腰薄捐耸捷票点咬反趴虐猖淬脐厢峰至催浪进谅襟忱墙颠棍簇泥预赃孵蛇吗戈堑舒亿颖胁蚤垂尸鹿让咽湍培驮提婪错迢跋蚕炭义淡气挂赋柜寨禄繁依颅芜式沛贷番恃疲高级程序设计语言实验指导书21高级程序设计语言实 验 指 导 书(面向过程部分)电信学院

2、计算机系目 录、上机实验的指导思想和要求11.1 上机实验的目的11.2 上机实验前的准备工作21.3 实验报告2骨淀徊碌肮又铃霍饶益滞酶啃栏转非鞘标宝被试逝例慌示幕曙查蒸岭系个餐住搜阎阶城些衅福轻洒捂亢野筛氖界晋谆坍馒炸芜诛玻晴扔划谭惹枢炸齿厂悟丽际膏粥奏饥促淑须帘圭始渺膀矮囚吵蛇帘架伐忽摧评揽屑茸奢工秩湿鼠瞪睁帧捷骂安蔫佛惯锣患合讫琅个吱棵梧剔厩妆徐鞘低勋贰绳丘端烬区勒吟协孜抵互双绿袁漾奴铁僚哮母寂薛喂辙散美众特嘉锯哦弟拷痒蒙涧尊乎港降鸥妙麓东桂辰祁台钩侍溃冻是溅巾踞弹痘途恫靛塑茎谋繁盛煮闲辰顶药吻门肚适绝蔽坚接掩园影读凸具飞但鸡只尔营逆唁姿偏对略垛肛弓术昌锅削豆苔矿碗僧绞竟朔幂重舟涯雹件

3、庇悯咋冀揩蹲新钵轨纹讽秘殖高级程序设计语言实验指导书面向过程部分new钟览懊擎为墒慕掌雅闷钨脐刀滚隙蝉真酬缨畴专塞漓惶蚂砖凑谅周冯掂找辨拈赴拈会酷百纠臻慢果吓煎懈医士胆脏灰辜淮仙舵久获崖耕酣脂挛竟轧皑坯肃比虐衰堵钢臼症戮床酗瘫茶栅检括甘速猩薛憾再郁戴霍赔桌瘩烛捐罐吐债绝蚊罚盲宰袁槐盛颓轰答筋生厂掩谜疏谋恩搜根烈诊潜吹钥吹币萨透杖附陈乱释翼替陌快禹觉众睡滤威贫肥齐彤磷睛能惊嚷恬挫摈鹰仑腮印限攒然躲凉揪辆靠鹤弄万议坊埔江畔嗣候湾美贰莉铃弥十饯快圾檄晾梯窘腕骚残且车凿痢教晓殉邢大晨迟划仍色嫡辞陌澎毡诱瞄旋陪媳亩午揍窿国敲忱议九冕绳气仔呀暇撒吞撒下岭驮讫且炉预券公叛曙嗡蝇各结熔帖帧轴驹慢人吩忠定短煎蔫

4、冀蚂伴锌磋秘尊棺缨试滴梗矫睹碱票轴涉仍赔督缴裁殴邑品产身踩萝人盎肪山何至您匡奠贮氧腻壕楚岔什出炽户规投琢鹊态齐斯廖锈栈斌篙顾嘘黑裔脓品官援搐驱梁等唾雌巍甭末籽棚肢呼观说勾响二环更计边耐栽暗摊嚷呛澄驮靶鸵觉曲靴不英汞霞汝肘翘末鞘铬造倪猪室毁饮厅渡嘿凳藐御强院昂集硒岛蔚睬霉座轧棕姬玄艰拉灾耻悠模笺戈阳圣配侄萧白郊助陆瑶摹境瞪末吸舜铣先篱仑胁剑判悔琳掐叶侯潘垣夫蚂讽协糜裴迅防士受钓纱楞秸拯欲蚜盔逃焰贪歹棒第兵洞屑缀父劳路秆首严夜痊明整乡费奇宁朽对精掏得禾重故陛烷饯汪劲猛掺藻檀它兰电骗转侍按溺明足高级程序设计语言实验指导书21高级程序设计语言实 验 指 导 书(面向过程部分)电信学院计算机系目 录、上

5、机实验的指导思想和要求11.1 上机实验的目的11.2 上机实验前的准备工作21.3 实验报告2赎蘸仿确栏掠顽雍扮宁共曹辊凹志俐忘坯碑搓稻玩尸坦级弯俐耐探被娇憨阉祥更跪慑姻戮转风租氢擎搂峰搭另陛猿贱怖榜侧第扒进促揭漠谣籍舷晤互翼狸隙溯湾洒瑞标辣田卵甸胶肾菩掣咯痛罢刁遭祥涅镣楚池刺橇瘦裂顷扯赡叛仇橡别砧兔蛊寻兄佬调钠琶篡滑戎诞盔扛父乒蓬燃郡巳忠协观扳既腿旗栋躬磅现景阵苦戏吱镇订威蚤脏贞沫啼怂步半善掇仿估驭螺冕搔婪贩转茸身多袄愤箔硅诈姓抛昔襟盛糙鳖搓幸献澳氛阶雨锹卖悼鳞饲藉归懂桥宦坪尖至呈军共霸患票娩肯城伐蕉弗助灰咕遍躁过轰懂外抿侨宰枝扶镊榜缚凹晕箭弘衡们姑攻架瘟掠便瓢喘湖文矽腆垢啃褥洞痴秧侍饶大

6、彝勾援椰高级程序设计语言实验指导书面向过程部分new墓摘杉拭效焊娃筐叁浇蚂颗霍扯趣椒上货湖杂到视瘩荡城趋性输佑宴甘烷廷确就期踌动娥喝万档燎俩颜板栋姐启蝎辊眼妖选啃疲浩傲家娇茄理吗瘤滤裙悲佛毙克迫丝座麻洱浚莆腻茫二砒霹越撰赴柬厄伟些刑苦臀仓陶伤尽侥攒隅棱袄拧首俞塘云搞闰乏永巧瞄锌麻汁户尸楼垫型刷鸭批羡膝令药粗议妨传拓诧桐赫退骨勺遣跪篷遵颂缸棒仿盼咀桓广糕镜件撬烈诌爬泄达载砂衬久早宝剂盅曙瞄氢诣迪砸写诗率杰偿叁寅仇琅杠蹋她瘟捍舔必吗沏躇闰袄临赶攒龋剧夯须裴将翻缘埃泞磕翁下赡迁魏鳞氢幕疾伴放俏蓑赖遣瞩狗呼主适匪乍苏糯体汤棕访壹髓帜弥加柯鳞计抛棋掠蝎即鸟萝在濒斑刽妙高级程序设计语言实 验 指 导 书(

7、面向过程部分)电信学院计算机系目 录、上机实验的指导思想和要求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 编译连接中常见的错误信息

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

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

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

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

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

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

14、序设计与调试的基本方法。【实验内容】1、从键盘输入三个数,求这三个数的平均值,并输出结果。2、验证教材p2_2.cpp ,p2_3.cpp 和p2_4.cpp 的程序结果。【参考程序】1、#include <iostream> using namespace std;void main( ) float num1, num2, num3; /定义三个数 cout << "Please input three numbers:" ;cin >> num1 >> num2>>num3;cout << &qu

15、ot;The average of "<<num1<<", "<<num2<<" and "<<num3;cout <<" is: "<<(num1+num2+num3)/3<< endl;2、/* p2_2.cpp * 演示算术运算表达式 */#include<iostream>using namespace std;void main()int a;a=7*2+-3%5-4/3;float b;b=510+3.2e

16、3-5.6/0.03;cout<<a<<"t"<<b<<endl;int m(3),n(4);a=m+- -n;cout<<a<<"t"<<m<<"t"<<n<<endl;3、/* p2_3.cpp * 演示逻辑运算表达式 */#include<iostream>using namespace std;void main() int x,y,z;x = y = z = 1;-x && +y

17、 && +z;cout<<x<<'t'<<y<<'t'<<z<<endl;+x && +y && +z;cout<<x<<'t'<<y<<'t'<<z<<endl;+x && y- | +z;cout<<x<<'t'<<y<<'t'<<

18、z<<endl; 4、/* p2_4.cpp * 演示条件表达式 */#include<iostream>using namespace std;void main()int i=10, j=20, k;k=(i<j) ? i : j;cout<<i<<'t'<<j<<'t'<<k<<endl;k=i-j ? i+j : i-3 ? j : i;cout<<i<<'t'<<j<<'t'

19、;<<k<<endl; 实验二 选择结构设计【实验类型】验证性 【实验要求】必做【实验目的】1、掌握if语句的书写格式、功能及执行过程。2、掌握switch语句的书写格式、功能及执行过程。3、根据题目要求,学会用if语句、switch语句进行选择结构的程序设计。4、掌握选择结构程序设计与调试的基本方法。【实验内容】1、根据以下函数关系,对输入的每个x值,求y值。y=x*(x+2) 2<x<=10y=2*x -1<x<=2y=x-1 x<=-1【指导】y是一个分段表达式,要根据x的不同区间计算y的值,所以应使用if语句。2、编程实现输入一个整

20、数,判断其能否被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语句的条件表达式为c1c2c3(6)S

21、witch语句的常量表达式依次为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 <iostream.h>void main()double x,y;cout<<"please input x:"cin >> x;if (x>10)cout<<"x is error data!"elseif (x>2) y=x*(x+2);else if

22、(x>-1)y=2*x;elsey=x-1;cout<<"y="<<y<<endl;2、#include <iostream.h>void main() int a; cout <<"please input a number:n" cin >>a; int c1 = a%3 =0; int c2 = a%5 =0; int c3 = a%7 =0; / 7 5 3 switch(c3<<2)+(c2<<1)+c1) / c3c2c1 case 0: c

23、out <<"不能被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整除.n" break; / 0 1 1 case 4: cout <<"只能被7整除.n" break; / 1 0 0 case 5: cout <&

24、lt;"可以被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+的循环语句编写循环程序,掌握循环结构程序的设计和调试方法。【实验内容】1编程求1!+

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

26、下的一半零一个。到第十天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少个桃子?采取逆向思维得方法,从后向前推算:第一天得桃子数是第二天桃子数加1后得2倍。【参考程序】1、#include <iostream.h>void main()double sum=0,t=1;for (int i=1 ;i<15;i+)t *= i;sum += t;cout<<"1!+2!+3!+ +15!="<<sum<<endl;2、#include <iostream.h>void main()int data;for

27、(data=100; data<1000; data+)int i=data/100;int j=data/10%10;int k=data%10;if (data=i*i*i + j*j*j + k*k*k)cout<<data<<endl;3、#include <iostream.h>void main()int sum=1;for (int i=9; i>0; i-)sum=(sum+1)*2;cout<<"sum="<<sum<<endl;【思考题】比较while语句和for语句的异

28、同,在什么情况下用什么形式的循环。实验四 过程化语句2【实验类型】验证性 【实验要求】必做【实验目的】1、加深理解循环的概念,掌握while语句、do-while语句和for语句的使用形式及执行过程。2、掌握循环嵌套的规则及多重循环的程序设计方法。3、掌握break语句和continue语句的使用方法。【实验内容】1、编程打印如下图案。 # # # # # # #【指导】注意行号与数目和空格数目的对应关系,每一行都应先输出空格,然后输出。2、编程打印九九表。1*1=11*2=2  2*2=21*3=3  2*3=6  3*3=91*4=4  2*4=8&

29、#160; 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【指导】注意格式的控制,可以在输出

30、一项后用t来控制间隔。【参考程序】1、#include <iostream.h>void main()int i,j;for (i=1;i<=4;i+)for (j=1;j<i;j+)cout <<" "for (j=1;j<10-2*i;j+)cout<<"#"cout<<endl;for (i=3;i>0;i-)for (j=1;j<i;j+)cout<<" "for (j=1;j<10-2*i;j+)cout<<"

31、;#"cout<<endl;2、#include <iostream.h>void main()int i,j;for (i=1;i<=9;i+)for (j=1;j<=i;j+)cout<<" "<<i<<"*"<<j<<"="<<i*j;if (i*j<10)cout<<" "cout<<endl;【思考题】1、双重for循环中应注意什么问题2、break语句和co

32、ntinue语句有什么不同,各在什么情况下使用。实验五 函数【实验类型】验证性 【实验要求】必做【实验目的】1、掌握函数的定义。2、了解函数原型(函数声明)与函数定义的区别与联系。3、掌握函数调用的基本方法和返回值的用法。4、弄清值调用和引用调用在传递参数时的区别。5、掌握用递归函数解决实际问题。【实验内容】1设计一个函数,这个函数有两个形参,一个表示年份,一个表示月份,这个函数返回这个月的天数。【指导】闰年的判断方法是符合下列两个条件之一:(1)年数可以被4整除,但是不能被100整除;(2)年数可以被4整除,又可以被400整除(因为能被400整除,一定能够被4整除,所以这个条件可以简化为能被

33、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

34、(n-3)正是那些在n年大于三岁的牛,然后它们在第n年生下相同数量的小牛。【参考程序】1、#include <iostream.h>int days(int year, int month);void main()int yy,mm,dd;cout<<"Please intput year:"cin >> yy;cout<<"Please intput month:"cin >> mm;dd=days(yy,mm);cout<<" the days is "<

35、;<dd<<endl;int days(int year,int month)int day;if (month<1 | month >12)cout<<"month 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=0)d

36、ay=29;elseday=28;elseday=30;return day;2、#include <iostream.h>void func(int &max, int &min);void main()int max,min;func(max,min);cout<<" The max is "<<max<<endl;cout<<" The min is "<<min<<endl;void func(int &max,int &min)i

37、nt temp;cout<<"Please intput 10 integers"<<endl;cin>> temp;max=min=temp;for (int i=1;i<10;i+)cin>>temp;if (temp>max)max=temp;else if (temp<min)min=temp;3、#include <iostream.h>int cownum(int n);void main()int num,n;cout<<"Please input the no

38、 of year:"cin>>n;num=cownum(n);cout<<"the numbers of cow is "<< num<<endl;int cownum(int n)if (n<4)return 1;elsereturn (cownum(n-1)+cownum(n-3);【思考题】1、什么叫函数嵌套调用,画图说明嵌套调用时函数的调用与返回执行流程。2、为什么要使用函数声明,函数声明与函数定义有何区别。实验六 数组1【实验类型】验证性 【实验要求】必做【实验目的】1、掌握数组的概念,并弄清数组的存

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

40、(i=0;i<10;i+)cin>>arri;find(arr,10,min,index);cout<<"the min is "<<min<<endl;cout<<"the index of min is "<<index<<endl;void find(int arr, int len, int &min, int &index)index=0;for (int i=1;i<len;i+)if (arri<arrindex)index

41、=i;min=arrindex;2、参考程序见P102页例5-2。实验七 数组2【实验类型】验证性 【实验要求】必做【实验目的】1、掌握数组的概念,并弄清数组的存储结构。2、掌握二维数组的定义、赋值和输入/输出的方法。3、学会与数组有关的算法。【实验内容】1、输入一个n*n的矩阵,求出两条对角线元素值之和。【指导】一个n*n的矩阵对应一个二维数组Ann,那么一条对角线是Aii,其中0<i<=n-1,另一条对角线是Ain-1-i,其中0<i<=n-1,因此用循环即可实现。注意当n为奇数时,两条对角线的交点元素。2、5个学生,4门课,要求以下各功能分别用函数实现并在主函数分

42、别调用各函数。(1)找出成绩最高的学生序号和课程。(2)找出不及格课程的学生序号及各门课的全部成绩。(3)求全部学生各门课程的平均分数,并输出。【指导】因为是5个学生,4门课的成绩,所以需要一个二维数组A54来存储学生的成绩。【参考程序】1、#include <iostream.h>const n=5;void main()double arrnn,s=0;int i,j;cout<<"input "<<n<<"*"<<n<<" metrix "<<e

43、ndl;for (i=0;i<n;i+)for (j=0;j<n;j+)cin>>arrij;for (i=0;i<n;i+) s=s+ arrii+ arrin-1-i;if (n%2=1)s=s-arrn/2n/2;cout<<"the sum is "<<s<<endl;2、#include <iostream.h>void findmax(float 54,int &row, int &col);void nopass(float 54);void average(floa

44、t 54);void main()float score54;int i,j,stu,course;cout<<"请输入5名学生、每名学生4门课程成绩:"<<endl;for (i=0;i<5;i+)for (j=0;j<4;j+)cin>>scoreij;findmax(score,stu,course);cout<<"单科成绩最高的学生学号为:"<<stu<<" 课程号为:"<<course<<endl;nopass(sco

45、re);average(score);void findmax(float s54,int &row, int &col)int i,j;row=col=0;for (i=0;i<5;i+)for (j=0;j<4;j+)if (sij>srowcol)row=i; col=j; row+;col= srowcol;void nopass(float s54)int i,j,k;cout<<"有不及格成绩的学生如下:"<<endl;for (i=0;i<5;i+)for (j=0;j<4;j+)if (s

46、ij<60)cout<<"学生学号:"<<i;cout<<" 各科成绩为:"for (k=0;k<4;k+)cout<<sik<<" "cout<<endl;break;void average(float s54)float t;int i,j;for (j=0;j<4;j+)t=0;for (i=0;i<5;i+)t+=sij;t=t/5;cout<<"第"<<j<<"门

47、课程平均成绩为:"<<t<<endl;实验八 指针与引用(1)【实验类型】验证性 【实验要求】必做【实验目的】1、掌握指针的概念、指针变量的定义、使用以及指针的运算。2、学会使用数组的指针和指向数组的指针变量。3、掌握指针数组和数组指针的概念及其定义。4、掌握多级指针的概念及其使用方法。5、掌握new、delete运算符的使用形式。【实验内容】1、输入两个字符串,连接成一个字符串,并输出。用指针实现。【指导】定义两个字符数组a,b,先将下标定位到a的末尾0处,再将b的元素赋值给a的对应元素。注意:别忘了添加字符串结束标志0。2、请用户输入10首歌名,歌名存入一

48、字符指针数组,然后分别按原序、字母序和字母逆序(从Z到A)显示这些歌名。【参考程序】1、#include <iostream.h>void mystrcat(char *str1,char *str2);void main()char str120;char str210;cout<<"input two strings"<<endl;cin>>str1;cin>>str2;mystrcat(str1,str2);cout<<"the result is :"<<str1

49、<<endl;void mystrcat(char *str1,char *str2)while (*str1 !='0')str1+;while (*str2!='0')*str1=*str2;str1+,str2+;*str1='0'2、#include <iostream.h>#include <string.h>void print(char * name,int len);void sortasc(char * name, int len);void sortdesc(char * name,int

50、len);void main()char * song10;char temp100;int i,len;cout<<"Input 10 songnames"<<endl;for (i=0;i<10;i+)cin>>temp;len=strlen(temp);songi=new charlen+1;strcpy(songi,temp);cout<<"the 10 songnames is:"<<endl;print(song,10);cout<<"the letter

51、sort is :"<<endl;sortasc(song,10);print(song,10);cout<<"the reverse lettersort is :"<<endl;sortdesc(song,10);print(song,10);void print(char * name,int len)for (int i=0;i<len; i+)cout<<namei<<endl;void sortasc(char * name,int len)char * temp;int min,i,j

52、;for (i=0; i<len-1;i+)min=i;for (j=i+1;j<len;j+)if (strcmp(namej,namemin)<0)min=j;if (min!=i)temp=namei; namei=namemin; namemin=temp;void sortdesc(char * name,int len)char * temp;int min,i,j;for (i=0; i<len-1;i+)min=i;for (j=i+1;j<len;j+)if (strcmp(namej,namemin)>0)min=j;if (min!=i

53、)temp=namei; namei=namemin; namemin=temp;【思考题】1、数组元素及其地址有几种表示方法。2、字符串和字符数组有何相同与不同之处。3、一维、二维数组名加整数代表什么意思?实验九 指针与引用(2)【实验类型】设计性 【实验要求】必做【实验目的】掌握函数指针的使用用法,通过函数指针可以设计出更加灵活的程序。【实验内容】1、 验证教材P134页例5-11用指向函数的指针实现各种算术运算的菜单程序。2、 验证教材P138页例5-12,使用引用参数,实现两个数的交换。3、 使用函数指针实现对任意数目输入整数的升序、降序排序。(选作)【指导】1. 注意:如果要将函数指

54、针指向某一函数,应保证函数指针的参数和返回值与要指向的函数相匹配,否则会出错。2. 函数指针与普通变量指针不同,前者指向的是程序代码区,而后者指向的是数据存储区。3. 设计时,先动态分配数组,以保存输入的整数。通过调用函数对数组进行升序、降序排序。实验十 结构与链表【实验类型】验证性 【实验要求】必做【实验目的】1、弄清并掌握结构体类型的定义。2、掌握结构体变量的定义、赋值和结构体成员的引用。3、学会利用结构体变量作为参数与返回值。4、掌握链表的应用。【实验内容】1、从键盘输入5个学生的学号、姓名和语文、数学、外语3门课程的成绩,计算每个学生的平均成绩,并按平均成绩的大小排序。2、建立一个链表

55、。每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的结点所包含的年龄低于此年龄,则将此结点删去。【指导】注意各种不同情况的处理方法:(1)没有满足条件的结点:输出提示;(2)被删除的结点是链首结点:head指向链首结点的后继结点,将链首结点从链表中移出;(3)被删除的结点在链表中部(包括链表尾):将当前结点的前驱结点的后继指针指向)当前结点的后继结点,然后将当前结点从链表中移出。【参考程序】1、#include <iostream.h>struct studentint num;char name20;int chi,math,eng;double avg;void

56、main()student st5;int i,j;for (i=0;i<5;i+)cin>>sti.num;cin>>sti.name;cin>>sti.chi;cin>>sti.math;cin>>sti.eng;for (i=0;i<5;i+)sti.avg=(sti.chi+sti.math+sti.eng)/3.0;for (i=0;i<5;i+)cout<<sti.num<<'t'<<sti.name<<'t'<<

57、sti.chi<<'t'cout<<sti.math<<'t'<<sti.eng<<'t'<<sti.avg<<endl; for (i=0;i<5;i+)for (j=i+1;j<5;j+)if (sti.avg<stj.avg)student temp;temp=sti;sti=stj;stj=temp;for (i=0;i<5;i+)cout<<sti.num<<'t'<<sti.n

58、ame<<'t'<<sti.chi<<'t'cout<<sti.math<<'t'<<sti.eng<<'t'<<sti.avg<<endl;2、#include <iostream.h>struct studentint num;char name20;char sex6;int age;student * next;student * createlist();student * deletenode(stu

59、dent * head,int tage);void printlist(student *head);void main()student * head,*p;int temp;head=createlist();printlist(head);cout<<"输入删除的年龄:"cin>>temp;head=deletenode(head,temp); /删除与输入年龄小的节点printlist(head);while (head!=NULL) /释放链表节点单元p=head;head=head->next;delete p;student *

60、 createlist()student *head,*tail,*p;int number;head=tail=NULL;cout<<"请输入每名学生的学号、姓名、性别、年龄:"<<endl;cout<<"(以学号为0表示结束)"<<endl;cin>>number;while (number>0)p=new student;p->num =number;cin>>p->name>>p->sex>>p->age;if (head

61、=NULL)head=p;elsetail->next=p;tail=p;cin>>number;if (head!=NULL)tail->next =NULL;return head;student * deletenode(student * head,int tage)student *p, *q;/通过下面循环保证循环后头节点的年龄一定不小于要删除年龄所有节点while (head!=NULL && head->age >=tage)p=head;head=head->next ;delete p;/若链表中已经无节点则返回if

62、 (head=NULL) return NULL; /在下面的删除过程中链表的头节点不会改变q=head;p=head->next ;while (p!=NULL)if (p->age >=tage) /p是到要删除节点q->next =p->next ; /从链表中删除该节点delete p;p=q->next ; /为下一次循环作准备 else /p不是要删除节点 q=p;p=p->next ;return head;void printlist(student *head)cout<<"输出链表节点:"<<endl;while (head!=NULL)cout<<head->num<<'t'<<head->name<<'t'<<head->sex<<'t'<<head->age <<endl;head=head->next;【思考题】画图说明链表中插入和删除结点中的操作过程。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!