程序设计基础实验指导书C++版.docx
《程序设计基础实验指导书C++版.docx》由会员分享,可在线阅读,更多相关《程序设计基础实验指导书C++版.docx(48页珍藏版)》请在冰点文库上搜索。
程序设计基础实验指导书C++版
程序设计基础实验指导书
广州大学计算机科学与教育软件学院
程序设计基础实验课程组
二0一0年九月
实验1简单的C程序设计、数据类型、运算符与表达式
2
实验2顺序结构和选择结构设计程序设计6
实验3循环结构程序设计7
实验4数组与字符串11
实验5函数16
实验6指针21
实验7结构体与共同体24
实验8文件(多文件程序结构)28
实验9程序设计基础应用实验30
一、实验目的及要求
1.了解在集成开发环境下程序的编辑、编译、连接、运行与调试;
2.掌握C语言的基本数据类型、算术运算符、赋值运算符和逗号运算符及表达式;
3.输入并编译C++程序。
二、实验设备与平台
1.实验设备:
计算机;
2.平台:
WindowsXP操作系统,VisualC++6.0。
三、实验内容与步骤
1.启动VisualC++6.0,认识开发环境界面;
图1_1启动VisualC界面
2.建立新文件:
选择File的new项,在窗口new中选C++SourecFile(C++原文件),并输入文件名(扩展名为.cpp由系统给出)和该文件将要保存的位置(即存盘路径,一般自己先建立一个常用文件夹,将拟建立的文件保存在该文件夹),再按OK按钮。
图1_2建立C++原文件
3.输入运行程序代码:
上述步骤后出现编辑版面,这时可以输入所要运行的程序代码。
图1_3输入拟运行程序代码
4.编译(将程序文本转为机器能识别的代码文件):
选Build菜单中的Compile项,若程序出错在编译中系统会给出提示信息,方便用户进行修改。
5.运行:
选Build菜单中的Execute项,运行程序,再根据程序提示输入数据,系统会给出结果。
图1_4程序运行的结果
6.有关说明:
1)运行程序时系统会产生.exe文件,同时执行.exe文件。
2)对VC++的每一菜单项,都有一个相应的图标,可按图标快速执行。
3)程序运行完后,可按File菜单的CloseWorkspace关闭工作区,再退出VC++系统。
4)运行完一程序后,若需再打开另一程序,必须先关闭原有程序的工作区,即做3)。
5)运行已有存盘的旧程序,可选File菜单中的open项,再选取执行指定文件夹中的.cpp程序文件即可。
实验1_1:
输入并运行以下程序,分析其运行结果。
//sy1_1.cpp
#include
usingnamespacestd;
intmain()
{charc1,c2;
c1=97;c2=98;
cout<return0;}(运行上面程序)在此基础上1加上一个cout语句并运行:cout<②再将第5行改为:intc1,c2;并运行两种输出格式实验1_2:输入并运行以下程序,分析其运行结果。//sy1_2.cpp#includeusingnamespacestd;intmain(){inti,j,m,n;i=8;j=10;m=++i;n=j++;cout<<"i="<return0;}运行。分别作以下改动并运行:将第8行改为:m=i++;n=--j将第7行改为:inti=8,j=10,m=0,n=0将第8行改为:m+=i++;n-=--j分析分别修改以后的变化情况。实验1_3:输入并运行以下程序,并回答思考题//sy1_3.cpp#includeusingnamespacestd;intmain(){unsignedshorta;shortintb=-1;a=b;cout<return0;}思考题:运行结果是什么?依据是什么?因为-1的补码形式为1111111111111111(即全部16个二进制位均为1),将它传送给a,而a是无符号型变量,16个位全1是十进制的65535。如果b为正值,且在0~32767之间,则赋值后数值不变。思考问题:1.输入一个字符,判别它是否为大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符,上机编写并通过程序。2.输入3个a,b,c,求出最大数,上机编写并通过程序。3:#include“filename”与#include的区别?实验相关知识1.程序的编译、连接、运行在“编译”菜单中,“Compile”命令可对源程序进行编译,编译通过则生成扩展名为.obj的目标文件;“Build”命令可对目标文件连接生成“可执行文件”,此命令也可将源程序进行编译再连接生成“可执行文件”;“Execute”命令可运行“可执行文件”显示结果,此命令也可将源程序进行编译再连接生成“可执行文件”并运行显示结果。编译或连接时的信息都会显示在输出窗口,若出现错误,则标识出错文件名,发生错误的行号及错误的原因等。错误信息中的警告信息不妨碍可执行文件的形成,但最好进行修改。2.程序的调试在VisualC++6.0环境下集成了调试器,可以利用Build菜单Debug级联菜单中的命令或快捷键来控制调试器中程序的运行情况。通过设置断点,观察断点的各种信息,单步跟踪有疑问的程序段,进而修改源程序。DeveloperStudio中的工程可以产生两种可执行代码,分别称为调试版本和发布版本。调试版本是在开发过程中使用的,用于检测程序中的错误;发布版本是面向用户的。高度版本体积较大,而且速度通常要比发布版本慢,发布版本不能用调试器进行调试。实验2顺序结构和选择结构设计程序设计一、实验目的及要求:1.学会正确使用逻辑运算符和逻辑表达式;2.熟练掌握if语句和switch语句;3.掌握在程序设计中灵活使用顺序结构和选择结构。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤:先画程序流程图,再编写程序,解下列问题,然后上机调试运行程序。实验2_1:有一个函数xx<=0Y=5x-101<=x<1010x-20x>=10用cin函数输入x的值(分别为x<=0,1<=x<=10,x>=10),输出y的值。说明:这个题目主要是练习学生对if…eles语句的使用。实验2_2:给出一个不多于5位的正整数,要求:1)求出它是几位数;2)分别输出每一位数;3)按逆序输出各位数字,例如原数为5631,应输出为1365。说明:这个题目主要是练习学生对if…elsefif嵌套语句,switch…case语句的使用。思考:如果不使用switch…case语句,完全使用if…elseif来实现,那程序应该怎么改动呢?实验2_3:输入四个整数,要求按大小顺序输出。上机编写并通过程序。说明:这个题目主要是练习学生对两个数的交换以及多个数的排序处理。思考:程序中需要两个数的比较是多少次,如果有5个数,那比较的次数又是多少次呢? 实验3循环结构程序设计一、实验目的及要求1.掌握while、for、do…while循环结构的使用方法以及循环条件的使用;2.能够使用三种循环结构设计程序、分析程序并解决实际问题;3.掌握三种循环结构的差异和不同,能灵活地实现三种结构间的转换;4.正确编写具有循环结构的C语言程序。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤1.程序实验验证(1)求=1+2+···+100之和,上机验证程序运算结果。方法一(实验3_1):用while语句编程。方法二(实验3_2):用do-while语句,求1到100的和。方法三(实验3_3):用for语句编程。上机编写并通过程序,并分析三种编程方法的特点。几种循环结构的比较分析:for语句适合于循环次数是预先知道的,且步长固定;而while和do语句的循环次数则依赖于循环体的动作。for和while语句是先判断后执行,所以循环体可能一次也不执行;do语句是先执行后判断,所以循环体至少执行一次。循环体可以是空语句,也是几个语句复合。三种循环语句可以相互转化,但一般来说,while语句的适应性最广,应首先考虑。但在特别的问题中,选择for语句和do语句会更自然、更方便。(2)实验3_4:编写程序找出3位数中(100—200间)各位数之和能被5整除的所有数,每行按5个数据显示在屏幕上。编写程序代码并上机验证程序运行结果。(3)编程求水仙花数。水仙花数是满足这样条件的3位数:3位数中各位数的立方和等于该3位数,上机运行程序并验证程序运行结果。2.程序实验分析(1)实验3_5:根据程序代码,分析下列程序所完成功能和相应输出结果,并思考下列问题。//sy3_5.cpp分析下列程序的运行结果行号程序代码1#include2usingnamespacestd;3voidmain()4{5inti,sum;6sum=0;7i=10;8while(i)9{sum=sum+i;10i=i-1;11}12cout<<"sum="<13}思考问题1:运行程序,分析程序的运行结果(sum=55),根据程序运行结果,思考程序中第8行的语句while(i)中的表达含义。思考问题2:试着将第8行中的语句修改为while(x!=0)再运行修改后的程序,并对运行结果与原程序运行结果进行比较分析。思考问题3:试着将第8行中的语句修改为while(!x==0)再运行修改后的程序,并对运行结果与上面两次运行结果进行比较分析。(2)分析下面程序:如果用下列语句来实现s=1+2+3+4+5的累加功能,请你分析、运行程序,找出程序中存在的错误并进行修改。行号程序代码1#include2usingnamespacestd;3voidmain()4{5inti,s=0;//累加变量初始化为06for(i=1,i<=5,i++);//实现1—5的累加7s=s+i;8cout<<“s=”<9}问题拓展:1)如果将原程序修改为用while语句来实现,请分析程序中存在的错误。行号程序代码1#include2usingnamespacestd;3voidmain()4{5inti,s=0;//累加变量初始化为06while(i<=5);7{8s=s+i;9}10cout<<“s=”<11}2)如果将原程序修改为用do…while语句来实现,请分析程序中存在的错误。行号程序代码1#include2usingnamespacestd;3voidmain()4{5inti=1,s=0;6do7{8s=s+i;9i++;10}while(++i<=100)11cout<<“s=”<12} 实验4数组与字符串一、实验目的及要求1.了解数组与数学矩阵的关系;2.掌握数组的定义、引用与初始化;3.理解二维数组数据的存储顺序;4.理解并掌握冒泡排序法、选择排序法;5.掌握字符数组与字符串的定义、引用;6.了解字符串处理函数的用法。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤1.排序算法排序算法有很多种,如冒泡排序、选择排序等。1)冒泡排序法:相邻元素比较大小并发生交换,使最大值(最小值)“浮出”到数组尽头:a0a1a2a3现以N元数组a[0]–a[N-1]由小到大排序为例,其算法执行步骤如下:第1步:找到a[0]–a[N-1]中的最大值元素浮动到a[N-1];第2步:找到a[0]–a[N-2]中的最大值元素浮动到a[N-2];第3步:找到a[0]–a[N-3]中的最大值元素浮动到a[N-3];…………第i步:找到a[0]–a[N-i]中的最大值元素浮动到a[N-i];…………第N-1步:找到a[0]–a[1]中的最大值元素浮动到a[1],且算法停止。2)选择排序法:仍以N元数组a[0]–a[N-1]由小到大排序为例,其算法执行步骤如下:第1步:找到a[0]–a[N-1]中的最小值元素与a[0]交换;第2步:找到a[1]–a[N-1]中的最小值元素与a[1]交换;第3步:找到a[2]–a[N-1]中的最小值元素与a[2]交换;…………第i步:找到a[i]–a[N-1]中的最小值元素与a[i]交换;…………第N-1步:找到a[N-2]–a[N-1]中的最小值元素与a[N-2],且算法停止。注意:比较冒泡排序法与选择排序法的差异。2.实验4_1:用选择法排序程序(升序程序)//用选择法排序程序(升序排序)#includeusingnamespacestd;#defineM10voidmain(){inta[M],i,j,min,temp;printf("请输入排序数据:\n");for(i=0;icin>>a[i];printf("排序前数列:\n");for(i=0;i{cout<}for(i=0;i{min=i;for(j=i+1;jif(a[j]min=j;temp=a[i];a[i]=a[min];a[min]=temp;}printf("\n排序后的数列:\n");for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,任意输入10个整数,察看并分析程序执行结果;2)运行程序,输入多于10个的整数,察看并分析程序执行结果;3)运行程序,输入一组升序排列的有序整数,察看并分析程序执行结果;4)运行程序,输入一组降序排列的有序整数,察看并分析程序执行结果。3.实验4_2:有序数列的数据插入问题编程分析,这个问题包括3个关键步骤:1)确定要插入数据的位置。这步操作使用的方法有很多种,如可以使用折半查找比较的方法,也可以使用顺序比较的方法;2)将自插入位置开始后的所有数据都向后移动一个位置,以便空出要插入数据的位置。若插入数据位置在原有所有数据之后,该步骤可省略,若插入数据位置在第一个数据之前,所有数据依次后移一个位置;3)将要插入的数据存储在该空位置上。参考程序://在升序排序的数组中插入数据程序,sy4_2.cpp#includeusingnamespacestd;#defineM10voidmain(){inta[M+1]={10,20,30,40,50,60,70,80,90,99};inti,n,p;cout<<"原始数列数据为:"<for(i=0;i{cout<}cout<"<cin>>n;a[M]=n;for(i=0;i<=M;i++)//确定要插入的位置pif(n<=a[i]){p=i;break;}for(i=M-1;i>=p;i--)//元素后移a[i+1]=a[i];a[p]=n;//插入数据cout<"<for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,输入一个比所有原始数据都小的数,察看并分析程序执行结果;2)运行程序,输入一个比所有原始数据都大的数,察看并分析程序执行结果;3)运行程序,输入一个介于原始数据最小数和最大数之间的整数,察看并分析程序执行结果;4)运行程序,输入原始数据中最小的数,察看并分析程序执行结果;5)运行程序,输入原始数据中最大的数,察看并分析程序执行结果;6)运行程序,输入原始数据中间的任何一个数,察看并分析程序执行结果。4.实验4_3:不用字符串处理函数将两个字符串连接,即将字符串b连接到字符串a的后面,变成字符串c。思考:如果将字符串S2连接到字符串S1的后面,且不需要第三个字符串变量作中间过度,如何实现?编程实现并测试。 实验5函数一、实验目的及要求主要叙述本节对应要掌握的主要概念和要解决的主要问题。1.掌握函数的定义方法,及函数调用的形式;2.掌握函数实参与形参的对应关系,“值传递”与“地址传递”的方式与区别;3.掌握函数的应用方法,熟悉函数的嵌套调用和递归调用的设计方法;4.了解全局变量、局部变量、动态变量及静态变量的概念和使用方法;5.综合应用顺序结构、选择结构和循环结构的设计方法设计函数程序。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤1.分析下面程序,给出运行结果。本题要求理解和掌握函数的定义和调用//实验5_1:sy5_1.cpp#includeusingnamespacestd;intf(inti){i=i*i-1;return(i);}voidmain(){inti;for(i=0;i<5;i++)cout<}程序运行结果:2.下面程序为选择排序,要求按如下步骤完成本题实验,理解和掌握函数参数的传递,理解函数的嵌套调用。//实验5_2:sy5_2.cpp#includeusingnamespacestd;#defineN10intmax(intx[],intn){inti,j;j=0;for(i=1;iif(x[i]>x[j])j=i;returnj;}voidsel_sort(intx[],intn){inti,j;for(i=n;i>1;i--){j=max(x,i);inttemp=x[j];x[j]=x[i-1];x[i-1]=temp;}}voidmain(){inta[N],i;for(i=0;icin>>a[i];sel_sort(a,N);for(i=0;icout<cout<}1)阅读程序,理解选择排序的思想2)上机编辑,调试程序3)用两组数据,给出程序运行结果,4)用单步执行,观察程序执行的流程5)画出流程图描述程序的实现6)问题:什么是函数的嵌套调用?3.函数的递归调用题目:采用递归方式实现二分查找{问题分析}二分查找算法可以描述为:对于一个已经从小到大排序的数据序列,用给定数据key与查找区间中央位置的数据比较,如果相等则表明查找成功;否则,如果key比中央位置的数据小,则在前半个区间用同样的方法继续查找;否则在后半个区间用同样的方法继续查找。因此,这是一个递归的过程,当查找区间的长度为0时,说明查找不成功。要求完成本题的填空并上机调试通过,理解递归调用的执行过程//实验5_3:sy5_3.cpp#includeusingnamespacestd;#defineNUM10intsearch(intvalue[],intkey,intlow,inthigh);voidmain(){intvalue[NUM],result,key;inti;cout<<"请输入十个从大到小的有序数列:"<for(i=0;icin>>value[i];/*输入从大到小的有序数列*/cout<<"请输入其中一个元素值:"<cin>>key;/*输入待查找的数值*/result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/if(result!=-1)cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
return0;
}
(运行上面程序)
在此基础上
1加上一个cout语句并运行:
cout<②再将第5行改为:intc1,c2;并运行两种输出格式实验1_2:输入并运行以下程序,分析其运行结果。//sy1_2.cpp#includeusingnamespacestd;intmain(){inti,j,m,n;i=8;j=10;m=++i;n=j++;cout<<"i="<return0;}运行。分别作以下改动并运行:将第8行改为:m=i++;n=--j将第7行改为:inti=8,j=10,m=0,n=0将第8行改为:m+=i++;n-=--j分析分别修改以后的变化情况。实验1_3:输入并运行以下程序,并回答思考题//sy1_3.cpp#includeusingnamespacestd;intmain(){unsignedshorta;shortintb=-1;a=b;cout<return0;}思考题:运行结果是什么?依据是什么?因为-1的补码形式为1111111111111111(即全部16个二进制位均为1),将它传送给a,而a是无符号型变量,16个位全1是十进制的65535。如果b为正值,且在0~32767之间,则赋值后数值不变。思考问题:1.输入一个字符,判别它是否为大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符,上机编写并通过程序。2.输入3个a,b,c,求出最大数,上机编写并通过程序。3:#include“filename”与#include的区别?实验相关知识1.程序的编译、连接、运行在“编译”菜单中,“Compile”命令可对源程序进行编译,编译通过则生成扩展名为.obj的目标文件;“Build”命令可对目标文件连接生成“可执行文件”,此命令也可将源程序进行编译再连接生成“可执行文件”;“Execute”命令可运行“可执行文件”显示结果,此命令也可将源程序进行编译再连接生成“可执行文件”并运行显示结果。编译或连接时的信息都会显示在输出窗口,若出现错误,则标识出错文件名,发生错误的行号及错误的原因等。错误信息中的警告信息不妨碍可执行文件的形成,但最好进行修改。2.程序的调试在VisualC++6.0环境下集成了调试器,可以利用Build菜单Debug级联菜单中的命令或快捷键来控制调试器中程序的运行情况。通过设置断点,观察断点的各种信息,单步跟踪有疑问的程序段,进而修改源程序。DeveloperStudio中的工程可以产生两种可执行代码,分别称为调试版本和发布版本。调试版本是在开发过程中使用的,用于检测程序中的错误;发布版本是面向用户的。高度版本体积较大,而且速度通常要比发布版本慢,发布版本不能用调试器进行调试。实验2顺序结构和选择结构设计程序设计一、实验目的及要求:1.学会正确使用逻辑运算符和逻辑表达式;2.熟练掌握if语句和switch语句;3.掌握在程序设计中灵活使用顺序结构和选择结构。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤:先画程序流程图,再编写程序,解下列问题,然后上机调试运行程序。实验2_1:有一个函数xx<=0Y=5x-101<=x<1010x-20x>=10用cin函数输入x的值(分别为x<=0,1<=x<=10,x>=10),输出y的值。说明:这个题目主要是练习学生对if…eles语句的使用。实验2_2:给出一个不多于5位的正整数,要求:1)求出它是几位数;2)分别输出每一位数;3)按逆序输出各位数字,例如原数为5631,应输出为1365。说明:这个题目主要是练习学生对if…elsefif嵌套语句,switch…case语句的使用。思考:如果不使用switch…case语句,完全使用if…elseif来实现,那程序应该怎么改动呢?实验2_3:输入四个整数,要求按大小顺序输出。上机编写并通过程序。说明:这个题目主要是练习学生对两个数的交换以及多个数的排序处理。思考:程序中需要两个数的比较是多少次,如果有5个数,那比较的次数又是多少次呢? 实验3循环结构程序设计一、实验目的及要求1.掌握while、for、do…while循环结构的使用方法以及循环条件的使用;2.能够使用三种循环结构设计程序、分析程序并解决实际问题;3.掌握三种循环结构的差异和不同,能灵活地实现三种结构间的转换;4.正确编写具有循环结构的C语言程序。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤1.程序实验验证(1)求=1+2+···+100之和,上机验证程序运算结果。方法一(实验3_1):用while语句编程。方法二(实验3_2):用do-while语句,求1到100的和。方法三(实验3_3):用for语句编程。上机编写并通过程序,并分析三种编程方法的特点。几种循环结构的比较分析:for语句适合于循环次数是预先知道的,且步长固定;而while和do语句的循环次数则依赖于循环体的动作。for和while语句是先判断后执行,所以循环体可能一次也不执行;do语句是先执行后判断,所以循环体至少执行一次。循环体可以是空语句,也是几个语句复合。三种循环语句可以相互转化,但一般来说,while语句的适应性最广,应首先考虑。但在特别的问题中,选择for语句和do语句会更自然、更方便。(2)实验3_4:编写程序找出3位数中(100—200间)各位数之和能被5整除的所有数,每行按5个数据显示在屏幕上。编写程序代码并上机验证程序运行结果。(3)编程求水仙花数。水仙花数是满足这样条件的3位数:3位数中各位数的立方和等于该3位数,上机运行程序并验证程序运行结果。2.程序实验分析(1)实验3_5:根据程序代码,分析下列程序所完成功能和相应输出结果,并思考下列问题。//sy3_5.cpp分析下列程序的运行结果行号程序代码1#include2usingnamespacestd;3voidmain()4{5inti,sum;6sum=0;7i=10;8while(i)9{sum=sum+i;10i=i-1;11}12cout<<"sum="<13}思考问题1:运行程序,分析程序的运行结果(sum=55),根据程序运行结果,思考程序中第8行的语句while(i)中的表达含义。思考问题2:试着将第8行中的语句修改为while(x!=0)再运行修改后的程序,并对运行结果与原程序运行结果进行比较分析。思考问题3:试着将第8行中的语句修改为while(!x==0)再运行修改后的程序,并对运行结果与上面两次运行结果进行比较分析。(2)分析下面程序:如果用下列语句来实现s=1+2+3+4+5的累加功能,请你分析、运行程序,找出程序中存在的错误并进行修改。行号程序代码1#include2usingnamespacestd;3voidmain()4{5inti,s=0;//累加变量初始化为06for(i=1,i<=5,i++);//实现1—5的累加7s=s+i;8cout<<“s=”<9}问题拓展:1)如果将原程序修改为用while语句来实现,请分析程序中存在的错误。行号程序代码1#include2usingnamespacestd;3voidmain()4{5inti,s=0;//累加变量初始化为06while(i<=5);7{8s=s+i;9}10cout<<“s=”<11}2)如果将原程序修改为用do…while语句来实现,请分析程序中存在的错误。行号程序代码1#include2usingnamespacestd;3voidmain()4{5inti=1,s=0;6do7{8s=s+i;9i++;10}while(++i<=100)11cout<<“s=”<12} 实验4数组与字符串一、实验目的及要求1.了解数组与数学矩阵的关系;2.掌握数组的定义、引用与初始化;3.理解二维数组数据的存储顺序;4.理解并掌握冒泡排序法、选择排序法;5.掌握字符数组与字符串的定义、引用;6.了解字符串处理函数的用法。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤1.排序算法排序算法有很多种,如冒泡排序、选择排序等。1)冒泡排序法:相邻元素比较大小并发生交换,使最大值(最小值)“浮出”到数组尽头:a0a1a2a3现以N元数组a[0]–a[N-1]由小到大排序为例,其算法执行步骤如下:第1步:找到a[0]–a[N-1]中的最大值元素浮动到a[N-1];第2步:找到a[0]–a[N-2]中的最大值元素浮动到a[N-2];第3步:找到a[0]–a[N-3]中的最大值元素浮动到a[N-3];…………第i步:找到a[0]–a[N-i]中的最大值元素浮动到a[N-i];…………第N-1步:找到a[0]–a[1]中的最大值元素浮动到a[1],且算法停止。2)选择排序法:仍以N元数组a[0]–a[N-1]由小到大排序为例,其算法执行步骤如下:第1步:找到a[0]–a[N-1]中的最小值元素与a[0]交换;第2步:找到a[1]–a[N-1]中的最小值元素与a[1]交换;第3步:找到a[2]–a[N-1]中的最小值元素与a[2]交换;…………第i步:找到a[i]–a[N-1]中的最小值元素与a[i]交换;…………第N-1步:找到a[N-2]–a[N-1]中的最小值元素与a[N-2],且算法停止。注意:比较冒泡排序法与选择排序法的差异。2.实验4_1:用选择法排序程序(升序程序)//用选择法排序程序(升序排序)#includeusingnamespacestd;#defineM10voidmain(){inta[M],i,j,min,temp;printf("请输入排序数据:\n");for(i=0;icin>>a[i];printf("排序前数列:\n");for(i=0;i{cout<}for(i=0;i{min=i;for(j=i+1;jif(a[j]min=j;temp=a[i];a[i]=a[min];a[min]=temp;}printf("\n排序后的数列:\n");for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,任意输入10个整数,察看并分析程序执行结果;2)运行程序,输入多于10个的整数,察看并分析程序执行结果;3)运行程序,输入一组升序排列的有序整数,察看并分析程序执行结果;4)运行程序,输入一组降序排列的有序整数,察看并分析程序执行结果。3.实验4_2:有序数列的数据插入问题编程分析,这个问题包括3个关键步骤:1)确定要插入数据的位置。这步操作使用的方法有很多种,如可以使用折半查找比较的方法,也可以使用顺序比较的方法;2)将自插入位置开始后的所有数据都向后移动一个位置,以便空出要插入数据的位置。若插入数据位置在原有所有数据之后,该步骤可省略,若插入数据位置在第一个数据之前,所有数据依次后移一个位置;3)将要插入的数据存储在该空位置上。参考程序://在升序排序的数组中插入数据程序,sy4_2.cpp#includeusingnamespacestd;#defineM10voidmain(){inta[M+1]={10,20,30,40,50,60,70,80,90,99};inti,n,p;cout<<"原始数列数据为:"<for(i=0;i{cout<}cout<"<cin>>n;a[M]=n;for(i=0;i<=M;i++)//确定要插入的位置pif(n<=a[i]){p=i;break;}for(i=M-1;i>=p;i--)//元素后移a[i+1]=a[i];a[p]=n;//插入数据cout<"<for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,输入一个比所有原始数据都小的数,察看并分析程序执行结果;2)运行程序,输入一个比所有原始数据都大的数,察看并分析程序执行结果;3)运行程序,输入一个介于原始数据最小数和最大数之间的整数,察看并分析程序执行结果;4)运行程序,输入原始数据中最小的数,察看并分析程序执行结果;5)运行程序,输入原始数据中最大的数,察看并分析程序执行结果;6)运行程序,输入原始数据中间的任何一个数,察看并分析程序执行结果。4.实验4_3:不用字符串处理函数将两个字符串连接,即将字符串b连接到字符串a的后面,变成字符串c。思考:如果将字符串S2连接到字符串S1的后面,且不需要第三个字符串变量作中间过度,如何实现?编程实现并测试。 实验5函数一、实验目的及要求主要叙述本节对应要掌握的主要概念和要解决的主要问题。1.掌握函数的定义方法,及函数调用的形式;2.掌握函数实参与形参的对应关系,“值传递”与“地址传递”的方式与区别;3.掌握函数的应用方法,熟悉函数的嵌套调用和递归调用的设计方法;4.了解全局变量、局部变量、动态变量及静态变量的概念和使用方法;5.综合应用顺序结构、选择结构和循环结构的设计方法设计函数程序。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤1.分析下面程序,给出运行结果。本题要求理解和掌握函数的定义和调用//实验5_1:sy5_1.cpp#includeusingnamespacestd;intf(inti){i=i*i-1;return(i);}voidmain(){inti;for(i=0;i<5;i++)cout<}程序运行结果:2.下面程序为选择排序,要求按如下步骤完成本题实验,理解和掌握函数参数的传递,理解函数的嵌套调用。//实验5_2:sy5_2.cpp#includeusingnamespacestd;#defineN10intmax(intx[],intn){inti,j;j=0;for(i=1;iif(x[i]>x[j])j=i;returnj;}voidsel_sort(intx[],intn){inti,j;for(i=n;i>1;i--){j=max(x,i);inttemp=x[j];x[j]=x[i-1];x[i-1]=temp;}}voidmain(){inta[N],i;for(i=0;icin>>a[i];sel_sort(a,N);for(i=0;icout<cout<}1)阅读程序,理解选择排序的思想2)上机编辑,调试程序3)用两组数据,给出程序运行结果,4)用单步执行,观察程序执行的流程5)画出流程图描述程序的实现6)问题:什么是函数的嵌套调用?3.函数的递归调用题目:采用递归方式实现二分查找{问题分析}二分查找算法可以描述为:对于一个已经从小到大排序的数据序列,用给定数据key与查找区间中央位置的数据比较,如果相等则表明查找成功;否则,如果key比中央位置的数据小,则在前半个区间用同样的方法继续查找;否则在后半个区间用同样的方法继续查找。因此,这是一个递归的过程,当查找区间的长度为0时,说明查找不成功。要求完成本题的填空并上机调试通过,理解递归调用的执行过程//实验5_3:sy5_3.cpp#includeusingnamespacestd;#defineNUM10intsearch(intvalue[],intkey,intlow,inthigh);voidmain(){intvalue[NUM],result,key;inti;cout<<"请输入十个从大到小的有序数列:"<for(i=0;icin>>value[i];/*输入从大到小的有序数列*/cout<<"请输入其中一个元素值:"<cin>>key;/*输入待查找的数值*/result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/if(result!=-1)cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
②再将第5行改为:
intc1,c2;
并运行两种输出格式
实验1_2:
//sy1_2.cpp
{
inti,j,m,n;
i=8;j=10;
m=++i;n=j++;
cout<<"i="<
运行。
分别作以下改动并运行:
将第8行改为:
m=i++;n=--j
将第7行改为:
inti=8,j=10,m=0,n=0
m+=i++;n-=--j
分析分别修改以后的变化情况。
实验1_3:
输入并运行以下程序,并回答思考题
//sy1_3.cpp
{unsignedshorta;
shortintb=-1;
a=b;
cout<return0;}思考题:运行结果是什么?依据是什么?因为-1的补码形式为1111111111111111(即全部16个二进制位均为1),将它传送给a,而a是无符号型变量,16个位全1是十进制的65535。如果b为正值,且在0~32767之间,则赋值后数值不变。思考问题:1.输入一个字符,判别它是否为大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符,上机编写并通过程序。2.输入3个a,b,c,求出最大数,上机编写并通过程序。3:#include“filename”与#include的区别?实验相关知识1.程序的编译、连接、运行在“编译”菜单中,“Compile”命令可对源程序进行编译,编译通过则生成扩展名为.obj的目标文件;“Build”命令可对目标文件连接生成“可执行文件”,此命令也可将源程序进行编译再连接生成“可执行文件”;“Execute”命令可运行“可执行文件”显示结果,此命令也可将源程序进行编译再连接生成“可执行文件”并运行显示结果。编译或连接时的信息都会显示在输出窗口,若出现错误,则标识出错文件名,发生错误的行号及错误的原因等。错误信息中的警告信息不妨碍可执行文件的形成,但最好进行修改。2.程序的调试在VisualC++6.0环境下集成了调试器,可以利用Build菜单Debug级联菜单中的命令或快捷键来控制调试器中程序的运行情况。通过设置断点,观察断点的各种信息,单步跟踪有疑问的程序段,进而修改源程序。DeveloperStudio中的工程可以产生两种可执行代码,分别称为调试版本和发布版本。调试版本是在开发过程中使用的,用于检测程序中的错误;发布版本是面向用户的。高度版本体积较大,而且速度通常要比发布版本慢,发布版本不能用调试器进行调试。实验2顺序结构和选择结构设计程序设计一、实验目的及要求:1.学会正确使用逻辑运算符和逻辑表达式;2.熟练掌握if语句和switch语句;3.掌握在程序设计中灵活使用顺序结构和选择结构。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤:先画程序流程图,再编写程序,解下列问题,然后上机调试运行程序。实验2_1:有一个函数xx<=0Y=5x-101<=x<1010x-20x>=10用cin函数输入x的值(分别为x<=0,1<=x<=10,x>=10),输出y的值。说明:这个题目主要是练习学生对if…eles语句的使用。实验2_2:给出一个不多于5位的正整数,要求:1)求出它是几位数;2)分别输出每一位数;3)按逆序输出各位数字,例如原数为5631,应输出为1365。说明:这个题目主要是练习学生对if…elsefif嵌套语句,switch…case语句的使用。思考:如果不使用switch…case语句,完全使用if…elseif来实现,那程序应该怎么改动呢?实验2_3:输入四个整数,要求按大小顺序输出。上机编写并通过程序。说明:这个题目主要是练习学生对两个数的交换以及多个数的排序处理。思考:程序中需要两个数的比较是多少次,如果有5个数,那比较的次数又是多少次呢? 实验3循环结构程序设计一、实验目的及要求1.掌握while、for、do…while循环结构的使用方法以及循环条件的使用;2.能够使用三种循环结构设计程序、分析程序并解决实际问题;3.掌握三种循环结构的差异和不同,能灵活地实现三种结构间的转换;4.正确编写具有循环结构的C语言程序。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤1.程序实验验证(1)求=1+2+···+100之和,上机验证程序运算结果。方法一(实验3_1):用while语句编程。方法二(实验3_2):用do-while语句,求1到100的和。方法三(实验3_3):用for语句编程。上机编写并通过程序,并分析三种编程方法的特点。几种循环结构的比较分析:for语句适合于循环次数是预先知道的,且步长固定;而while和do语句的循环次数则依赖于循环体的动作。for和while语句是先判断后执行,所以循环体可能一次也不执行;do语句是先执行后判断,所以循环体至少执行一次。循环体可以是空语句,也是几个语句复合。三种循环语句可以相互转化,但一般来说,while语句的适应性最广,应首先考虑。但在特别的问题中,选择for语句和do语句会更自然、更方便。(2)实验3_4:编写程序找出3位数中(100—200间)各位数之和能被5整除的所有数,每行按5个数据显示在屏幕上。编写程序代码并上机验证程序运行结果。(3)编程求水仙花数。水仙花数是满足这样条件的3位数:3位数中各位数的立方和等于该3位数,上机运行程序并验证程序运行结果。2.程序实验分析(1)实验3_5:根据程序代码,分析下列程序所完成功能和相应输出结果,并思考下列问题。//sy3_5.cpp分析下列程序的运行结果行号程序代码1#include2usingnamespacestd;3voidmain()4{5inti,sum;6sum=0;7i=10;8while(i)9{sum=sum+i;10i=i-1;11}12cout<<"sum="<13}思考问题1:运行程序,分析程序的运行结果(sum=55),根据程序运行结果,思考程序中第8行的语句while(i)中的表达含义。思考问题2:试着将第8行中的语句修改为while(x!=0)再运行修改后的程序,并对运行结果与原程序运行结果进行比较分析。思考问题3:试着将第8行中的语句修改为while(!x==0)再运行修改后的程序,并对运行结果与上面两次运行结果进行比较分析。(2)分析下面程序:如果用下列语句来实现s=1+2+3+4+5的累加功能,请你分析、运行程序,找出程序中存在的错误并进行修改。行号程序代码1#include2usingnamespacestd;3voidmain()4{5inti,s=0;//累加变量初始化为06for(i=1,i<=5,i++);//实现1—5的累加7s=s+i;8cout<<“s=”<9}问题拓展:1)如果将原程序修改为用while语句来实现,请分析程序中存在的错误。行号程序代码1#include2usingnamespacestd;3voidmain()4{5inti,s=0;//累加变量初始化为06while(i<=5);7{8s=s+i;9}10cout<<“s=”<11}2)如果将原程序修改为用do…while语句来实现,请分析程序中存在的错误。行号程序代码1#include2usingnamespacestd;3voidmain()4{5inti=1,s=0;6do7{8s=s+i;9i++;10}while(++i<=100)11cout<<“s=”<12} 实验4数组与字符串一、实验目的及要求1.了解数组与数学矩阵的关系;2.掌握数组的定义、引用与初始化;3.理解二维数组数据的存储顺序;4.理解并掌握冒泡排序法、选择排序法;5.掌握字符数组与字符串的定义、引用;6.了解字符串处理函数的用法。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤1.排序算法排序算法有很多种,如冒泡排序、选择排序等。1)冒泡排序法:相邻元素比较大小并发生交换,使最大值(最小值)“浮出”到数组尽头:a0a1a2a3现以N元数组a[0]–a[N-1]由小到大排序为例,其算法执行步骤如下:第1步:找到a[0]–a[N-1]中的最大值元素浮动到a[N-1];第2步:找到a[0]–a[N-2]中的最大值元素浮动到a[N-2];第3步:找到a[0]–a[N-3]中的最大值元素浮动到a[N-3];…………第i步:找到a[0]–a[N-i]中的最大值元素浮动到a[N-i];…………第N-1步:找到a[0]–a[1]中的最大值元素浮动到a[1],且算法停止。2)选择排序法:仍以N元数组a[0]–a[N-1]由小到大排序为例,其算法执行步骤如下:第1步:找到a[0]–a[N-1]中的最小值元素与a[0]交换;第2步:找到a[1]–a[N-1]中的最小值元素与a[1]交换;第3步:找到a[2]–a[N-1]中的最小值元素与a[2]交换;…………第i步:找到a[i]–a[N-1]中的最小值元素与a[i]交换;…………第N-1步:找到a[N-2]–a[N-1]中的最小值元素与a[N-2],且算法停止。注意:比较冒泡排序法与选择排序法的差异。2.实验4_1:用选择法排序程序(升序程序)//用选择法排序程序(升序排序)#includeusingnamespacestd;#defineM10voidmain(){inta[M],i,j,min,temp;printf("请输入排序数据:\n");for(i=0;icin>>a[i];printf("排序前数列:\n");for(i=0;i{cout<}for(i=0;i{min=i;for(j=i+1;jif(a[j]min=j;temp=a[i];a[i]=a[min];a[min]=temp;}printf("\n排序后的数列:\n");for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,任意输入10个整数,察看并分析程序执行结果;2)运行程序,输入多于10个的整数,察看并分析程序执行结果;3)运行程序,输入一组升序排列的有序整数,察看并分析程序执行结果;4)运行程序,输入一组降序排列的有序整数,察看并分析程序执行结果。3.实验4_2:有序数列的数据插入问题编程分析,这个问题包括3个关键步骤:1)确定要插入数据的位置。这步操作使用的方法有很多种,如可以使用折半查找比较的方法,也可以使用顺序比较的方法;2)将自插入位置开始后的所有数据都向后移动一个位置,以便空出要插入数据的位置。若插入数据位置在原有所有数据之后,该步骤可省略,若插入数据位置在第一个数据之前,所有数据依次后移一个位置;3)将要插入的数据存储在该空位置上。参考程序://在升序排序的数组中插入数据程序,sy4_2.cpp#includeusingnamespacestd;#defineM10voidmain(){inta[M+1]={10,20,30,40,50,60,70,80,90,99};inti,n,p;cout<<"原始数列数据为:"<for(i=0;i{cout<}cout<"<cin>>n;a[M]=n;for(i=0;i<=M;i++)//确定要插入的位置pif(n<=a[i]){p=i;break;}for(i=M-1;i>=p;i--)//元素后移a[i+1]=a[i];a[p]=n;//插入数据cout<"<for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,输入一个比所有原始数据都小的数,察看并分析程序执行结果;2)运行程序,输入一个比所有原始数据都大的数,察看并分析程序执行结果;3)运行程序,输入一个介于原始数据最小数和最大数之间的整数,察看并分析程序执行结果;4)运行程序,输入原始数据中最小的数,察看并分析程序执行结果;5)运行程序,输入原始数据中最大的数,察看并分析程序执行结果;6)运行程序,输入原始数据中间的任何一个数,察看并分析程序执行结果。4.实验4_3:不用字符串处理函数将两个字符串连接,即将字符串b连接到字符串a的后面,变成字符串c。思考:如果将字符串S2连接到字符串S1的后面,且不需要第三个字符串变量作中间过度,如何实现?编程实现并测试。 实验5函数一、实验目的及要求主要叙述本节对应要掌握的主要概念和要解决的主要问题。1.掌握函数的定义方法,及函数调用的形式;2.掌握函数实参与形参的对应关系,“值传递”与“地址传递”的方式与区别;3.掌握函数的应用方法,熟悉函数的嵌套调用和递归调用的设计方法;4.了解全局变量、局部变量、动态变量及静态变量的概念和使用方法;5.综合应用顺序结构、选择结构和循环结构的设计方法设计函数程序。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤1.分析下面程序,给出运行结果。本题要求理解和掌握函数的定义和调用//实验5_1:sy5_1.cpp#includeusingnamespacestd;intf(inti){i=i*i-1;return(i);}voidmain(){inti;for(i=0;i<5;i++)cout<}程序运行结果:2.下面程序为选择排序,要求按如下步骤完成本题实验,理解和掌握函数参数的传递,理解函数的嵌套调用。//实验5_2:sy5_2.cpp#includeusingnamespacestd;#defineN10intmax(intx[],intn){inti,j;j=0;for(i=1;iif(x[i]>x[j])j=i;returnj;}voidsel_sort(intx[],intn){inti,j;for(i=n;i>1;i--){j=max(x,i);inttemp=x[j];x[j]=x[i-1];x[i-1]=temp;}}voidmain(){inta[N],i;for(i=0;icin>>a[i];sel_sort(a,N);for(i=0;icout<cout<}1)阅读程序,理解选择排序的思想2)上机编辑,调试程序3)用两组数据,给出程序运行结果,4)用单步执行,观察程序执行的流程5)画出流程图描述程序的实现6)问题:什么是函数的嵌套调用?3.函数的递归调用题目:采用递归方式实现二分查找{问题分析}二分查找算法可以描述为:对于一个已经从小到大排序的数据序列,用给定数据key与查找区间中央位置的数据比较,如果相等则表明查找成功;否则,如果key比中央位置的数据小,则在前半个区间用同样的方法继续查找;否则在后半个区间用同样的方法继续查找。因此,这是一个递归的过程,当查找区间的长度为0时,说明查找不成功。要求完成本题的填空并上机调试通过,理解递归调用的执行过程//实验5_3:sy5_3.cpp#includeusingnamespacestd;#defineNUM10intsearch(intvalue[],intkey,intlow,inthigh);voidmain(){intvalue[NUM],result,key;inti;cout<<"请输入十个从大到小的有序数列:"<for(i=0;icin>>value[i];/*输入从大到小的有序数列*/cout<<"请输入其中一个元素值:"<cin>>key;/*输入待查找的数值*/result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/if(result!=-1)cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
思考题:
运行结果是什么?
依据是什么?
因为-1的补码形式为1111111111111111(即全部16个二进制位均为1),将它传送给a,而a是无符号型变量,16个位全1是十进制的65535。
如果b为正值,且在0~32767之间,则赋值后数值不变。
思考问题:
1.输入一个字符,判别它是否为大写字母,如果是,将它转换成小写字母;如果不是,不转换。
然后输出最后得到的字符,上机编写并通过程序。
2.输入3个a,b,c,求出最大数,上机编写并通过程序。
3:
#include“filename”与#include的区别?
实验相关知识
1.程序的编译、连接、运行
在“编译”菜单中,“Compile”命令可对源程序进行编译,编译通过则生成扩展名为.obj的目标文件;“Build”命令可对目标文件连接生成“可执行文件”,此命令也可将源程序进行编译再连接生成“可执行文件”;“Execute”命令可运行“可执行文件”显示结果,此命令也可将源程序进行编译再连接生成“可执行文件”并运行显示结果。
编译或连接时的信息都会显示在输出窗口,若出现错误,则标识出错文件名,发生错误的行号及错误的原因等。
错误信息中的警告信息不妨碍可执行文件的形成,但最好进行修改。
2.程序的调试
在VisualC++6.0环境下集成了调试器,可以利用Build菜单Debug级联菜单中的命令或快捷键来控制调试器中程序的运行情况。
通过设置断点,观察断点的各种信息,单步跟踪有疑问的程序段,进而修改源程序。
DeveloperStudio中的工程可以产生两种可执行代码,分别称为调试版本和发布版本。
调试版本是在开发过程中使用的,用于检测程序中的错误;发布版本是面向用户的。
高度版本体积较大,而且速度通常要比发布版本慢,发布版本不能用调试器进行调试。
实验2顺序结构和选择结构设计程序设计
一、实验目的及要求:
1.学会正确使用逻辑运算符和逻辑表达式;
2.熟练掌握if语句和switch语句;
3.掌握在程序设计中灵活使用顺序结构和选择结构。
三、实验内容及步骤:
先画程序流程图,再编写程序,解下列问题,然后上机调试运行程序。
实验2_1:
有一个函数
xx<=0
Y=5x-101<=x<10
10x-20x>=10
用cin函数输入x的值(分别为x<=0,1<=x<=10,x>=10),输出y的值。
说明:
这个题目主要是练习学生对if…eles语句的使用。
实验2_2:
给出一个不多于5位的正整数,要求:
1)求出它是几位数;
2)分别输出每一位数;
3)按逆序输出各位数字,例如原数为5631,应输出为1365。
这个题目主要是练习学生对if…elsefif嵌套语句,switch…case语句的使用。
思考:
如果不使用switch…case语句,完全使用if…elseif来实现,那程序应该怎么改动呢?
实验2_3:
输入四个整数,要求按大小顺序输出。
上机编写并通过程序。
这个题目主要是练习学生对两个数的交换以及多个数的排序处理。
程序中需要两个数的比较是多少次,如果有5个数,那比较的次数又是多少次呢?
实验3循环结构程序设计
1.掌握while、for、do…while循环结构的使用方法以及循环条件的使用;
2.能够使用三种循环结构设计程序、分析程序并解决实际问题;
3.掌握三种循环结构的差异和不同,能灵活地实现三种结构间的转换;
4.正确编写具有循环结构的C语言程序。
三、实验内容及步骤
1.程序实验验证
(1)求=1+2+···+100之和,上机验证程序运算结果。
方法一(实验3_1):
用while语句编程。
方法二(实验3_2):
用do-while语句,求1到100的和。
方法三(实验3_3):
用for语句编程。
上机编写并通过程序,并分析三种编程方法的特点。
几种循环结构的比较分析:
for语句适合于循环次数是预先知道的,且步长固定;而while和do语句的循环次数则依赖于循环体的动作。
for和while语句是先判断后执行,所以循环体可能一次也不执行;do语句是先执行后判断,所以循环体至少执行一次。
循环体可以是空语句,也是几个语句复合。
三种循环语句可以相互转化,但一般来说,while语句的适应性最广,应首先考虑。
但在特别的问题中,选择for语句和do语句会更自然、更方便。
(2)实验3_4:
编写程序找出3位数中(100—200间)各位数之和能被5整除的所有数,每行按5个数据显示在屏幕上。
编写程序代码并上机验证程序运行结果。
(3)编程求水仙花数。
水仙花数是满足这样条件的3位数:
3位数中各位数的立方和等于该3位数,上机运行程序并验证程序运行结果。
2.程序实验分析
(1)实验3_5:
根据程序代码,分析下列程序所完成功能和相应输出结果,并思考下列问题。
//sy3_5.cpp分析下列程序的运行结果
行号程序代码
1#include
2usingnamespacestd;
3voidmain()
4{
5inti,sum;
6sum=0;
7i=10;
8while(i)
9{sum=sum+i;
10i=i-1;
11}
12cout<<"sum="<13}思考问题1:运行程序,分析程序的运行结果(sum=55),根据程序运行结果,思考程序中第8行的语句while(i)中的表达含义。思考问题2:试着将第8行中的语句修改为while(x!=0)再运行修改后的程序,并对运行结果与原程序运行结果进行比较分析。思考问题3:试着将第8行中的语句修改为while(!x==0)再运行修改后的程序,并对运行结果与上面两次运行结果进行比较分析。(2)分析下面程序:如果用下列语句来实现s=1+2+3+4+5的累加功能,请你分析、运行程序,找出程序中存在的错误并进行修改。行号程序代码1#include2usingnamespacestd;3voidmain()4{5inti,s=0;//累加变量初始化为06for(i=1,i<=5,i++);//实现1—5的累加7s=s+i;8cout<<“s=”<9}问题拓展:1)如果将原程序修改为用while语句来实现,请分析程序中存在的错误。行号程序代码1#include2usingnamespacestd;3voidmain()4{5inti,s=0;//累加变量初始化为06while(i<=5);7{8s=s+i;9}10cout<<“s=”<11}2)如果将原程序修改为用do…while语句来实现,请分析程序中存在的错误。行号程序代码1#include2usingnamespacestd;3voidmain()4{5inti=1,s=0;6do7{8s=s+i;9i++;10}while(++i<=100)11cout<<“s=”<12} 实验4数组与字符串一、实验目的及要求1.了解数组与数学矩阵的关系;2.掌握数组的定义、引用与初始化;3.理解二维数组数据的存储顺序;4.理解并掌握冒泡排序法、选择排序法;5.掌握字符数组与字符串的定义、引用;6.了解字符串处理函数的用法。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤1.排序算法排序算法有很多种,如冒泡排序、选择排序等。1)冒泡排序法:相邻元素比较大小并发生交换,使最大值(最小值)“浮出”到数组尽头:a0a1a2a3现以N元数组a[0]–a[N-1]由小到大排序为例,其算法执行步骤如下:第1步:找到a[0]–a[N-1]中的最大值元素浮动到a[N-1];第2步:找到a[0]–a[N-2]中的最大值元素浮动到a[N-2];第3步:找到a[0]–a[N-3]中的最大值元素浮动到a[N-3];…………第i步:找到a[0]–a[N-i]中的最大值元素浮动到a[N-i];…………第N-1步:找到a[0]–a[1]中的最大值元素浮动到a[1],且算法停止。2)选择排序法:仍以N元数组a[0]–a[N-1]由小到大排序为例,其算法执行步骤如下:第1步:找到a[0]–a[N-1]中的最小值元素与a[0]交换;第2步:找到a[1]–a[N-1]中的最小值元素与a[1]交换;第3步:找到a[2]–a[N-1]中的最小值元素与a[2]交换;…………第i步:找到a[i]–a[N-1]中的最小值元素与a[i]交换;…………第N-1步:找到a[N-2]–a[N-1]中的最小值元素与a[N-2],且算法停止。注意:比较冒泡排序法与选择排序法的差异。2.实验4_1:用选择法排序程序(升序程序)//用选择法排序程序(升序排序)#includeusingnamespacestd;#defineM10voidmain(){inta[M],i,j,min,temp;printf("请输入排序数据:\n");for(i=0;icin>>a[i];printf("排序前数列:\n");for(i=0;i{cout<}for(i=0;i{min=i;for(j=i+1;jif(a[j]min=j;temp=a[i];a[i]=a[min];a[min]=temp;}printf("\n排序后的数列:\n");for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,任意输入10个整数,察看并分析程序执行结果;2)运行程序,输入多于10个的整数,察看并分析程序执行结果;3)运行程序,输入一组升序排列的有序整数,察看并分析程序执行结果;4)运行程序,输入一组降序排列的有序整数,察看并分析程序执行结果。3.实验4_2:有序数列的数据插入问题编程分析,这个问题包括3个关键步骤:1)确定要插入数据的位置。这步操作使用的方法有很多种,如可以使用折半查找比较的方法,也可以使用顺序比较的方法;2)将自插入位置开始后的所有数据都向后移动一个位置,以便空出要插入数据的位置。若插入数据位置在原有所有数据之后,该步骤可省略,若插入数据位置在第一个数据之前,所有数据依次后移一个位置;3)将要插入的数据存储在该空位置上。参考程序://在升序排序的数组中插入数据程序,sy4_2.cpp#includeusingnamespacestd;#defineM10voidmain(){inta[M+1]={10,20,30,40,50,60,70,80,90,99};inti,n,p;cout<<"原始数列数据为:"<for(i=0;i{cout<}cout<"<cin>>n;a[M]=n;for(i=0;i<=M;i++)//确定要插入的位置pif(n<=a[i]){p=i;break;}for(i=M-1;i>=p;i--)//元素后移a[i+1]=a[i];a[p]=n;//插入数据cout<"<for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,输入一个比所有原始数据都小的数,察看并分析程序执行结果;2)运行程序,输入一个比所有原始数据都大的数,察看并分析程序执行结果;3)运行程序,输入一个介于原始数据最小数和最大数之间的整数,察看并分析程序执行结果;4)运行程序,输入原始数据中最小的数,察看并分析程序执行结果;5)运行程序,输入原始数据中最大的数,察看并分析程序执行结果;6)运行程序,输入原始数据中间的任何一个数,察看并分析程序执行结果。4.实验4_3:不用字符串处理函数将两个字符串连接,即将字符串b连接到字符串a的后面,变成字符串c。思考:如果将字符串S2连接到字符串S1的后面,且不需要第三个字符串变量作中间过度,如何实现?编程实现并测试。 实验5函数一、实验目的及要求主要叙述本节对应要掌握的主要概念和要解决的主要问题。1.掌握函数的定义方法,及函数调用的形式;2.掌握函数实参与形参的对应关系,“值传递”与“地址传递”的方式与区别;3.掌握函数的应用方法,熟悉函数的嵌套调用和递归调用的设计方法;4.了解全局变量、局部变量、动态变量及静态变量的概念和使用方法;5.综合应用顺序结构、选择结构和循环结构的设计方法设计函数程序。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤1.分析下面程序,给出运行结果。本题要求理解和掌握函数的定义和调用//实验5_1:sy5_1.cpp#includeusingnamespacestd;intf(inti){i=i*i-1;return(i);}voidmain(){inti;for(i=0;i<5;i++)cout<}程序运行结果:2.下面程序为选择排序,要求按如下步骤完成本题实验,理解和掌握函数参数的传递,理解函数的嵌套调用。//实验5_2:sy5_2.cpp#includeusingnamespacestd;#defineN10intmax(intx[],intn){inti,j;j=0;for(i=1;iif(x[i]>x[j])j=i;returnj;}voidsel_sort(intx[],intn){inti,j;for(i=n;i>1;i--){j=max(x,i);inttemp=x[j];x[j]=x[i-1];x[i-1]=temp;}}voidmain(){inta[N],i;for(i=0;icin>>a[i];sel_sort(a,N);for(i=0;icout<cout<}1)阅读程序,理解选择排序的思想2)上机编辑,调试程序3)用两组数据,给出程序运行结果,4)用单步执行,观察程序执行的流程5)画出流程图描述程序的实现6)问题:什么是函数的嵌套调用?3.函数的递归调用题目:采用递归方式实现二分查找{问题分析}二分查找算法可以描述为:对于一个已经从小到大排序的数据序列,用给定数据key与查找区间中央位置的数据比较,如果相等则表明查找成功;否则,如果key比中央位置的数据小,则在前半个区间用同样的方法继续查找;否则在后半个区间用同样的方法继续查找。因此,这是一个递归的过程,当查找区间的长度为0时,说明查找不成功。要求完成本题的填空并上机调试通过,理解递归调用的执行过程//实验5_3:sy5_3.cpp#includeusingnamespacestd;#defineNUM10intsearch(intvalue[],intkey,intlow,inthigh);voidmain(){intvalue[NUM],result,key;inti;cout<<"请输入十个从大到小的有序数列:"<for(i=0;icin>>value[i];/*输入从大到小的有序数列*/cout<<"请输入其中一个元素值:"<cin>>key;/*输入待查找的数值*/result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/if(result!=-1)cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
13}
思考问题1:
运行程序,分析程序的运行结果(sum=55),根据程序运行结果,思考程序中第8行的语句while(i)中的表达含义。
思考问题2:
试着将第8行中的语句修改为
while(x!
=0)
再运行修改后的程序,并对运行结果与原程序运行结果进行比较分析。
思考问题3:
while(!
x==0)
再运行修改后的程序,并对运行结果与上面两次运行结果进行比较分析。
(2)分析下面程序:
如果用下列语句来实现s=1+2+3+4+5的累加功能,请你分析、运行程序,找出程序中存在的错误并进行修改。
5inti,s=0;//累加变量初始化为0
6for(i=1,i<=5,i++);//实现1—5的累加
7s=s+i;
8cout<<“s=”<
9}
问题拓展:
1)如果将原程序修改为用while语句来实现,请分析程序中存在的错误。
6while(i<=5);
7{
8s=s+i;
10cout<<“s=”<
2)如果将原程序修改为用do…while语句来实现,请分析程序中存在的错误。
5inti=1,s=0;
6do
9i++;
10}while(++i<=100)
11cout<<“s=”<
12}
实验4数组与字符串
1.了解数组与数学矩阵的关系;
2.掌握数组的定义、引用与初始化;
3.理解二维数组数据的存储顺序;
4.理解并掌握冒泡排序法、选择排序法;
5.掌握字符数组与字符串的定义、引用;
6.了解字符串处理函数的用法。
1.排序算法
排序算法有很多种,如冒泡排序、选择排序等。
1)冒泡排序法:
相邻元素比较大小并发生交换,使最大值(最小值)“浮出”到数组尽头:
a0a1a2a3
现以N元数组a[0]–a[N-1]由小到大排序为例,其算法执行步骤如下:
第1步:
找到a[0]–a[N-1]中的最大值元素浮动到a[N-1];
第2步:
找到a[0]–a[N-2]中的最大值元素浮动到a[N-2];
第3步:
找到a[0]–a[N-3]中的最大值元素浮动到a[N-3];
…………
第i步:
找到a[0]–a[N-i]中的最大值元素浮动到a[N-i];
第N-1步:
找到a[0]–a[1]中的最大值元素浮动到a[1],且算法停止。
2)选择排序法:
仍以N元数组a[0]–a[N-1]由小到大排序为例,其算法执行步骤如下:
找到a[0]–a[N-1]中的最小值元素与a[0]交换;
找到a[1]–a[N-1]中的最小值元素与a[1]交换;
找到a[2]–a[N-1]中的最小值元素与a[2]交换;
找到a[i]–a[N-1]中的最小值元素与a[i]交换;
找到a[N-2]–a[N-1]中的最小值元素与a[N-2],且算法停止。
注意:
比较冒泡排序法与选择排序法的差异。
2.实验4_1:
用选择法排序程序(升序程序)
//用选择法排序程序(升序排序)
#defineM10
voidmain()
inta[M],i,j,min,temp;
printf("请输入排序数据:
\n");
for(i=0;icin>>a[i];printf("排序前数列:\n");for(i=0;i{cout<}for(i=0;i{min=i;for(j=i+1;jif(a[j]min=j;temp=a[i];a[i]=a[min];a[min]=temp;}printf("\n排序后的数列:\n");for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,任意输入10个整数,察看并分析程序执行结果;2)运行程序,输入多于10个的整数,察看并分析程序执行结果;3)运行程序,输入一组升序排列的有序整数,察看并分析程序执行结果;4)运行程序,输入一组降序排列的有序整数,察看并分析程序执行结果。3.实验4_2:有序数列的数据插入问题编程分析,这个问题包括3个关键步骤:1)确定要插入数据的位置。这步操作使用的方法有很多种,如可以使用折半查找比较的方法,也可以使用顺序比较的方法;2)将自插入位置开始后的所有数据都向后移动一个位置,以便空出要插入数据的位置。若插入数据位置在原有所有数据之后,该步骤可省略,若插入数据位置在第一个数据之前,所有数据依次后移一个位置;3)将要插入的数据存储在该空位置上。参考程序://在升序排序的数组中插入数据程序,sy4_2.cpp#includeusingnamespacestd;#defineM10voidmain(){inta[M+1]={10,20,30,40,50,60,70,80,90,99};inti,n,p;cout<<"原始数列数据为:"<for(i=0;i{cout<}cout<"<cin>>n;a[M]=n;for(i=0;i<=M;i++)//确定要插入的位置pif(n<=a[i]){p=i;break;}for(i=M-1;i>=p;i--)//元素后移a[i+1]=a[i];a[p]=n;//插入数据cout<"<for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,输入一个比所有原始数据都小的数,察看并分析程序执行结果;2)运行程序,输入一个比所有原始数据都大的数,察看并分析程序执行结果;3)运行程序,输入一个介于原始数据最小数和最大数之间的整数,察看并分析程序执行结果;4)运行程序,输入原始数据中最小的数,察看并分析程序执行结果;5)运行程序,输入原始数据中最大的数,察看并分析程序执行结果;6)运行程序,输入原始数据中间的任何一个数,察看并分析程序执行结果。4.实验4_3:不用字符串处理函数将两个字符串连接,即将字符串b连接到字符串a的后面,变成字符串c。思考:如果将字符串S2连接到字符串S1的后面,且不需要第三个字符串变量作中间过度,如何实现?编程实现并测试。 实验5函数一、实验目的及要求主要叙述本节对应要掌握的主要概念和要解决的主要问题。1.掌握函数的定义方法,及函数调用的形式;2.掌握函数实参与形参的对应关系,“值传递”与“地址传递”的方式与区别;3.掌握函数的应用方法,熟悉函数的嵌套调用和递归调用的设计方法;4.了解全局变量、局部变量、动态变量及静态变量的概念和使用方法;5.综合应用顺序结构、选择结构和循环结构的设计方法设计函数程序。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤1.分析下面程序,给出运行结果。本题要求理解和掌握函数的定义和调用//实验5_1:sy5_1.cpp#includeusingnamespacestd;intf(inti){i=i*i-1;return(i);}voidmain(){inti;for(i=0;i<5;i++)cout<}程序运行结果:2.下面程序为选择排序,要求按如下步骤完成本题实验,理解和掌握函数参数的传递,理解函数的嵌套调用。//实验5_2:sy5_2.cpp#includeusingnamespacestd;#defineN10intmax(intx[],intn){inti,j;j=0;for(i=1;iif(x[i]>x[j])j=i;returnj;}voidsel_sort(intx[],intn){inti,j;for(i=n;i>1;i--){j=max(x,i);inttemp=x[j];x[j]=x[i-1];x[i-1]=temp;}}voidmain(){inta[N],i;for(i=0;icin>>a[i];sel_sort(a,N);for(i=0;icout<cout<}1)阅读程序,理解选择排序的思想2)上机编辑,调试程序3)用两组数据,给出程序运行结果,4)用单步执行,观察程序执行的流程5)画出流程图描述程序的实现6)问题:什么是函数的嵌套调用?3.函数的递归调用题目:采用递归方式实现二分查找{问题分析}二分查找算法可以描述为:对于一个已经从小到大排序的数据序列,用给定数据key与查找区间中央位置的数据比较,如果相等则表明查找成功;否则,如果key比中央位置的数据小,则在前半个区间用同样的方法继续查找;否则在后半个区间用同样的方法继续查找。因此,这是一个递归的过程,当查找区间的长度为0时,说明查找不成功。要求完成本题的填空并上机调试通过,理解递归调用的执行过程//实验5_3:sy5_3.cpp#includeusingnamespacestd;#defineNUM10intsearch(intvalue[],intkey,intlow,inthigh);voidmain(){intvalue[NUM],result,key;inti;cout<<"请输入十个从大到小的有序数列:"<for(i=0;icin>>value[i];/*输入从大到小的有序数列*/cout<<"请输入其中一个元素值:"<cin>>key;/*输入待查找的数值*/result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/if(result!=-1)cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
cin>>a[i];
printf("排序前数列:
for(i=0;i{cout<}for(i=0;i{min=i;for(j=i+1;jif(a[j]min=j;temp=a[i];a[i]=a[min];a[min]=temp;}printf("\n排序后的数列:\n");for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,任意输入10个整数,察看并分析程序执行结果;2)运行程序,输入多于10个的整数,察看并分析程序执行结果;3)运行程序,输入一组升序排列的有序整数,察看并分析程序执行结果;4)运行程序,输入一组降序排列的有序整数,察看并分析程序执行结果。3.实验4_2:有序数列的数据插入问题编程分析,这个问题包括3个关键步骤:1)确定要插入数据的位置。这步操作使用的方法有很多种,如可以使用折半查找比较的方法,也可以使用顺序比较的方法;2)将自插入位置开始后的所有数据都向后移动一个位置,以便空出要插入数据的位置。若插入数据位置在原有所有数据之后,该步骤可省略,若插入数据位置在第一个数据之前,所有数据依次后移一个位置;3)将要插入的数据存储在该空位置上。参考程序://在升序排序的数组中插入数据程序,sy4_2.cpp#includeusingnamespacestd;#defineM10voidmain(){inta[M+1]={10,20,30,40,50,60,70,80,90,99};inti,n,p;cout<<"原始数列数据为:"<for(i=0;i{cout<}cout<"<cin>>n;a[M]=n;for(i=0;i<=M;i++)//确定要插入的位置pif(n<=a[i]){p=i;break;}for(i=M-1;i>=p;i--)//元素后移a[i+1]=a[i];a[p]=n;//插入数据cout<"<for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,输入一个比所有原始数据都小的数,察看并分析程序执行结果;2)运行程序,输入一个比所有原始数据都大的数,察看并分析程序执行结果;3)运行程序,输入一个介于原始数据最小数和最大数之间的整数,察看并分析程序执行结果;4)运行程序,输入原始数据中最小的数,察看并分析程序执行结果;5)运行程序,输入原始数据中最大的数,察看并分析程序执行结果;6)运行程序,输入原始数据中间的任何一个数,察看并分析程序执行结果。4.实验4_3:不用字符串处理函数将两个字符串连接,即将字符串b连接到字符串a的后面,变成字符串c。思考:如果将字符串S2连接到字符串S1的后面,且不需要第三个字符串变量作中间过度,如何实现?编程实现并测试。 实验5函数一、实验目的及要求主要叙述本节对应要掌握的主要概念和要解决的主要问题。1.掌握函数的定义方法,及函数调用的形式;2.掌握函数实参与形参的对应关系,“值传递”与“地址传递”的方式与区别;3.掌握函数的应用方法,熟悉函数的嵌套调用和递归调用的设计方法;4.了解全局变量、局部变量、动态变量及静态变量的概念和使用方法;5.综合应用顺序结构、选择结构和循环结构的设计方法设计函数程序。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤1.分析下面程序,给出运行结果。本题要求理解和掌握函数的定义和调用//实验5_1:sy5_1.cpp#includeusingnamespacestd;intf(inti){i=i*i-1;return(i);}voidmain(){inti;for(i=0;i<5;i++)cout<}程序运行结果:2.下面程序为选择排序,要求按如下步骤完成本题实验,理解和掌握函数参数的传递,理解函数的嵌套调用。//实验5_2:sy5_2.cpp#includeusingnamespacestd;#defineN10intmax(intx[],intn){inti,j;j=0;for(i=1;iif(x[i]>x[j])j=i;returnj;}voidsel_sort(intx[],intn){inti,j;for(i=n;i>1;i--){j=max(x,i);inttemp=x[j];x[j]=x[i-1];x[i-1]=temp;}}voidmain(){inta[N],i;for(i=0;icin>>a[i];sel_sort(a,N);for(i=0;icout<cout<}1)阅读程序,理解选择排序的思想2)上机编辑,调试程序3)用两组数据,给出程序运行结果,4)用单步执行,观察程序执行的流程5)画出流程图描述程序的实现6)问题:什么是函数的嵌套调用?3.函数的递归调用题目:采用递归方式实现二分查找{问题分析}二分查找算法可以描述为:对于一个已经从小到大排序的数据序列,用给定数据key与查找区间中央位置的数据比较,如果相等则表明查找成功;否则,如果key比中央位置的数据小,则在前半个区间用同样的方法继续查找;否则在后半个区间用同样的方法继续查找。因此,这是一个递归的过程,当查找区间的长度为0时,说明查找不成功。要求完成本题的填空并上机调试通过,理解递归调用的执行过程//实验5_3:sy5_3.cpp#includeusingnamespacestd;#defineNUM10intsearch(intvalue[],intkey,intlow,inthigh);voidmain(){intvalue[NUM],result,key;inti;cout<<"请输入十个从大到小的有序数列:"<for(i=0;icin>>value[i];/*输入从大到小的有序数列*/cout<<"请输入其中一个元素值:"<cin>>key;/*输入待查找的数值*/result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/if(result!=-1)cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
cout<}for(i=0;i{min=i;for(j=i+1;jif(a[j]min=j;temp=a[i];a[i]=a[min];a[min]=temp;}printf("\n排序后的数列:\n");for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,任意输入10个整数,察看并分析程序执行结果;2)运行程序,输入多于10个的整数,察看并分析程序执行结果;3)运行程序,输入一组升序排列的有序整数,察看并分析程序执行结果;4)运行程序,输入一组降序排列的有序整数,察看并分析程序执行结果。3.实验4_2:有序数列的数据插入问题编程分析,这个问题包括3个关键步骤:1)确定要插入数据的位置。这步操作使用的方法有很多种,如可以使用折半查找比较的方法,也可以使用顺序比较的方法;2)将自插入位置开始后的所有数据都向后移动一个位置,以便空出要插入数据的位置。若插入数据位置在原有所有数据之后,该步骤可省略,若插入数据位置在第一个数据之前,所有数据依次后移一个位置;3)将要插入的数据存储在该空位置上。参考程序://在升序排序的数组中插入数据程序,sy4_2.cpp#includeusingnamespacestd;#defineM10voidmain(){inta[M+1]={10,20,30,40,50,60,70,80,90,99};inti,n,p;cout<<"原始数列数据为:"<for(i=0;i{cout<}cout<"<cin>>n;a[M]=n;for(i=0;i<=M;i++)//确定要插入的位置pif(n<=a[i]){p=i;break;}for(i=M-1;i>=p;i--)//元素后移a[i+1]=a[i];a[p]=n;//插入数据cout<"<for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,输入一个比所有原始数据都小的数,察看并分析程序执行结果;2)运行程序,输入一个比所有原始数据都大的数,察看并分析程序执行结果;3)运行程序,输入一个介于原始数据最小数和最大数之间的整数,察看并分析程序执行结果;4)运行程序,输入原始数据中最小的数,察看并分析程序执行结果;5)运行程序,输入原始数据中最大的数,察看并分析程序执行结果;6)运行程序,输入原始数据中间的任何一个数,察看并分析程序执行结果。4.实验4_3:不用字符串处理函数将两个字符串连接,即将字符串b连接到字符串a的后面,变成字符串c。思考:如果将字符串S2连接到字符串S1的后面,且不需要第三个字符串变量作中间过度,如何实现?编程实现并测试。 实验5函数一、实验目的及要求主要叙述本节对应要掌握的主要概念和要解决的主要问题。1.掌握函数的定义方法,及函数调用的形式;2.掌握函数实参与形参的对应关系,“值传递”与“地址传递”的方式与区别;3.掌握函数的应用方法,熟悉函数的嵌套调用和递归调用的设计方法;4.了解全局变量、局部变量、动态变量及静态变量的概念和使用方法;5.综合应用顺序结构、选择结构和循环结构的设计方法设计函数程序。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤1.分析下面程序,给出运行结果。本题要求理解和掌握函数的定义和调用//实验5_1:sy5_1.cpp#includeusingnamespacestd;intf(inti){i=i*i-1;return(i);}voidmain(){inti;for(i=0;i<5;i++)cout<}程序运行结果:2.下面程序为选择排序,要求按如下步骤完成本题实验,理解和掌握函数参数的传递,理解函数的嵌套调用。//实验5_2:sy5_2.cpp#includeusingnamespacestd;#defineN10intmax(intx[],intn){inti,j;j=0;for(i=1;iif(x[i]>x[j])j=i;returnj;}voidsel_sort(intx[],intn){inti,j;for(i=n;i>1;i--){j=max(x,i);inttemp=x[j];x[j]=x[i-1];x[i-1]=temp;}}voidmain(){inta[N],i;for(i=0;icin>>a[i];sel_sort(a,N);for(i=0;icout<cout<}1)阅读程序,理解选择排序的思想2)上机编辑,调试程序3)用两组数据,给出程序运行结果,4)用单步执行,观察程序执行的流程5)画出流程图描述程序的实现6)问题:什么是函数的嵌套调用?3.函数的递归调用题目:采用递归方式实现二分查找{问题分析}二分查找算法可以描述为:对于一个已经从小到大排序的数据序列,用给定数据key与查找区间中央位置的数据比较,如果相等则表明查找成功;否则,如果key比中央位置的数据小,则在前半个区间用同样的方法继续查找;否则在后半个区间用同样的方法继续查找。因此,这是一个递归的过程,当查找区间的长度为0时,说明查找不成功。要求完成本题的填空并上机调试通过,理解递归调用的执行过程//实验5_3:sy5_3.cpp#includeusingnamespacestd;#defineNUM10intsearch(intvalue[],intkey,intlow,inthigh);voidmain(){intvalue[NUM],result,key;inti;cout<<"请输入十个从大到小的有序数列:"<for(i=0;icin>>value[i];/*输入从大到小的有序数列*/cout<<"请输入其中一个元素值:"<cin>>key;/*输入待查找的数值*/result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/if(result!=-1)cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
for(i=0;i{min=i;for(j=i+1;jif(a[j]min=j;temp=a[i];a[i]=a[min];a[min]=temp;}printf("\n排序后的数列:\n");for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,任意输入10个整数,察看并分析程序执行结果;2)运行程序,输入多于10个的整数,察看并分析程序执行结果;3)运行程序,输入一组升序排列的有序整数,察看并分析程序执行结果;4)运行程序,输入一组降序排列的有序整数,察看并分析程序执行结果。3.实验4_2:有序数列的数据插入问题编程分析,这个问题包括3个关键步骤:1)确定要插入数据的位置。这步操作使用的方法有很多种,如可以使用折半查找比较的方法,也可以使用顺序比较的方法;2)将自插入位置开始后的所有数据都向后移动一个位置,以便空出要插入数据的位置。若插入数据位置在原有所有数据之后,该步骤可省略,若插入数据位置在第一个数据之前,所有数据依次后移一个位置;3)将要插入的数据存储在该空位置上。参考程序://在升序排序的数组中插入数据程序,sy4_2.cpp#includeusingnamespacestd;#defineM10voidmain(){inta[M+1]={10,20,30,40,50,60,70,80,90,99};inti,n,p;cout<<"原始数列数据为:"<for(i=0;i{cout<}cout<"<cin>>n;a[M]=n;for(i=0;i<=M;i++)//确定要插入的位置pif(n<=a[i]){p=i;break;}for(i=M-1;i>=p;i--)//元素后移a[i+1]=a[i];a[p]=n;//插入数据cout<"<for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,输入一个比所有原始数据都小的数,察看并分析程序执行结果;2)运行程序,输入一个比所有原始数据都大的数,察看并分析程序执行结果;3)运行程序,输入一个介于原始数据最小数和最大数之间的整数,察看并分析程序执行结果;4)运行程序,输入原始数据中最小的数,察看并分析程序执行结果;5)运行程序,输入原始数据中最大的数,察看并分析程序执行结果;6)运行程序,输入原始数据中间的任何一个数,察看并分析程序执行结果。4.实验4_3:不用字符串处理函数将两个字符串连接,即将字符串b连接到字符串a的后面,变成字符串c。思考:如果将字符串S2连接到字符串S1的后面,且不需要第三个字符串变量作中间过度,如何实现?编程实现并测试。 实验5函数一、实验目的及要求主要叙述本节对应要掌握的主要概念和要解决的主要问题。1.掌握函数的定义方法,及函数调用的形式;2.掌握函数实参与形参的对应关系,“值传递”与“地址传递”的方式与区别;3.掌握函数的应用方法,熟悉函数的嵌套调用和递归调用的设计方法;4.了解全局变量、局部变量、动态变量及静态变量的概念和使用方法;5.综合应用顺序结构、选择结构和循环结构的设计方法设计函数程序。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤1.分析下面程序,给出运行结果。本题要求理解和掌握函数的定义和调用//实验5_1:sy5_1.cpp#includeusingnamespacestd;intf(inti){i=i*i-1;return(i);}voidmain(){inti;for(i=0;i<5;i++)cout<}程序运行结果:2.下面程序为选择排序,要求按如下步骤完成本题实验,理解和掌握函数参数的传递,理解函数的嵌套调用。//实验5_2:sy5_2.cpp#includeusingnamespacestd;#defineN10intmax(intx[],intn){inti,j;j=0;for(i=1;iif(x[i]>x[j])j=i;returnj;}voidsel_sort(intx[],intn){inti,j;for(i=n;i>1;i--){j=max(x,i);inttemp=x[j];x[j]=x[i-1];x[i-1]=temp;}}voidmain(){inta[N],i;for(i=0;icin>>a[i];sel_sort(a,N);for(i=0;icout<cout<}1)阅读程序,理解选择排序的思想2)上机编辑,调试程序3)用两组数据,给出程序运行结果,4)用单步执行,观察程序执行的流程5)画出流程图描述程序的实现6)问题:什么是函数的嵌套调用?3.函数的递归调用题目:采用递归方式实现二分查找{问题分析}二分查找算法可以描述为:对于一个已经从小到大排序的数据序列,用给定数据key与查找区间中央位置的数据比较,如果相等则表明查找成功;否则,如果key比中央位置的数据小,则在前半个区间用同样的方法继续查找;否则在后半个区间用同样的方法继续查找。因此,这是一个递归的过程,当查找区间的长度为0时,说明查找不成功。要求完成本题的填空并上机调试通过,理解递归调用的执行过程//实验5_3:sy5_3.cpp#includeusingnamespacestd;#defineNUM10intsearch(intvalue[],intkey,intlow,inthigh);voidmain(){intvalue[NUM],result,key;inti;cout<<"请输入十个从大到小的有序数列:"<for(i=0;icin>>value[i];/*输入从大到小的有序数列*/cout<<"请输入其中一个元素值:"<cin>>key;/*输入待查找的数值*/result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/if(result!=-1)cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
min=i;
for(j=i+1;jif(a[j]min=j;temp=a[i];a[i]=a[min];a[min]=temp;}printf("\n排序后的数列:\n");for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,任意输入10个整数,察看并分析程序执行结果;2)运行程序,输入多于10个的整数,察看并分析程序执行结果;3)运行程序,输入一组升序排列的有序整数,察看并分析程序执行结果;4)运行程序,输入一组降序排列的有序整数,察看并分析程序执行结果。3.实验4_2:有序数列的数据插入问题编程分析,这个问题包括3个关键步骤:1)确定要插入数据的位置。这步操作使用的方法有很多种,如可以使用折半查找比较的方法,也可以使用顺序比较的方法;2)将自插入位置开始后的所有数据都向后移动一个位置,以便空出要插入数据的位置。若插入数据位置在原有所有数据之后,该步骤可省略,若插入数据位置在第一个数据之前,所有数据依次后移一个位置;3)将要插入的数据存储在该空位置上。参考程序://在升序排序的数组中插入数据程序,sy4_2.cpp#includeusingnamespacestd;#defineM10voidmain(){inta[M+1]={10,20,30,40,50,60,70,80,90,99};inti,n,p;cout<<"原始数列数据为:"<for(i=0;i{cout<}cout<"<cin>>n;a[M]=n;for(i=0;i<=M;i++)//确定要插入的位置pif(n<=a[i]){p=i;break;}for(i=M-1;i>=p;i--)//元素后移a[i+1]=a[i];a[p]=n;//插入数据cout<"<for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,输入一个比所有原始数据都小的数,察看并分析程序执行结果;2)运行程序,输入一个比所有原始数据都大的数,察看并分析程序执行结果;3)运行程序,输入一个介于原始数据最小数和最大数之间的整数,察看并分析程序执行结果;4)运行程序,输入原始数据中最小的数,察看并分析程序执行结果;5)运行程序,输入原始数据中最大的数,察看并分析程序执行结果;6)运行程序,输入原始数据中间的任何一个数,察看并分析程序执行结果。4.实验4_3:不用字符串处理函数将两个字符串连接,即将字符串b连接到字符串a的后面,变成字符串c。思考:如果将字符串S2连接到字符串S1的后面,且不需要第三个字符串变量作中间过度,如何实现?编程实现并测试。 实验5函数一、实验目的及要求主要叙述本节对应要掌握的主要概念和要解决的主要问题。1.掌握函数的定义方法,及函数调用的形式;2.掌握函数实参与形参的对应关系,“值传递”与“地址传递”的方式与区别;3.掌握函数的应用方法,熟悉函数的嵌套调用和递归调用的设计方法;4.了解全局变量、局部变量、动态变量及静态变量的概念和使用方法;5.综合应用顺序结构、选择结构和循环结构的设计方法设计函数程序。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤1.分析下面程序,给出运行结果。本题要求理解和掌握函数的定义和调用//实验5_1:sy5_1.cpp#includeusingnamespacestd;intf(inti){i=i*i-1;return(i);}voidmain(){inti;for(i=0;i<5;i++)cout<}程序运行结果:2.下面程序为选择排序,要求按如下步骤完成本题实验,理解和掌握函数参数的传递,理解函数的嵌套调用。//实验5_2:sy5_2.cpp#includeusingnamespacestd;#defineN10intmax(intx[],intn){inti,j;j=0;for(i=1;iif(x[i]>x[j])j=i;returnj;}voidsel_sort(intx[],intn){inti,j;for(i=n;i>1;i--){j=max(x,i);inttemp=x[j];x[j]=x[i-1];x[i-1]=temp;}}voidmain(){inta[N],i;for(i=0;icin>>a[i];sel_sort(a,N);for(i=0;icout<cout<}1)阅读程序,理解选择排序的思想2)上机编辑,调试程序3)用两组数据,给出程序运行结果,4)用单步执行,观察程序执行的流程5)画出流程图描述程序的实现6)问题:什么是函数的嵌套调用?3.函数的递归调用题目:采用递归方式实现二分查找{问题分析}二分查找算法可以描述为:对于一个已经从小到大排序的数据序列,用给定数据key与查找区间中央位置的数据比较,如果相等则表明查找成功;否则,如果key比中央位置的数据小,则在前半个区间用同样的方法继续查找;否则在后半个区间用同样的方法继续查找。因此,这是一个递归的过程,当查找区间的长度为0时,说明查找不成功。要求完成本题的填空并上机调试通过,理解递归调用的执行过程//实验5_3:sy5_3.cpp#includeusingnamespacestd;#defineNUM10intsearch(intvalue[],intkey,intlow,inthigh);voidmain(){intvalue[NUM],result,key;inti;cout<<"请输入十个从大到小的有序数列:"<for(i=0;icin>>value[i];/*输入从大到小的有序数列*/cout<<"请输入其中一个元素值:"<cin>>key;/*输入待查找的数值*/result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/if(result!=-1)cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
if(a[j]min=j;temp=a[i];a[i]=a[min];a[min]=temp;}printf("\n排序后的数列:\n");for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,任意输入10个整数,察看并分析程序执行结果;2)运行程序,输入多于10个的整数,察看并分析程序执行结果;3)运行程序,输入一组升序排列的有序整数,察看并分析程序执行结果;4)运行程序,输入一组降序排列的有序整数,察看并分析程序执行结果。3.实验4_2:有序数列的数据插入问题编程分析,这个问题包括3个关键步骤:1)确定要插入数据的位置。这步操作使用的方法有很多种,如可以使用折半查找比较的方法,也可以使用顺序比较的方法;2)将自插入位置开始后的所有数据都向后移动一个位置,以便空出要插入数据的位置。若插入数据位置在原有所有数据之后,该步骤可省略,若插入数据位置在第一个数据之前,所有数据依次后移一个位置;3)将要插入的数据存储在该空位置上。参考程序://在升序排序的数组中插入数据程序,sy4_2.cpp#includeusingnamespacestd;#defineM10voidmain(){inta[M+1]={10,20,30,40,50,60,70,80,90,99};inti,n,p;cout<<"原始数列数据为:"<for(i=0;i{cout<}cout<"<cin>>n;a[M]=n;for(i=0;i<=M;i++)//确定要插入的位置pif(n<=a[i]){p=i;break;}for(i=M-1;i>=p;i--)//元素后移a[i+1]=a[i];a[p]=n;//插入数据cout<"<for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,输入一个比所有原始数据都小的数,察看并分析程序执行结果;2)运行程序,输入一个比所有原始数据都大的数,察看并分析程序执行结果;3)运行程序,输入一个介于原始数据最小数和最大数之间的整数,察看并分析程序执行结果;4)运行程序,输入原始数据中最小的数,察看并分析程序执行结果;5)运行程序,输入原始数据中最大的数,察看并分析程序执行结果;6)运行程序,输入原始数据中间的任何一个数,察看并分析程序执行结果。4.实验4_3:不用字符串处理函数将两个字符串连接,即将字符串b连接到字符串a的后面,变成字符串c。思考:如果将字符串S2连接到字符串S1的后面,且不需要第三个字符串变量作中间过度,如何实现?编程实现并测试。 实验5函数一、实验目的及要求主要叙述本节对应要掌握的主要概念和要解决的主要问题。1.掌握函数的定义方法,及函数调用的形式;2.掌握函数实参与形参的对应关系,“值传递”与“地址传递”的方式与区别;3.掌握函数的应用方法,熟悉函数的嵌套调用和递归调用的设计方法;4.了解全局变量、局部变量、动态变量及静态变量的概念和使用方法;5.综合应用顺序结构、选择结构和循环结构的设计方法设计函数程序。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤1.分析下面程序,给出运行结果。本题要求理解和掌握函数的定义和调用//实验5_1:sy5_1.cpp#includeusingnamespacestd;intf(inti){i=i*i-1;return(i);}voidmain(){inti;for(i=0;i<5;i++)cout<}程序运行结果:2.下面程序为选择排序,要求按如下步骤完成本题实验,理解和掌握函数参数的传递,理解函数的嵌套调用。//实验5_2:sy5_2.cpp#includeusingnamespacestd;#defineN10intmax(intx[],intn){inti,j;j=0;for(i=1;iif(x[i]>x[j])j=i;returnj;}voidsel_sort(intx[],intn){inti,j;for(i=n;i>1;i--){j=max(x,i);inttemp=x[j];x[j]=x[i-1];x[i-1]=temp;}}voidmain(){inta[N],i;for(i=0;icin>>a[i];sel_sort(a,N);for(i=0;icout<cout<}1)阅读程序,理解选择排序的思想2)上机编辑,调试程序3)用两组数据,给出程序运行结果,4)用单步执行,观察程序执行的流程5)画出流程图描述程序的实现6)问题:什么是函数的嵌套调用?3.函数的递归调用题目:采用递归方式实现二分查找{问题分析}二分查找算法可以描述为:对于一个已经从小到大排序的数据序列,用给定数据key与查找区间中央位置的数据比较,如果相等则表明查找成功;否则,如果key比中央位置的数据小,则在前半个区间用同样的方法继续查找;否则在后半个区间用同样的方法继续查找。因此,这是一个递归的过程,当查找区间的长度为0时,说明查找不成功。要求完成本题的填空并上机调试通过,理解递归调用的执行过程//实验5_3:sy5_3.cpp#includeusingnamespacestd;#defineNUM10intsearch(intvalue[],intkey,intlow,inthigh);voidmain(){intvalue[NUM],result,key;inti;cout<<"请输入十个从大到小的有序数列:"<for(i=0;icin>>value[i];/*输入从大到小的有序数列*/cout<<"请输入其中一个元素值:"<cin>>key;/*输入待查找的数值*/result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/if(result!=-1)cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
min=j;
temp=a[i];
a[i]=a[min];
a[min]=temp;
printf("\n排序后的数列:
for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,任意输入10个整数,察看并分析程序执行结果;2)运行程序,输入多于10个的整数,察看并分析程序执行结果;3)运行程序,输入一组升序排列的有序整数,察看并分析程序执行结果;4)运行程序,输入一组降序排列的有序整数,察看并分析程序执行结果。3.实验4_2:有序数列的数据插入问题编程分析,这个问题包括3个关键步骤:1)确定要插入数据的位置。这步操作使用的方法有很多种,如可以使用折半查找比较的方法,也可以使用顺序比较的方法;2)将自插入位置开始后的所有数据都向后移动一个位置,以便空出要插入数据的位置。若插入数据位置在原有所有数据之后,该步骤可省略,若插入数据位置在第一个数据之前,所有数据依次后移一个位置;3)将要插入的数据存储在该空位置上。参考程序://在升序排序的数组中插入数据程序,sy4_2.cpp#includeusingnamespacestd;#defineM10voidmain(){inta[M+1]={10,20,30,40,50,60,70,80,90,99};inti,n,p;cout<<"原始数列数据为:"<for(i=0;i{cout<}cout<"<cin>>n;a[M]=n;for(i=0;i<=M;i++)//确定要插入的位置pif(n<=a[i]){p=i;break;}for(i=M-1;i>=p;i--)//元素后移a[i+1]=a[i];a[p]=n;//插入数据cout<"<for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,输入一个比所有原始数据都小的数,察看并分析程序执行结果;2)运行程序,输入一个比所有原始数据都大的数,察看并分析程序执行结果;3)运行程序,输入一个介于原始数据最小数和最大数之间的整数,察看并分析程序执行结果;4)运行程序,输入原始数据中最小的数,察看并分析程序执行结果;5)运行程序,输入原始数据中最大的数,察看并分析程序执行结果;6)运行程序,输入原始数据中间的任何一个数,察看并分析程序执行结果。4.实验4_3:不用字符串处理函数将两个字符串连接,即将字符串b连接到字符串a的后面,变成字符串c。思考:如果将字符串S2连接到字符串S1的后面,且不需要第三个字符串变量作中间过度,如何实现?编程实现并测试。 实验5函数一、实验目的及要求主要叙述本节对应要掌握的主要概念和要解决的主要问题。1.掌握函数的定义方法,及函数调用的形式;2.掌握函数实参与形参的对应关系,“值传递”与“地址传递”的方式与区别;3.掌握函数的应用方法,熟悉函数的嵌套调用和递归调用的设计方法;4.了解全局变量、局部变量、动态变量及静态变量的概念和使用方法;5.综合应用顺序结构、选择结构和循环结构的设计方法设计函数程序。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤1.分析下面程序,给出运行结果。本题要求理解和掌握函数的定义和调用//实验5_1:sy5_1.cpp#includeusingnamespacestd;intf(inti){i=i*i-1;return(i);}voidmain(){inti;for(i=0;i<5;i++)cout<}程序运行结果:2.下面程序为选择排序,要求按如下步骤完成本题实验,理解和掌握函数参数的传递,理解函数的嵌套调用。//实验5_2:sy5_2.cpp#includeusingnamespacestd;#defineN10intmax(intx[],intn){inti,j;j=0;for(i=1;iif(x[i]>x[j])j=i;returnj;}voidsel_sort(intx[],intn){inti,j;for(i=n;i>1;i--){j=max(x,i);inttemp=x[j];x[j]=x[i-1];x[i-1]=temp;}}voidmain(){inta[N],i;for(i=0;icin>>a[i];sel_sort(a,N);for(i=0;icout<cout<}1)阅读程序,理解选择排序的思想2)上机编辑,调试程序3)用两组数据,给出程序运行结果,4)用单步执行,观察程序执行的流程5)画出流程图描述程序的实现6)问题:什么是函数的嵌套调用?3.函数的递归调用题目:采用递归方式实现二分查找{问题分析}二分查找算法可以描述为:对于一个已经从小到大排序的数据序列,用给定数据key与查找区间中央位置的数据比较,如果相等则表明查找成功;否则,如果key比中央位置的数据小,则在前半个区间用同样的方法继续查找;否则在后半个区间用同样的方法继续查找。因此,这是一个递归的过程,当查找区间的长度为0时,说明查找不成功。要求完成本题的填空并上机调试通过,理解递归调用的执行过程//实验5_3:sy5_3.cpp#includeusingnamespacestd;#defineNUM10intsearch(intvalue[],intkey,intlow,inthigh);voidmain(){intvalue[NUM],result,key;inti;cout<<"请输入十个从大到小的有序数列:"<for(i=0;icin>>value[i];/*输入从大到小的有序数列*/cout<<"请输入其中一个元素值:"<cin>>key;/*输入待查找的数值*/result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/if(result!=-1)cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
cout<}cout<}程序调试要求:1)运行程序,任意输入10个整数,察看并分析程序执行结果;2)运行程序,输入多于10个的整数,察看并分析程序执行结果;3)运行程序,输入一组升序排列的有序整数,察看并分析程序执行结果;4)运行程序,输入一组降序排列的有序整数,察看并分析程序执行结果。3.实验4_2:有序数列的数据插入问题编程分析,这个问题包括3个关键步骤:1)确定要插入数据的位置。这步操作使用的方法有很多种,如可以使用折半查找比较的方法,也可以使用顺序比较的方法;2)将自插入位置开始后的所有数据都向后移动一个位置,以便空出要插入数据的位置。若插入数据位置在原有所有数据之后,该步骤可省略,若插入数据位置在第一个数据之前,所有数据依次后移一个位置;3)将要插入的数据存储在该空位置上。参考程序://在升序排序的数组中插入数据程序,sy4_2.cpp#includeusingnamespacestd;#defineM10voidmain(){inta[M+1]={10,20,30,40,50,60,70,80,90,99};inti,n,p;cout<<"原始数列数据为:"<for(i=0;i{cout<}cout<"<cin>>n;a[M]=n;for(i=0;i<=M;i++)//确定要插入的位置pif(n<=a[i]){p=i;break;}for(i=M-1;i>=p;i--)//元素后移a[i+1]=a[i];a[p]=n;//插入数据cout<"<for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,输入一个比所有原始数据都小的数,察看并分析程序执行结果;2)运行程序,输入一个比所有原始数据都大的数,察看并分析程序执行结果;3)运行程序,输入一个介于原始数据最小数和最大数之间的整数,察看并分析程序执行结果;4)运行程序,输入原始数据中最小的数,察看并分析程序执行结果;5)运行程序,输入原始数据中最大的数,察看并分析程序执行结果;6)运行程序,输入原始数据中间的任何一个数,察看并分析程序执行结果。4.实验4_3:不用字符串处理函数将两个字符串连接,即将字符串b连接到字符串a的后面,变成字符串c。思考:如果将字符串S2连接到字符串S1的后面,且不需要第三个字符串变量作中间过度,如何实现?编程实现并测试。 实验5函数一、实验目的及要求主要叙述本节对应要掌握的主要概念和要解决的主要问题。1.掌握函数的定义方法,及函数调用的形式;2.掌握函数实参与形参的对应关系,“值传递”与“地址传递”的方式与区别;3.掌握函数的应用方法,熟悉函数的嵌套调用和递归调用的设计方法;4.了解全局变量、局部变量、动态变量及静态变量的概念和使用方法;5.综合应用顺序结构、选择结构和循环结构的设计方法设计函数程序。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤1.分析下面程序,给出运行结果。本题要求理解和掌握函数的定义和调用//实验5_1:sy5_1.cpp#includeusingnamespacestd;intf(inti){i=i*i-1;return(i);}voidmain(){inti;for(i=0;i<5;i++)cout<}程序运行结果:2.下面程序为选择排序,要求按如下步骤完成本题实验,理解和掌握函数参数的传递,理解函数的嵌套调用。//实验5_2:sy5_2.cpp#includeusingnamespacestd;#defineN10intmax(intx[],intn){inti,j;j=0;for(i=1;iif(x[i]>x[j])j=i;returnj;}voidsel_sort(intx[],intn){inti,j;for(i=n;i>1;i--){j=max(x,i);inttemp=x[j];x[j]=x[i-1];x[i-1]=temp;}}voidmain(){inta[N],i;for(i=0;icin>>a[i];sel_sort(a,N);for(i=0;icout<cout<}1)阅读程序,理解选择排序的思想2)上机编辑,调试程序3)用两组数据,给出程序运行结果,4)用单步执行,观察程序执行的流程5)画出流程图描述程序的实现6)问题:什么是函数的嵌套调用?3.函数的递归调用题目:采用递归方式实现二分查找{问题分析}二分查找算法可以描述为:对于一个已经从小到大排序的数据序列,用给定数据key与查找区间中央位置的数据比较,如果相等则表明查找成功;否则,如果key比中央位置的数据小,则在前半个区间用同样的方法继续查找;否则在后半个区间用同样的方法继续查找。因此,这是一个递归的过程,当查找区间的长度为0时,说明查找不成功。要求完成本题的填空并上机调试通过,理解递归调用的执行过程//实验5_3:sy5_3.cpp#includeusingnamespacestd;#defineNUM10intsearch(intvalue[],intkey,intlow,inthigh);voidmain(){intvalue[NUM],result,key;inti;cout<<"请输入十个从大到小的有序数列:"<for(i=0;icin>>value[i];/*输入从大到小的有序数列*/cout<<"请输入其中一个元素值:"<cin>>key;/*输入待查找的数值*/result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/if(result!=-1)cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
cout<}程序调试要求:1)运行程序,任意输入10个整数,察看并分析程序执行结果;2)运行程序,输入多于10个的整数,察看并分析程序执行结果;3)运行程序,输入一组升序排列的有序整数,察看并分析程序执行结果;4)运行程序,输入一组降序排列的有序整数,察看并分析程序执行结果。3.实验4_2:有序数列的数据插入问题编程分析,这个问题包括3个关键步骤:1)确定要插入数据的位置。这步操作使用的方法有很多种,如可以使用折半查找比较的方法,也可以使用顺序比较的方法;2)将自插入位置开始后的所有数据都向后移动一个位置,以便空出要插入数据的位置。若插入数据位置在原有所有数据之后,该步骤可省略,若插入数据位置在第一个数据之前,所有数据依次后移一个位置;3)将要插入的数据存储在该空位置上。参考程序://在升序排序的数组中插入数据程序,sy4_2.cpp#includeusingnamespacestd;#defineM10voidmain(){inta[M+1]={10,20,30,40,50,60,70,80,90,99};inti,n,p;cout<<"原始数列数据为:"<for(i=0;i{cout<}cout<"<cin>>n;a[M]=n;for(i=0;i<=M;i++)//确定要插入的位置pif(n<=a[i]){p=i;break;}for(i=M-1;i>=p;i--)//元素后移a[i+1]=a[i];a[p]=n;//插入数据cout<"<for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,输入一个比所有原始数据都小的数,察看并分析程序执行结果;2)运行程序,输入一个比所有原始数据都大的数,察看并分析程序执行结果;3)运行程序,输入一个介于原始数据最小数和最大数之间的整数,察看并分析程序执行结果;4)运行程序,输入原始数据中最小的数,察看并分析程序执行结果;5)运行程序,输入原始数据中最大的数,察看并分析程序执行结果;6)运行程序,输入原始数据中间的任何一个数,察看并分析程序执行结果。4.实验4_3:不用字符串处理函数将两个字符串连接,即将字符串b连接到字符串a的后面,变成字符串c。思考:如果将字符串S2连接到字符串S1的后面,且不需要第三个字符串变量作中间过度,如何实现?编程实现并测试。 实验5函数一、实验目的及要求主要叙述本节对应要掌握的主要概念和要解决的主要问题。1.掌握函数的定义方法,及函数调用的形式;2.掌握函数实参与形参的对应关系,“值传递”与“地址传递”的方式与区别;3.掌握函数的应用方法,熟悉函数的嵌套调用和递归调用的设计方法;4.了解全局变量、局部变量、动态变量及静态变量的概念和使用方法;5.综合应用顺序结构、选择结构和循环结构的设计方法设计函数程序。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤1.分析下面程序,给出运行结果。本题要求理解和掌握函数的定义和调用//实验5_1:sy5_1.cpp#includeusingnamespacestd;intf(inti){i=i*i-1;return(i);}voidmain(){inti;for(i=0;i<5;i++)cout<}程序运行结果:2.下面程序为选择排序,要求按如下步骤完成本题实验,理解和掌握函数参数的传递,理解函数的嵌套调用。//实验5_2:sy5_2.cpp#includeusingnamespacestd;#defineN10intmax(intx[],intn){inti,j;j=0;for(i=1;iif(x[i]>x[j])j=i;returnj;}voidsel_sort(intx[],intn){inti,j;for(i=n;i>1;i--){j=max(x,i);inttemp=x[j];x[j]=x[i-1];x[i-1]=temp;}}voidmain(){inta[N],i;for(i=0;icin>>a[i];sel_sort(a,N);for(i=0;icout<cout<}1)阅读程序,理解选择排序的思想2)上机编辑,调试程序3)用两组数据,给出程序运行结果,4)用单步执行,观察程序执行的流程5)画出流程图描述程序的实现6)问题:什么是函数的嵌套调用?3.函数的递归调用题目:采用递归方式实现二分查找{问题分析}二分查找算法可以描述为:对于一个已经从小到大排序的数据序列,用给定数据key与查找区间中央位置的数据比较,如果相等则表明查找成功;否则,如果key比中央位置的数据小,则在前半个区间用同样的方法继续查找;否则在后半个区间用同样的方法继续查找。因此,这是一个递归的过程,当查找区间的长度为0时,说明查找不成功。要求完成本题的填空并上机调试通过,理解递归调用的执行过程//实验5_3:sy5_3.cpp#includeusingnamespacestd;#defineNUM10intsearch(intvalue[],intkey,intlow,inthigh);voidmain(){intvalue[NUM],result,key;inti;cout<<"请输入十个从大到小的有序数列:"<for(i=0;icin>>value[i];/*输入从大到小的有序数列*/cout<<"请输入其中一个元素值:"<cin>>key;/*输入待查找的数值*/result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/if(result!=-1)cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
程序调试要求:
1)运行程序,任意输入10个整数,察看并分析程序执行结果;
2)运行程序,输入多于10个的整数,察看并分析程序执行结果;
3)运行程序,输入一组升序排列的有序整数,察看并分析程序执行结果;
4)运行程序,输入一组降序排列的有序整数,察看并分析程序执行结果。
3.实验4_2:
有序数列的数据插入问题
编程分析,这个问题包括3个关键步骤:
1)确定要插入数据的位置。
这步操作使用的方法有很多种,如可以使用折半查找比较的方法,也可以使用顺序比较的方法;2)将自插入位置开始后的所有数据都向后移动一个位置,以便空出要插入数据的位置。
若插入数据位置在原有所有数据之后,该步骤可省略,若插入数据位置在第一个数据之前,所有数据依次后移一个位置;3)将要插入的数据存储在该空位置上。
参考程序:
//在升序排序的数组中插入数据程序,sy4_2.cpp
inta[M+1]={10,20,30,40,50,60,70,80,90,99};
inti,n,p;
cout<<"原始数列数据为:
"<for(i=0;i{cout<}cout<"<cin>>n;a[M]=n;for(i=0;i<=M;i++)//确定要插入的位置pif(n<=a[i]){p=i;break;}for(i=M-1;i>=p;i--)//元素后移a[i+1]=a[i];a[p]=n;//插入数据cout<"<for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,输入一个比所有原始数据都小的数,察看并分析程序执行结果;2)运行程序,输入一个比所有原始数据都大的数,察看并分析程序执行结果;3)运行程序,输入一个介于原始数据最小数和最大数之间的整数,察看并分析程序执行结果;4)运行程序,输入原始数据中最小的数,察看并分析程序执行结果;5)运行程序,输入原始数据中最大的数,察看并分析程序执行结果;6)运行程序,输入原始数据中间的任何一个数,察看并分析程序执行结果。4.实验4_3:不用字符串处理函数将两个字符串连接,即将字符串b连接到字符串a的后面,变成字符串c。思考:如果将字符串S2连接到字符串S1的后面,且不需要第三个字符串变量作中间过度,如何实现?编程实现并测试。 实验5函数一、实验目的及要求主要叙述本节对应要掌握的主要概念和要解决的主要问题。1.掌握函数的定义方法,及函数调用的形式;2.掌握函数实参与形参的对应关系,“值传递”与“地址传递”的方式与区别;3.掌握函数的应用方法,熟悉函数的嵌套调用和递归调用的设计方法;4.了解全局变量、局部变量、动态变量及静态变量的概念和使用方法;5.综合应用顺序结构、选择结构和循环结构的设计方法设计函数程序。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤1.分析下面程序,给出运行结果。本题要求理解和掌握函数的定义和调用//实验5_1:sy5_1.cpp#includeusingnamespacestd;intf(inti){i=i*i-1;return(i);}voidmain(){inti;for(i=0;i<5;i++)cout<}程序运行结果:2.下面程序为选择排序,要求按如下步骤完成本题实验,理解和掌握函数参数的传递,理解函数的嵌套调用。//实验5_2:sy5_2.cpp#includeusingnamespacestd;#defineN10intmax(intx[],intn){inti,j;j=0;for(i=1;iif(x[i]>x[j])j=i;returnj;}voidsel_sort(intx[],intn){inti,j;for(i=n;i>1;i--){j=max(x,i);inttemp=x[j];x[j]=x[i-1];x[i-1]=temp;}}voidmain(){inta[N],i;for(i=0;icin>>a[i];sel_sort(a,N);for(i=0;icout<cout<}1)阅读程序,理解选择排序的思想2)上机编辑,调试程序3)用两组数据,给出程序运行结果,4)用单步执行,观察程序执行的流程5)画出流程图描述程序的实现6)问题:什么是函数的嵌套调用?3.函数的递归调用题目:采用递归方式实现二分查找{问题分析}二分查找算法可以描述为:对于一个已经从小到大排序的数据序列,用给定数据key与查找区间中央位置的数据比较,如果相等则表明查找成功;否则,如果key比中央位置的数据小,则在前半个区间用同样的方法继续查找;否则在后半个区间用同样的方法继续查找。因此,这是一个递归的过程,当查找区间的长度为0时,说明查找不成功。要求完成本题的填空并上机调试通过,理解递归调用的执行过程//实验5_3:sy5_3.cpp#includeusingnamespacestd;#defineNUM10intsearch(intvalue[],intkey,intlow,inthigh);voidmain(){intvalue[NUM],result,key;inti;cout<<"请输入十个从大到小的有序数列:"<for(i=0;icin>>value[i];/*输入从大到小的有序数列*/cout<<"请输入其中一个元素值:"<cin>>key;/*输入待查找的数值*/result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/if(result!=-1)cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
for(i=0;i{cout<}cout<"<cin>>n;a[M]=n;for(i=0;i<=M;i++)//确定要插入的位置pif(n<=a[i]){p=i;break;}for(i=M-1;i>=p;i--)//元素后移a[i+1]=a[i];a[p]=n;//插入数据cout<"<for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,输入一个比所有原始数据都小的数,察看并分析程序执行结果;2)运行程序,输入一个比所有原始数据都大的数,察看并分析程序执行结果;3)运行程序,输入一个介于原始数据最小数和最大数之间的整数,察看并分析程序执行结果;4)运行程序,输入原始数据中最小的数,察看并分析程序执行结果;5)运行程序,输入原始数据中最大的数,察看并分析程序执行结果;6)运行程序,输入原始数据中间的任何一个数,察看并分析程序执行结果。4.实验4_3:不用字符串处理函数将两个字符串连接,即将字符串b连接到字符串a的后面,变成字符串c。思考:如果将字符串S2连接到字符串S1的后面,且不需要第三个字符串变量作中间过度,如何实现?编程实现并测试。 实验5函数一、实验目的及要求主要叙述本节对应要掌握的主要概念和要解决的主要问题。1.掌握函数的定义方法,及函数调用的形式;2.掌握函数实参与形参的对应关系,“值传递”与“地址传递”的方式与区别;3.掌握函数的应用方法,熟悉函数的嵌套调用和递归调用的设计方法;4.了解全局变量、局部变量、动态变量及静态变量的概念和使用方法;5.综合应用顺序结构、选择结构和循环结构的设计方法设计函数程序。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤1.分析下面程序,给出运行结果。本题要求理解和掌握函数的定义和调用//实验5_1:sy5_1.cpp#includeusingnamespacestd;intf(inti){i=i*i-1;return(i);}voidmain(){inti;for(i=0;i<5;i++)cout<}程序运行结果:2.下面程序为选择排序,要求按如下步骤完成本题实验,理解和掌握函数参数的传递,理解函数的嵌套调用。//实验5_2:sy5_2.cpp#includeusingnamespacestd;#defineN10intmax(intx[],intn){inti,j;j=0;for(i=1;iif(x[i]>x[j])j=i;returnj;}voidsel_sort(intx[],intn){inti,j;for(i=n;i>1;i--){j=max(x,i);inttemp=x[j];x[j]=x[i-1];x[i-1]=temp;}}voidmain(){inta[N],i;for(i=0;icin>>a[i];sel_sort(a,N);for(i=0;icout<cout<}1)阅读程序,理解选择排序的思想2)上机编辑,调试程序3)用两组数据,给出程序运行结果,4)用单步执行,观察程序执行的流程5)画出流程图描述程序的实现6)问题:什么是函数的嵌套调用?3.函数的递归调用题目:采用递归方式实现二分查找{问题分析}二分查找算法可以描述为:对于一个已经从小到大排序的数据序列,用给定数据key与查找区间中央位置的数据比较,如果相等则表明查找成功;否则,如果key比中央位置的数据小,则在前半个区间用同样的方法继续查找;否则在后半个区间用同样的方法继续查找。因此,这是一个递归的过程,当查找区间的长度为0时,说明查找不成功。要求完成本题的填空并上机调试通过,理解递归调用的执行过程//实验5_3:sy5_3.cpp#includeusingnamespacestd;#defineNUM10intsearch(intvalue[],intkey,intlow,inthigh);voidmain(){intvalue[NUM],result,key;inti;cout<<"请输入十个从大到小的有序数列:"<for(i=0;icin>>value[i];/*输入从大到小的有序数列*/cout<<"请输入其中一个元素值:"<cin>>key;/*输入待查找的数值*/result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/if(result!=-1)cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
cout<}cout<"<cin>>n;a[M]=n;for(i=0;i<=M;i++)//确定要插入的位置pif(n<=a[i]){p=i;break;}for(i=M-1;i>=p;i--)//元素后移a[i+1]=a[i];a[p]=n;//插入数据cout<"<for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,输入一个比所有原始数据都小的数,察看并分析程序执行结果;2)运行程序,输入一个比所有原始数据都大的数,察看并分析程序执行结果;3)运行程序,输入一个介于原始数据最小数和最大数之间的整数,察看并分析程序执行结果;4)运行程序,输入原始数据中最小的数,察看并分析程序执行结果;5)运行程序,输入原始数据中最大的数,察看并分析程序执行结果;6)运行程序,输入原始数据中间的任何一个数,察看并分析程序执行结果。4.实验4_3:不用字符串处理函数将两个字符串连接,即将字符串b连接到字符串a的后面,变成字符串c。思考:如果将字符串S2连接到字符串S1的后面,且不需要第三个字符串变量作中间过度,如何实现?编程实现并测试。 实验5函数一、实验目的及要求主要叙述本节对应要掌握的主要概念和要解决的主要问题。1.掌握函数的定义方法,及函数调用的形式;2.掌握函数实参与形参的对应关系,“值传递”与“地址传递”的方式与区别;3.掌握函数的应用方法,熟悉函数的嵌套调用和递归调用的设计方法;4.了解全局变量、局部变量、动态变量及静态变量的概念和使用方法;5.综合应用顺序结构、选择结构和循环结构的设计方法设计函数程序。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤1.分析下面程序,给出运行结果。本题要求理解和掌握函数的定义和调用//实验5_1:sy5_1.cpp#includeusingnamespacestd;intf(inti){i=i*i-1;return(i);}voidmain(){inti;for(i=0;i<5;i++)cout<}程序运行结果:2.下面程序为选择排序,要求按如下步骤完成本题实验,理解和掌握函数参数的传递,理解函数的嵌套调用。//实验5_2:sy5_2.cpp#includeusingnamespacestd;#defineN10intmax(intx[],intn){inti,j;j=0;for(i=1;iif(x[i]>x[j])j=i;returnj;}voidsel_sort(intx[],intn){inti,j;for(i=n;i>1;i--){j=max(x,i);inttemp=x[j];x[j]=x[i-1];x[i-1]=temp;}}voidmain(){inta[N],i;for(i=0;icin>>a[i];sel_sort(a,N);for(i=0;icout<cout<}1)阅读程序,理解选择排序的思想2)上机编辑,调试程序3)用两组数据,给出程序运行结果,4)用单步执行,观察程序执行的流程5)画出流程图描述程序的实现6)问题:什么是函数的嵌套调用?3.函数的递归调用题目:采用递归方式实现二分查找{问题分析}二分查找算法可以描述为:对于一个已经从小到大排序的数据序列,用给定数据key与查找区间中央位置的数据比较,如果相等则表明查找成功;否则,如果key比中央位置的数据小,则在前半个区间用同样的方法继续查找;否则在后半个区间用同样的方法继续查找。因此,这是一个递归的过程,当查找区间的长度为0时,说明查找不成功。要求完成本题的填空并上机调试通过,理解递归调用的执行过程//实验5_3:sy5_3.cpp#includeusingnamespacestd;#defineNUM10intsearch(intvalue[],intkey,intlow,inthigh);voidmain(){intvalue[NUM],result,key;inti;cout<<"请输入十个从大到小的有序数列:"<for(i=0;icin>>value[i];/*输入从大到小的有序数列*/cout<<"请输入其中一个元素值:"<cin>>key;/*输入待查找的数值*/result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/if(result!=-1)cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
cout<"<cin>>n;a[M]=n;for(i=0;i<=M;i++)//确定要插入的位置pif(n<=a[i]){p=i;break;}for(i=M-1;i>=p;i--)//元素后移a[i+1]=a[i];a[p]=n;//插入数据cout<"<for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,输入一个比所有原始数据都小的数,察看并分析程序执行结果;2)运行程序,输入一个比所有原始数据都大的数,察看并分析程序执行结果;3)运行程序,输入一个介于原始数据最小数和最大数之间的整数,察看并分析程序执行结果;4)运行程序,输入原始数据中最小的数,察看并分析程序执行结果;5)运行程序,输入原始数据中最大的数,察看并分析程序执行结果;6)运行程序,输入原始数据中间的任何一个数,察看并分析程序执行结果。4.实验4_3:不用字符串处理函数将两个字符串连接,即将字符串b连接到字符串a的后面,变成字符串c。思考:如果将字符串S2连接到字符串S1的后面,且不需要第三个字符串变量作中间过度,如何实现?编程实现并测试。 实验5函数一、实验目的及要求主要叙述本节对应要掌握的主要概念和要解决的主要问题。1.掌握函数的定义方法,及函数调用的形式;2.掌握函数实参与形参的对应关系,“值传递”与“地址传递”的方式与区别;3.掌握函数的应用方法,熟悉函数的嵌套调用和递归调用的设计方法;4.了解全局变量、局部变量、动态变量及静态变量的概念和使用方法;5.综合应用顺序结构、选择结构和循环结构的设计方法设计函数程序。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤1.分析下面程序,给出运行结果。本题要求理解和掌握函数的定义和调用//实验5_1:sy5_1.cpp#includeusingnamespacestd;intf(inti){i=i*i-1;return(i);}voidmain(){inti;for(i=0;i<5;i++)cout<}程序运行结果:2.下面程序为选择排序,要求按如下步骤完成本题实验,理解和掌握函数参数的传递,理解函数的嵌套调用。//实验5_2:sy5_2.cpp#includeusingnamespacestd;#defineN10intmax(intx[],intn){inti,j;j=0;for(i=1;iif(x[i]>x[j])j=i;returnj;}voidsel_sort(intx[],intn){inti,j;for(i=n;i>1;i--){j=max(x,i);inttemp=x[j];x[j]=x[i-1];x[i-1]=temp;}}voidmain(){inta[N],i;for(i=0;icin>>a[i];sel_sort(a,N);for(i=0;icout<cout<}1)阅读程序,理解选择排序的思想2)上机编辑,调试程序3)用两组数据,给出程序运行结果,4)用单步执行,观察程序执行的流程5)画出流程图描述程序的实现6)问题:什么是函数的嵌套调用?3.函数的递归调用题目:采用递归方式实现二分查找{问题分析}二分查找算法可以描述为:对于一个已经从小到大排序的数据序列,用给定数据key与查找区间中央位置的数据比较,如果相等则表明查找成功;否则,如果key比中央位置的数据小,则在前半个区间用同样的方法继续查找;否则在后半个区间用同样的方法继续查找。因此,这是一个递归的过程,当查找区间的长度为0时,说明查找不成功。要求完成本题的填空并上机调试通过,理解递归调用的执行过程//实验5_3:sy5_3.cpp#includeusingnamespacestd;#defineNUM10intsearch(intvalue[],intkey,intlow,inthigh);voidmain(){intvalue[NUM],result,key;inti;cout<<"请输入十个从大到小的有序数列:"<for(i=0;icin>>value[i];/*输入从大到小的有序数列*/cout<<"请输入其中一个元素值:"<cin>>key;/*输入待查找的数值*/result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/if(result!=-1)cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
"<cin>>n;a[M]=n;for(i=0;i<=M;i++)//确定要插入的位置pif(n<=a[i]){p=i;break;}for(i=M-1;i>=p;i--)//元素后移a[i+1]=a[i];a[p]=n;//插入数据cout<"<for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,输入一个比所有原始数据都小的数,察看并分析程序执行结果;2)运行程序,输入一个比所有原始数据都大的数,察看并分析程序执行结果;3)运行程序,输入一个介于原始数据最小数和最大数之间的整数,察看并分析程序执行结果;4)运行程序,输入原始数据中最小的数,察看并分析程序执行结果;5)运行程序,输入原始数据中最大的数,察看并分析程序执行结果;6)运行程序,输入原始数据中间的任何一个数,察看并分析程序执行结果。4.实验4_3:不用字符串处理函数将两个字符串连接,即将字符串b连接到字符串a的后面,变成字符串c。思考:如果将字符串S2连接到字符串S1的后面,且不需要第三个字符串变量作中间过度,如何实现?编程实现并测试。 实验5函数一、实验目的及要求主要叙述本节对应要掌握的主要概念和要解决的主要问题。1.掌握函数的定义方法,及函数调用的形式;2.掌握函数实参与形参的对应关系,“值传递”与“地址传递”的方式与区别;3.掌握函数的应用方法,熟悉函数的嵌套调用和递归调用的设计方法;4.了解全局变量、局部变量、动态变量及静态变量的概念和使用方法;5.综合应用顺序结构、选择结构和循环结构的设计方法设计函数程序。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤1.分析下面程序,给出运行结果。本题要求理解和掌握函数的定义和调用//实验5_1:sy5_1.cpp#includeusingnamespacestd;intf(inti){i=i*i-1;return(i);}voidmain(){inti;for(i=0;i<5;i++)cout<}程序运行结果:2.下面程序为选择排序,要求按如下步骤完成本题实验,理解和掌握函数参数的传递,理解函数的嵌套调用。//实验5_2:sy5_2.cpp#includeusingnamespacestd;#defineN10intmax(intx[],intn){inti,j;j=0;for(i=1;iif(x[i]>x[j])j=i;returnj;}voidsel_sort(intx[],intn){inti,j;for(i=n;i>1;i--){j=max(x,i);inttemp=x[j];x[j]=x[i-1];x[i-1]=temp;}}voidmain(){inta[N],i;for(i=0;icin>>a[i];sel_sort(a,N);for(i=0;icout<cout<}1)阅读程序,理解选择排序的思想2)上机编辑,调试程序3)用两组数据,给出程序运行结果,4)用单步执行,观察程序执行的流程5)画出流程图描述程序的实现6)问题:什么是函数的嵌套调用?3.函数的递归调用题目:采用递归方式实现二分查找{问题分析}二分查找算法可以描述为:对于一个已经从小到大排序的数据序列,用给定数据key与查找区间中央位置的数据比较,如果相等则表明查找成功;否则,如果key比中央位置的数据小,则在前半个区间用同样的方法继续查找;否则在后半个区间用同样的方法继续查找。因此,这是一个递归的过程,当查找区间的长度为0时,说明查找不成功。要求完成本题的填空并上机调试通过,理解递归调用的执行过程//实验5_3:sy5_3.cpp#includeusingnamespacestd;#defineNUM10intsearch(intvalue[],intkey,intlow,inthigh);voidmain(){intvalue[NUM],result,key;inti;cout<<"请输入十个从大到小的有序数列:"<for(i=0;icin>>value[i];/*输入从大到小的有序数列*/cout<<"请输入其中一个元素值:"<cin>>key;/*输入待查找的数值*/result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/if(result!=-1)cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
cin>>n;
a[M]=n;
for(i=0;i<=M;i++)//确定要插入的位置p
if(n<=a[i])
p=i;
break;
for(i=M-1;i>=p;i--)//元素后移
a[i+1]=a[i];
a[p]=n;//插入数据
cout<"<for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,输入一个比所有原始数据都小的数,察看并分析程序执行结果;2)运行程序,输入一个比所有原始数据都大的数,察看并分析程序执行结果;3)运行程序,输入一个介于原始数据最小数和最大数之间的整数,察看并分析程序执行结果;4)运行程序,输入原始数据中最小的数,察看并分析程序执行结果;5)运行程序,输入原始数据中最大的数,察看并分析程序执行结果;6)运行程序,输入原始数据中间的任何一个数,察看并分析程序执行结果。4.实验4_3:不用字符串处理函数将两个字符串连接,即将字符串b连接到字符串a的后面,变成字符串c。思考:如果将字符串S2连接到字符串S1的后面,且不需要第三个字符串变量作中间过度,如何实现?编程实现并测试。 实验5函数一、实验目的及要求主要叙述本节对应要掌握的主要概念和要解决的主要问题。1.掌握函数的定义方法,及函数调用的形式;2.掌握函数实参与形参的对应关系,“值传递”与“地址传递”的方式与区别;3.掌握函数的应用方法,熟悉函数的嵌套调用和递归调用的设计方法;4.了解全局变量、局部变量、动态变量及静态变量的概念和使用方法;5.综合应用顺序结构、选择结构和循环结构的设计方法设计函数程序。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤1.分析下面程序,给出运行结果。本题要求理解和掌握函数的定义和调用//实验5_1:sy5_1.cpp#includeusingnamespacestd;intf(inti){i=i*i-1;return(i);}voidmain(){inti;for(i=0;i<5;i++)cout<}程序运行结果:2.下面程序为选择排序,要求按如下步骤完成本题实验,理解和掌握函数参数的传递,理解函数的嵌套调用。//实验5_2:sy5_2.cpp#includeusingnamespacestd;#defineN10intmax(intx[],intn){inti,j;j=0;for(i=1;iif(x[i]>x[j])j=i;returnj;}voidsel_sort(intx[],intn){inti,j;for(i=n;i>1;i--){j=max(x,i);inttemp=x[j];x[j]=x[i-1];x[i-1]=temp;}}voidmain(){inta[N],i;for(i=0;icin>>a[i];sel_sort(a,N);for(i=0;icout<cout<}1)阅读程序,理解选择排序的思想2)上机编辑,调试程序3)用两组数据,给出程序运行结果,4)用单步执行,观察程序执行的流程5)画出流程图描述程序的实现6)问题:什么是函数的嵌套调用?3.函数的递归调用题目:采用递归方式实现二分查找{问题分析}二分查找算法可以描述为:对于一个已经从小到大排序的数据序列,用给定数据key与查找区间中央位置的数据比较,如果相等则表明查找成功;否则,如果key比中央位置的数据小,则在前半个区间用同样的方法继续查找;否则在后半个区间用同样的方法继续查找。因此,这是一个递归的过程,当查找区间的长度为0时,说明查找不成功。要求完成本题的填空并上机调试通过,理解递归调用的执行过程//实验5_3:sy5_3.cpp#includeusingnamespacestd;#defineNUM10intsearch(intvalue[],intkey,intlow,inthigh);voidmain(){intvalue[NUM],result,key;inti;cout<<"请输入十个从大到小的有序数列:"<for(i=0;icin>>value[i];/*输入从大到小的有序数列*/cout<<"请输入其中一个元素值:"<cin>>key;/*输入待查找的数值*/result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/if(result!=-1)cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
"<for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,输入一个比所有原始数据都小的数,察看并分析程序执行结果;2)运行程序,输入一个比所有原始数据都大的数,察看并分析程序执行结果;3)运行程序,输入一个介于原始数据最小数和最大数之间的整数,察看并分析程序执行结果;4)运行程序,输入原始数据中最小的数,察看并分析程序执行结果;5)运行程序,输入原始数据中最大的数,察看并分析程序执行结果;6)运行程序,输入原始数据中间的任何一个数,察看并分析程序执行结果。4.实验4_3:不用字符串处理函数将两个字符串连接,即将字符串b连接到字符串a的后面,变成字符串c。思考:如果将字符串S2连接到字符串S1的后面,且不需要第三个字符串变量作中间过度,如何实现?编程实现并测试。 实验5函数一、实验目的及要求主要叙述本节对应要掌握的主要概念和要解决的主要问题。1.掌握函数的定义方法,及函数调用的形式;2.掌握函数实参与形参的对应关系,“值传递”与“地址传递”的方式与区别;3.掌握函数的应用方法,熟悉函数的嵌套调用和递归调用的设计方法;4.了解全局变量、局部变量、动态变量及静态变量的概念和使用方法;5.综合应用顺序结构、选择结构和循环结构的设计方法设计函数程序。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤1.分析下面程序,给出运行结果。本题要求理解和掌握函数的定义和调用//实验5_1:sy5_1.cpp#includeusingnamespacestd;intf(inti){i=i*i-1;return(i);}voidmain(){inti;for(i=0;i<5;i++)cout<}程序运行结果:2.下面程序为选择排序,要求按如下步骤完成本题实验,理解和掌握函数参数的传递,理解函数的嵌套调用。//实验5_2:sy5_2.cpp#includeusingnamespacestd;#defineN10intmax(intx[],intn){inti,j;j=0;for(i=1;iif(x[i]>x[j])j=i;returnj;}voidsel_sort(intx[],intn){inti,j;for(i=n;i>1;i--){j=max(x,i);inttemp=x[j];x[j]=x[i-1];x[i-1]=temp;}}voidmain(){inta[N],i;for(i=0;icin>>a[i];sel_sort(a,N);for(i=0;icout<cout<}1)阅读程序,理解选择排序的思想2)上机编辑,调试程序3)用两组数据,给出程序运行结果,4)用单步执行,观察程序执行的流程5)画出流程图描述程序的实现6)问题:什么是函数的嵌套调用?3.函数的递归调用题目:采用递归方式实现二分查找{问题分析}二分查找算法可以描述为:对于一个已经从小到大排序的数据序列,用给定数据key与查找区间中央位置的数据比较,如果相等则表明查找成功;否则,如果key比中央位置的数据小,则在前半个区间用同样的方法继续查找;否则在后半个区间用同样的方法继续查找。因此,这是一个递归的过程,当查找区间的长度为0时,说明查找不成功。要求完成本题的填空并上机调试通过,理解递归调用的执行过程//实验5_3:sy5_3.cpp#includeusingnamespacestd;#defineNUM10intsearch(intvalue[],intkey,intlow,inthigh);voidmain(){intvalue[NUM],result,key;inti;cout<<"请输入十个从大到小的有序数列:"<for(i=0;icin>>value[i];/*输入从大到小的有序数列*/cout<<"请输入其中一个元素值:"<cin>>key;/*输入待查找的数值*/result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/if(result!=-1)cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
for(i=0;i{cout<}cout<}程序调试要求:1)运行程序,输入一个比所有原始数据都小的数,察看并分析程序执行结果;2)运行程序,输入一个比所有原始数据都大的数,察看并分析程序执行结果;3)运行程序,输入一个介于原始数据最小数和最大数之间的整数,察看并分析程序执行结果;4)运行程序,输入原始数据中最小的数,察看并分析程序执行结果;5)运行程序,输入原始数据中最大的数,察看并分析程序执行结果;6)运行程序,输入原始数据中间的任何一个数,察看并分析程序执行结果。4.实验4_3:不用字符串处理函数将两个字符串连接,即将字符串b连接到字符串a的后面,变成字符串c。思考:如果将字符串S2连接到字符串S1的后面,且不需要第三个字符串变量作中间过度,如何实现?编程实现并测试。 实验5函数一、实验目的及要求主要叙述本节对应要掌握的主要概念和要解决的主要问题。1.掌握函数的定义方法,及函数调用的形式;2.掌握函数实参与形参的对应关系,“值传递”与“地址传递”的方式与区别;3.掌握函数的应用方法,熟悉函数的嵌套调用和递归调用的设计方法;4.了解全局变量、局部变量、动态变量及静态变量的概念和使用方法;5.综合应用顺序结构、选择结构和循环结构的设计方法设计函数程序。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤1.分析下面程序,给出运行结果。本题要求理解和掌握函数的定义和调用//实验5_1:sy5_1.cpp#includeusingnamespacestd;intf(inti){i=i*i-1;return(i);}voidmain(){inti;for(i=0;i<5;i++)cout<}程序运行结果:2.下面程序为选择排序,要求按如下步骤完成本题实验,理解和掌握函数参数的传递,理解函数的嵌套调用。//实验5_2:sy5_2.cpp#includeusingnamespacestd;#defineN10intmax(intx[],intn){inti,j;j=0;for(i=1;iif(x[i]>x[j])j=i;returnj;}voidsel_sort(intx[],intn){inti,j;for(i=n;i>1;i--){j=max(x,i);inttemp=x[j];x[j]=x[i-1];x[i-1]=temp;}}voidmain(){inta[N],i;for(i=0;icin>>a[i];sel_sort(a,N);for(i=0;icout<cout<}1)阅读程序,理解选择排序的思想2)上机编辑,调试程序3)用两组数据,给出程序运行结果,4)用单步执行,观察程序执行的流程5)画出流程图描述程序的实现6)问题:什么是函数的嵌套调用?3.函数的递归调用题目:采用递归方式实现二分查找{问题分析}二分查找算法可以描述为:对于一个已经从小到大排序的数据序列,用给定数据key与查找区间中央位置的数据比较,如果相等则表明查找成功;否则,如果key比中央位置的数据小,则在前半个区间用同样的方法继续查找;否则在后半个区间用同样的方法继续查找。因此,这是一个递归的过程,当查找区间的长度为0时,说明查找不成功。要求完成本题的填空并上机调试通过,理解递归调用的执行过程//实验5_3:sy5_3.cpp#includeusingnamespacestd;#defineNUM10intsearch(intvalue[],intkey,intlow,inthigh);voidmain(){intvalue[NUM],result,key;inti;cout<<"请输入十个从大到小的有序数列:"<for(i=0;icin>>value[i];/*输入从大到小的有序数列*/cout<<"请输入其中一个元素值:"<cin>>key;/*输入待查找的数值*/result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/if(result!=-1)cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
cout<}cout<}程序调试要求:1)运行程序,输入一个比所有原始数据都小的数,察看并分析程序执行结果;2)运行程序,输入一个比所有原始数据都大的数,察看并分析程序执行结果;3)运行程序,输入一个介于原始数据最小数和最大数之间的整数,察看并分析程序执行结果;4)运行程序,输入原始数据中最小的数,察看并分析程序执行结果;5)运行程序,输入原始数据中最大的数,察看并分析程序执行结果;6)运行程序,输入原始数据中间的任何一个数,察看并分析程序执行结果。4.实验4_3:不用字符串处理函数将两个字符串连接,即将字符串b连接到字符串a的后面,变成字符串c。思考:如果将字符串S2连接到字符串S1的后面,且不需要第三个字符串变量作中间过度,如何实现?编程实现并测试。 实验5函数一、实验目的及要求主要叙述本节对应要掌握的主要概念和要解决的主要问题。1.掌握函数的定义方法,及函数调用的形式;2.掌握函数实参与形参的对应关系,“值传递”与“地址传递”的方式与区别;3.掌握函数的应用方法,熟悉函数的嵌套调用和递归调用的设计方法;4.了解全局变量、局部变量、动态变量及静态变量的概念和使用方法;5.综合应用顺序结构、选择结构和循环结构的设计方法设计函数程序。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤1.分析下面程序,给出运行结果。本题要求理解和掌握函数的定义和调用//实验5_1:sy5_1.cpp#includeusingnamespacestd;intf(inti){i=i*i-1;return(i);}voidmain(){inti;for(i=0;i<5;i++)cout<}程序运行结果:2.下面程序为选择排序,要求按如下步骤完成本题实验,理解和掌握函数参数的传递,理解函数的嵌套调用。//实验5_2:sy5_2.cpp#includeusingnamespacestd;#defineN10intmax(intx[],intn){inti,j;j=0;for(i=1;iif(x[i]>x[j])j=i;returnj;}voidsel_sort(intx[],intn){inti,j;for(i=n;i>1;i--){j=max(x,i);inttemp=x[j];x[j]=x[i-1];x[i-1]=temp;}}voidmain(){inta[N],i;for(i=0;icin>>a[i];sel_sort(a,N);for(i=0;icout<cout<}1)阅读程序,理解选择排序的思想2)上机编辑,调试程序3)用两组数据,给出程序运行结果,4)用单步执行,观察程序执行的流程5)画出流程图描述程序的实现6)问题:什么是函数的嵌套调用?3.函数的递归调用题目:采用递归方式实现二分查找{问题分析}二分查找算法可以描述为:对于一个已经从小到大排序的数据序列,用给定数据key与查找区间中央位置的数据比较,如果相等则表明查找成功;否则,如果key比中央位置的数据小,则在前半个区间用同样的方法继续查找;否则在后半个区间用同样的方法继续查找。因此,这是一个递归的过程,当查找区间的长度为0时,说明查找不成功。要求完成本题的填空并上机调试通过,理解递归调用的执行过程//实验5_3:sy5_3.cpp#includeusingnamespacestd;#defineNUM10intsearch(intvalue[],intkey,intlow,inthigh);voidmain(){intvalue[NUM],result,key;inti;cout<<"请输入十个从大到小的有序数列:"<for(i=0;icin>>value[i];/*输入从大到小的有序数列*/cout<<"请输入其中一个元素值:"<cin>>key;/*输入待查找的数值*/result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/if(result!=-1)cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
cout<}程序调试要求:1)运行程序,输入一个比所有原始数据都小的数,察看并分析程序执行结果;2)运行程序,输入一个比所有原始数据都大的数,察看并分析程序执行结果;3)运行程序,输入一个介于原始数据最小数和最大数之间的整数,察看并分析程序执行结果;4)运行程序,输入原始数据中最小的数,察看并分析程序执行结果;5)运行程序,输入原始数据中最大的数,察看并分析程序执行结果;6)运行程序,输入原始数据中间的任何一个数,察看并分析程序执行结果。4.实验4_3:不用字符串处理函数将两个字符串连接,即将字符串b连接到字符串a的后面,变成字符串c。思考:如果将字符串S2连接到字符串S1的后面,且不需要第三个字符串变量作中间过度,如何实现?编程实现并测试。 实验5函数一、实验目的及要求主要叙述本节对应要掌握的主要概念和要解决的主要问题。1.掌握函数的定义方法,及函数调用的形式;2.掌握函数实参与形参的对应关系,“值传递”与“地址传递”的方式与区别;3.掌握函数的应用方法,熟悉函数的嵌套调用和递归调用的设计方法;4.了解全局变量、局部变量、动态变量及静态变量的概念和使用方法;5.综合应用顺序结构、选择结构和循环结构的设计方法设计函数程序。二、实验设备与平台1.实验设备:计算机;2.平台:WindowsXP操作系统,VisualC++6.0。三、实验内容及步骤1.分析下面程序,给出运行结果。本题要求理解和掌握函数的定义和调用//实验5_1:sy5_1.cpp#includeusingnamespacestd;intf(inti){i=i*i-1;return(i);}voidmain(){inti;for(i=0;i<5;i++)cout<}程序运行结果:2.下面程序为选择排序,要求按如下步骤完成本题实验,理解和掌握函数参数的传递,理解函数的嵌套调用。//实验5_2:sy5_2.cpp#includeusingnamespacestd;#defineN10intmax(intx[],intn){inti,j;j=0;for(i=1;iif(x[i]>x[j])j=i;returnj;}voidsel_sort(intx[],intn){inti,j;for(i=n;i>1;i--){j=max(x,i);inttemp=x[j];x[j]=x[i-1];x[i-1]=temp;}}voidmain(){inta[N],i;for(i=0;icin>>a[i];sel_sort(a,N);for(i=0;icout<cout<}1)阅读程序,理解选择排序的思想2)上机编辑,调试程序3)用两组数据,给出程序运行结果,4)用单步执行,观察程序执行的流程5)画出流程图描述程序的实现6)问题:什么是函数的嵌套调用?3.函数的递归调用题目:采用递归方式实现二分查找{问题分析}二分查找算法可以描述为:对于一个已经从小到大排序的数据序列,用给定数据key与查找区间中央位置的数据比较,如果相等则表明查找成功;否则,如果key比中央位置的数据小,则在前半个区间用同样的方法继续查找;否则在后半个区间用同样的方法继续查找。因此,这是一个递归的过程,当查找区间的长度为0时,说明查找不成功。要求完成本题的填空并上机调试通过,理解递归调用的执行过程//实验5_3:sy5_3.cpp#includeusingnamespacestd;#defineNUM10intsearch(intvalue[],intkey,intlow,inthigh);voidmain(){intvalue[NUM],result,key;inti;cout<<"请输入十个从大到小的有序数列:"<for(i=0;icin>>value[i];/*输入从大到小的有序数列*/cout<<"请输入其中一个元素值:"<cin>>key;/*输入待查找的数值*/result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/if(result!=-1)cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
1)运行程序,输入一个比所有原始数据都小的数,察看并分析程序执行结果;
2)运行程序,输入一个比所有原始数据都大的数,察看并分析程序执行结果;
3)运行程序,输入一个介于原始数据最小数和最大数之间的整数,察看并分析程序执行结果;
4)运行程序,输入原始数据中最小的数,察看并分析程序执行结果;
5)运行程序,输入原始数据中最大的数,察看并分析程序执行结果;
6)运行程序,输入原始数据中间的任何一个数,察看并分析程序执行结果。
4.实验4_3:
不用字符串处理函数将两个字符串连接,即将字符串b连接到字符串a的后面,变成字符串c。
如果将字符串S2连接到字符串S1的后面,且不需要第三个字符串变量作中间过度,如何实现?
编程实现并测试。
实验5函数
主要叙述本节对应要掌握的主要概念和要解决的主要问题。
1.掌握函数的定义方法,及函数调用的形式;
2.掌握函数实参与形参的对应关系,“值传递”与“地址传递”的方式与区别;
3.掌握函数的应用方法,熟悉函数的嵌套调用和递归调用的设计方法;
4.了解全局变量、局部变量、动态变量及静态变量的概念和使用方法;
5.综合应用顺序结构、选择结构和循环结构的设计方法设计函数程序。
1.分析下面程序,给出运行结果。
本题要求理解和掌握函数的定义和调用
//实验5_1:
sy5_1.cpp
intf(inti)
{i=i*i-1;
return(i);
inti;
for(i=0;i<5;i++)
cout<
程序运行结果:
2.下面程序为选择排序,要求按如下步骤完成本题实验,理解和掌握函数参数的传递,理解函数的嵌套调用。
//实验5_2:
sy5_2.cpp
#defineN10
intmax(intx[],intn)
inti,j;
j=0;
for(i=1;iif(x[i]>x[j])j=i;returnj;}voidsel_sort(intx[],intn){inti,j;for(i=n;i>1;i--){j=max(x,i);inttemp=x[j];x[j]=x[i-1];x[i-1]=temp;}}voidmain(){inta[N],i;for(i=0;icin>>a[i];sel_sort(a,N);for(i=0;icout<cout<}1)阅读程序,理解选择排序的思想2)上机编辑,调试程序3)用两组数据,给出程序运行结果,4)用单步执行,观察程序执行的流程5)画出流程图描述程序的实现6)问题:什么是函数的嵌套调用?3.函数的递归调用题目:采用递归方式实现二分查找{问题分析}二分查找算法可以描述为:对于一个已经从小到大排序的数据序列,用给定数据key与查找区间中央位置的数据比较,如果相等则表明查找成功;否则,如果key比中央位置的数据小,则在前半个区间用同样的方法继续查找;否则在后半个区间用同样的方法继续查找。因此,这是一个递归的过程,当查找区间的长度为0时,说明查找不成功。要求完成本题的填空并上机调试通过,理解递归调用的执行过程//实验5_3:sy5_3.cpp#includeusingnamespacestd;#defineNUM10intsearch(intvalue[],intkey,intlow,inthigh);voidmain(){intvalue[NUM],result,key;inti;cout<<"请输入十个从大到小的有序数列:"<for(i=0;icin>>value[i];/*输入从大到小的有序数列*/cout<<"请输入其中一个元素值:"<cin>>key;/*输入待查找的数值*/result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/if(result!=-1)cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
if(x[i]>x[j])j=i;
returnj;
voidsel_sort(intx[],intn)
for(i=n;i>1;i--)
{j=max(x,i);inttemp=x[j];x[j]=x[i-1];x[i-1]=temp;}
inta[N],i;
for(i=0;icin>>a[i];sel_sort(a,N);for(i=0;icout<cout<}1)阅读程序,理解选择排序的思想2)上机编辑,调试程序3)用两组数据,给出程序运行结果,4)用单步执行,观察程序执行的流程5)画出流程图描述程序的实现6)问题:什么是函数的嵌套调用?3.函数的递归调用题目:采用递归方式实现二分查找{问题分析}二分查找算法可以描述为:对于一个已经从小到大排序的数据序列,用给定数据key与查找区间中央位置的数据比较,如果相等则表明查找成功;否则,如果key比中央位置的数据小,则在前半个区间用同样的方法继续查找;否则在后半个区间用同样的方法继续查找。因此,这是一个递归的过程,当查找区间的长度为0时,说明查找不成功。要求完成本题的填空并上机调试通过,理解递归调用的执行过程//实验5_3:sy5_3.cpp#includeusingnamespacestd;#defineNUM10intsearch(intvalue[],intkey,intlow,inthigh);voidmain(){intvalue[NUM],result,key;inti;cout<<"请输入十个从大到小的有序数列:"<for(i=0;icin>>value[i];/*输入从大到小的有序数列*/cout<<"请输入其中一个元素值:"<cin>>key;/*输入待查找的数值*/result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/if(result!=-1)cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
sel_sort(a,N);
for(i=0;icout<cout<}1)阅读程序,理解选择排序的思想2)上机编辑,调试程序3)用两组数据,给出程序运行结果,4)用单步执行,观察程序执行的流程5)画出流程图描述程序的实现6)问题:什么是函数的嵌套调用?3.函数的递归调用题目:采用递归方式实现二分查找{问题分析}二分查找算法可以描述为:对于一个已经从小到大排序的数据序列,用给定数据key与查找区间中央位置的数据比较,如果相等则表明查找成功;否则,如果key比中央位置的数据小,则在前半个区间用同样的方法继续查找;否则在后半个区间用同样的方法继续查找。因此,这是一个递归的过程,当查找区间的长度为0时,说明查找不成功。要求完成本题的填空并上机调试通过,理解递归调用的执行过程//实验5_3:sy5_3.cpp#includeusingnamespacestd;#defineNUM10intsearch(intvalue[],intkey,intlow,inthigh);voidmain(){intvalue[NUM],result,key;inti;cout<<"请输入十个从大到小的有序数列:"<for(i=0;icin>>value[i];/*输入从大到小的有序数列*/cout<<"请输入其中一个元素值:"<cin>>key;/*输入待查找的数值*/result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/if(result!=-1)cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
cout<cout<}1)阅读程序,理解选择排序的思想2)上机编辑,调试程序3)用两组数据,给出程序运行结果,4)用单步执行,观察程序执行的流程5)画出流程图描述程序的实现6)问题:什么是函数的嵌套调用?3.函数的递归调用题目:采用递归方式实现二分查找{问题分析}二分查找算法可以描述为:对于一个已经从小到大排序的数据序列,用给定数据key与查找区间中央位置的数据比较,如果相等则表明查找成功;否则,如果key比中央位置的数据小,则在前半个区间用同样的方法继续查找;否则在后半个区间用同样的方法继续查找。因此,这是一个递归的过程,当查找区间的长度为0时,说明查找不成功。要求完成本题的填空并上机调试通过,理解递归调用的执行过程//实验5_3:sy5_3.cpp#includeusingnamespacestd;#defineNUM10intsearch(intvalue[],intkey,intlow,inthigh);voidmain(){intvalue[NUM],result,key;inti;cout<<"请输入十个从大到小的有序数列:"<for(i=0;icin>>value[i];/*输入从大到小的有序数列*/cout<<"请输入其中一个元素值:"<cin>>key;/*输入待查找的数值*/result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/if(result!=-1)cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
cout<}1)阅读程序,理解选择排序的思想2)上机编辑,调试程序3)用两组数据,给出程序运行结果,4)用单步执行,观察程序执行的流程5)画出流程图描述程序的实现6)问题:什么是函数的嵌套调用?3.函数的递归调用题目:采用递归方式实现二分查找{问题分析}二分查找算法可以描述为:对于一个已经从小到大排序的数据序列,用给定数据key与查找区间中央位置的数据比较,如果相等则表明查找成功;否则,如果key比中央位置的数据小,则在前半个区间用同样的方法继续查找;否则在后半个区间用同样的方法继续查找。因此,这是一个递归的过程,当查找区间的长度为0时,说明查找不成功。要求完成本题的填空并上机调试通过,理解递归调用的执行过程//实验5_3:sy5_3.cpp#includeusingnamespacestd;#defineNUM10intsearch(intvalue[],intkey,intlow,inthigh);voidmain(){intvalue[NUM],result,key;inti;cout<<"请输入十个从大到小的有序数列:"<for(i=0;icin>>value[i];/*输入从大到小的有序数列*/cout<<"请输入其中一个元素值:"<cin>>key;/*输入待查找的数值*/result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/if(result!=-1)cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
1)阅读程序,理解选择排序的思想
2)上机编辑,调试程序
3)用两组数据,给出程序运行结果,
4)用单步执行,观察程序执行的流程
5)画出流程图描述程序的实现
6)问题:
什么是函数的嵌套调用?
3.函数的递归调用
题目:
采用递归方式实现二分查找
{问题分析}二分查找算法可以描述为:
对于一个已经从小到大排序的数据序列,用给定数据key与查找区间中央位置的数据比较,如果相等则表明查找成功;否则,如果key比中央位置的数据小,则在前半个区间用同样的方法继续查找;否则在后半个区间用同样的方法继续查找。
因此,这是一个递归的过程,当查找区间的长度为0时,说明查找不成功。
要求完成本题的填空并上机调试通过,理解递归调用的执行过程
//实验5_3:
sy5_3.cpp
#defineNUM10
intsearch(intvalue[],intkey,intlow,inthigh);
intvalue[NUM],result,key;
cout<<"请输入十个从大到小的有序数列:
"<for(i=0;icin>>value[i];/*输入从大到小的有序数列*/cout<<"请输入其中一个元素值:"<cin>>key;/*输入待查找的数值*/result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/if(result!=-1)cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
for(i=0;icin>>value[i];/*输入从大到小的有序数列*/cout<<"请输入其中一个元素值:"<cin>>key;/*输入待查找的数值*/result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/if(result!=-1)cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
cin>>value[i];/*输入从大到小的有序数列*/
cout<<"请输入其中一个元素值:
"<cin>>key;/*输入待查找的数值*/result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/if(result!=-1)cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
cin>>key;/*输入待查找的数值*/
result=search(value,key,0,NUM-1);/*调用二分查找函数进行查找*/
if(result!
=-1)
cout<<"第"<"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
"<elsecout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
else
cout<<"不能找到"<}intsearch((1)){intmid;if(low>high)return-1;/*查找区间为空*/mid=((2))/*求中间位置*/if(value[mid]==key)((3))/*得到查找的数据位置*/if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
intsearch(
(1))
{intmid;
if(low>high)return-1;/*查找区间为空*/
mid=(
(2))/*求中间位置*/
if(value[mid]==key)((3))/*得到查找的数据位置*/
if(keyelsereturn((4));}4.全局变量与局部变量及变量的存储类型1)全局变量与局部变量题目
elsereturn((4));
4.全局变量与局部变量及变量的存储类型
1)全局变量与局部变量
题目
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2