程序设计基础实验指导书C++版.docx
- 文档编号:23049590
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:48
- 大小:165.54KB
程序设计基础实验指导书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简单的C程序设计、数据类型、运算符与表达式
一、实验目的及要求
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 #include usingnamespacestd; 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 #include usingnamespacestd; 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<=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.实验设备: 计算机; 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#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#include 2usingnamespacestd; 3voidmain() 4{ 5inti,s=0;//累加变量初始化为0 6for(i=1,i<=5,i++);//实现1—5的累加 7s=s+i; 8cout<<“s=”< 9} 问题拓展: 1)如果将原程序修改为用while语句来实现,请分析程序中存在的错误。 行号程序代码 1#include 2usingnamespacestd; 3voidmain() 4{ 5inti,s=0;//累加变量初始化为0 6while(i<=5); 7{ 8s=s+i; 9} 10cout<<“s=”< 11} 2)如果将原程序修改为用do…while语句来实现,请分析程序中存在的错误。 行号程序代码 1#include 2usingnamespacestd; 3voidmain() 4{ 5inti=1,s=0; 6do 7{ 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: 用选择法排序程序(升序程序) //用选择法排序程序(升序排序) #include usingnamespacestd; #defineM10 voidmain() { inta[M],i,j,min,temp; printf("请输入排序数据: \n"); for(i=0;i cin>>a[i]; printf("排序前数列: \n"); for(i=0;i { cout< } for(i=0;i { min=i; for(j=i+1;j 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 #include usingnamespacestd; #defineM10 voidmain() { 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++)//确定要插入的位置p if(n<=a[i]) { p=i; break; } for(i=M-1;i>=p;i--)//元素后移 a[i+1]=a[i]; a[p]=n;//插入数据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 基础 实验 指导书 C+