还剩23页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
《程序设计基础》实验指导书数学与计算机科学学院计算机工程教研室2012年3月1日实验环境介绍
一、创建程序的过程创建一个可执行程序要经过以下四个过程.
①源程序的书写与编辑;
②对源程序的编译;
③对源程序编译进行连接装配;
④运行程序
1、书写和编辑程序创建一个程序的第一步工作就是书写和编辑一个程序的源文件用来编写程序源文件的软件称为文本编辑器文本编辑器可以帮助输入、替换及储存字符数据计算机系统中的文本编辑器的种类非常多,有的编辑器可以写信、写报告、论文、书籍,有的却专门用来创建和编写源程序程序文本与其它文本的显著区别在于:程序是面向一行行的代码,而大多数文本处理则是面向字符用于编写、编译、连接程序的软件称为程序__环境
2、编译编写好的源程序必须翻译成机器语言,计算机才能执行绝大多数高级语言采用编译器来翻译一个源程序文件
3、链接程序一个高级语言程序由许多的子程序构成其中一些子程序是自己编写,并成为源程序的一部分然而,还有一些诸如输入/输出和数学函数的子程序存在于系统的库文件中,必须附加到自己编写的程序中链接器能够将所有这些子程序汇集到最终可执行程序中去
4、程序的执行一旦程序被链接好后,它就可以执行了为了执行程序可以使用操作系统命令,来将程序载入内存并执行将程序载人内存是由操作系统程序--载入程序来完成的它定位可执行程序,并将其读入内存一切准备好后,控制被交给程序,然后开始执行
二、用MicrosoftVisualC++
6.0编写程序当今许多程序编写软件都是集成__系统,它将程序的编辑、编译、链接和运行集成在同一个界面下这样的集成__环境种类很多,C语言的集成__环境常用的有TurboC
2.0/
3.
0、MicrosoftVisualC++
6.
0、DevC++等用MicrosoftvisualC++
6.0(本文简称VC6)建立一个程序要经过建立工程、建立C/C++源文件、集成化地编译和链接、运行程序等过程
1、VC6界面介绍VC6集成__环境界面如图2-1所示图2-1MicrosoftVisualC++
6.0集成__环境
2、创建工程VC6运用工程project来管理C/C++源程序文件因而,首先要建立自己的工程比如要建立一个名字为Lab1的工程步骤如下
①在VC6环境下用鼠标单击File,出现File下拉菜单,然后单击New
②在New对话框的Projects标签页的左面有16个项目,选择其中的Win32ConsoleApplication控制台程序
③在同一界面的ProjectName处输入Lab1
④在Location处输入一个存放工程的文件夹所在的路径例如F:\program(F盘的program文件夹)
⑤单击OK按钮就出现了Win32ConsoleApplicationstep1of1界面,选择Anemptyproject选项后单击Finish按钮
⑥出现NewProjectInfor__tion界面后,单击OK按钮,工程就建好了此时的工程是空的工程建好后,屏幕上方的标题栏文字变成了:Lab1-MicrosoftVisualC++屏幕左边的工作区出现了两个标签,一个标签为FileView单击FileView,在该标签的对话框中出现两行文字Workspa__lab11projectslab1files说明lab1就是上文建立的工程名单击lab1files前面的+号,则出现三个文件夹,一次为Sour__Files说明存储lab1工程中的所有源程序文件HeaderFiles说明存储lab1工程中的所有头文件Resour__Files说明存储lab1工程中的所有资源文件
3、创建源程序文件单击菜单栏的File,选择New在弹出的New对话框中的File标签中给出了MicrosoftC++能够建立的文件类型,共13个类型在此选择C++Sour__File,此时对话框右侧的Addtoproject前面的复选框内有一个√,并且__的下拉式选择框内出现了lab1说明我们当前正在建立的文件将要加入lab1工程在同一界面右侧File文本输入框中输入欲建立的文件的文件名,例如lab1-
1.cpp输入之后单击右__的OK按钮,完成了源程序文件的建立此时VC6的标题栏文字变成了:Lab1-MicrosoftVisualC++-[lab1-
1.cpp]工作区的FileView标签中的Sour__Files文件夹中出现了lab1-
1.cpp文件名,且编辑区由灰色变成了白色,并且有一个闪烁的黑色竖条状光标,提示书写程序的工作从这里开始(刚刚创建的文件是一个空文件,需要编程者自己输入文件的内容)程序书写编辑完成后按Ctrl+S键,将编好的程序存储在磁盘上(__File菜单中的S__e选项也可一存盘)
4、编译连接运行程序书写好的程序在运行前需要编译和连接按Ctrl+F7进行编译(编译时如果出错,错误信息出现在VC6界面下的输出窗口中根据输出的错误提示信息,编程者可在编辑区修改程序的相应之处,然后在编译)按F7件进行连接(连接时如果出错,错误信息出现在VC6界面下的输出窗口中根据输出的错误提示信息,编程者应在编辑区修改程序的相应之处,然后在编译)按F5运行程序,程序的运行结果会在控制台弹出的一个黑色窗口展示出来再次编写程序需要做的工作按照以上步骤编写、编译、运行完一个程序后,如果要编写一个新的程序,就必须关闭以前程序所在的工作区在File菜单下单击CloseWorkspa__关闭工作区,然后重新创建工程、文件这样才能编写一个新的程序,使得编写的程序在一个全新的工作环境中运行
三、使用VC6的单步程序执行功能程序经过编译形成二进制代码后,在执行的过程中从头到尾一气呵成,每条语句之间不会停顿但是,有时人们为了查找程序中编写上的一些逻辑错误,不得不将C程序逐条语句地执行,每执行一条语句,程序停顿,查看执行语句前后相关变量的变化,以便分析程序为了达到这个目的,许多C语言集成__环境都提供了程序的单步执行功能,方便程序员调试程序VC6的单步执行由功能键F10或F11来启动下图是启动后的界面图2-2MicrosoftVisualC++
6.0单步执行集成调试环境原来编辑窗口的左边多了一个黄色的右指向的空心箭头指向即将要执行的程序语句这时按一下F10或F11功能键,箭头所指语句立即执行,执行完后箭头指向下一个将要执行的语句如此反复即可将程序一条一条地执行在编辑窗口和输出窗口之间多了一个上下文Context窗口,该窗口的Context对话框中给出了当前正在执行的函数的名称,例如fint对话框的下面是当前函数所涉及的变量及其当前值的列表在每次按F10或F11功能键后都可以看都,列表中相关变量的值在变化如果遇到函数调用,那么Context对话框中的函数名称也有更替在通常情况下,功能键F10与F11的功能都是相同的,但是当一个表达式中有函数调用时,按F10只是简单的调用这个函数,而不单步跟踪到函数内部,而按F11键就会在调用函数的同时进入到这个函数的内部,对函数内部的语句逐条跟踪条执行提示在单步调用函数时一定要主要注意,不要在C语言系统提供的函数,上使用F11键例如:scanf、printf、log等函数因为这些函数不是你编写的,都是经过测试没有问题的,跟踪它们是浪费时间结束单步跟踪,__VC菜单栏的Debug菜单项中的StopDebuging,即可回到正常编辑状态实验一简单程序的编写与调试专业班级学号姓名实验学时2实验类型验证实验地点实验时间指导老师成绩教师批语年月日
1、实验目的了解集成__环境的使用方法,理解相关命令的含义,掌握编辑、编译、连接以及运行调试的方法,掌握程序的基本结构,掌握输入输出的方式
2、实验要求将程序输入到计算机、编译运行,用C语言的单步执行功能,跟踪程序的每一步,观察程序的执行顺序
3、实验内容1编写一个C程序,完成任意两个数的算术四则运算运行程序,察看并分析程序执行结果参考教材P8,例
1.22编写一个C程序,输入ABC数,输出其中最大值参考教材P8,例
1.3运行程序,察看并分析程序执行结果3将P33例
2.19程序输入到计算机中编译并运行察看并分析程序执行结果
4、实验总结实验二数据类型及表达式专业班级学号姓名实验学时2实验类型验证实验地点实验时间指导老师成绩教师批语年月日
1、实验目的进一步熟悉程序的编辑、编译、连接和运行过程,掌握程序设计的基本要素中的数据类型、变量、运算符以及表达式的运用
2、实验要求将程序输入到计算机、编译运行,用C语言的单步执行功能,跟踪程序的每一步,深刻理解变量及其值的含义,观察程序的执行顺序
3、实验内容1输入并运行以下程序,分析其运行结果#includestdio.hint__in{ inti=8j=10m=0n=0i=8;j=10;m=++i;n=j++;printfi=%dj=%dm=%dn=%d\nijmn;return0;}运行程序记录输出结果
①将第4行改为 m=i++;n=--j分析修改以后的变化情况
②将第4行改为m+=i++;n-=--j分析修改以后的变化情况2输入并运行以下程序,并回答思考题#includestdio.hint__in{unsignedshorta; shortintb=-1;a=b;printf%d\na;return0;}
①记录运行结果
②结合《导论》课程中有关数值表示及其存储格式的章节说明___是该结果?3输入下列程序,并编译运行,然后回答问题#includestdio.hint__in{inta=10b=25c=0;int*pa*pb*pc;pa=a;pb=b;pc=c;*pc=*pa+*pb;printfa=%db=%dc=%d\nabc;return0;}简要回答问题
①请将程序运行结果,原样照抄下来
②程序中变量pa、pb、pc各是么变量?它属于那种类型?
③在int*pa*pb*pc语句之后pa、pb、pc有值吗?如果有,它们的值各是什么?
④在“pa=a;pb=b;pc=c;”三条语句之后pa、pb、pc的值各是什么?它们与变量a、b、c有何关系?
⑤*pa、*pb、*pc是什么?它们有值吗?如果有,它们的值各是什么?___是这个值?
⑥在程序的输出语句后加入一条“printfa=%db=%dc=%d\n*pa*pb*pc;”输出语句原先的那条语句和新加入的这条输出结果相同吗?4编写程序输入华氏温度,求摄氏温度华氏转摄氏的公式为输入输出都要有文字提示和说明,输出保留2位小数请将编译通过的程序抄写在下边的空白处
4、实验总结实验三程序流程控制结构专业班级学号姓名实验学时2实验类型验证+简单设计实验地点实验时间指导老师成绩教师批语年月日
1、实验目的学会正确使用逻辑运算符和逻辑表达式以及关系运算符与关系表达式,熟练掌握 if语句和 switch语句,掌握在程序设计中灵活使用顺序结构和选择结构,掌握 while、for、do…while 循环结构的使用方法以及循环条件的使用;能够使用三种循环结构设计程序、分析程序并解决实际问题;掌握三种循环结构的差异和不同,能灵活地实现三种结构间的转换
2、实验内容1有一个函数 编写程序计算y的值用 scanf函数输入 x 的值分别为 x≤0,1x10,x≥10,输出 y的值运行程序,察看并分析程序执行结果请将编译通过的程序抄写在下边的空白处2给出一个不多于 5 位的正整数,要求求出它是几位数;分别输出每一位数;按逆序输出各位数字,例如原数为 5631,应输出为 1365运行程序,察看并分析程序执行结果3某人从汽车销售公司以分期付款的方式__一辆总价为
14.5万元的小客车约定__款为5万元,未付款部分以
5.8%的年利率按月计息,从买车后的第7个月开始每月付款3000元编写程序计算此人付清余款后最终支出了多少利息?先画流程图后写程序4一个人大代表选区,要从甲、乙、丙、丁4个候选人中选人大代表请编写一个计票程序先画出程序流程图后写程序
3、实验总结实验四模块化程序设计专业班级学号姓名实验学时2实验类型验证实验地点实验时间指导老师成绩教师批语年月日
1、实验目的掌握函数的定义方法,及函数调用的形式;掌握函数实参与形参的对应关系,“值传递”与“地址传递”的方式与区别;掌握函数的应用方法,熟悉函数的嵌套调用和递归调用的设计方法;了解全局变量、局部变量、动态变量及静态变量的概念和使用方法
2、实验内容1分析下面程序给出运行结果本题要求理解和掌握函数的定义和调用#include stdio.h int fint i ;void __in { int ij; for i=0;i5;i++{j=fi;printf%d%d ij;}} int fint i{returni*i1; }
①运行程序,察看并分析程序执行结果用单步执行的方式追踪程序的运行过程,并说明上述程序的执行方式
②函数void __in 中的变量i与函数int fint i中的变量i,是同一个变量吗?___?2下面程序为选择排序,要求按如下步骤完成本题实验,理解和掌握函数参数的传递理解函数的嵌套调用#includestdio.h#defineN10voidsel_sortintx[]intn;int__xintx[]intn;void__in{inta[N]i;fori=0;iN;i++scanf%da[i];sel_sortaN;fori=0;iN;i++printf%da[i];}voidsel_sortintx[]intn{intij;fori=n;i0;i--{j=__xxi;inttemp=x[j];x[j]=x[i-1];x[i-1]=temp;}}int__xintx[]intn{intij=0;fori=1;in;i++ifx[i]x[j]j=i;returnj;}
①上机编辑,调试程序;
②用两组数据,给出程序运行结果;将测试结果写在下面
③程序中有几个函数?它们之间的调用关系是什么?
④voidsel_sortintx[]intn与int__xintx[]intn两个函数在程序中的作用各是什么?
⑤用单步执行,观察程序执行的流程并用流程图描述程序的实现;并回答什么是函数的嵌套调用?注流程图以函数为模块来画3输入以下程序,编译运行并回答问题#includestdio.hvoidauto_staticvoid{intva=0;staticintvs=0;printfva=%dvs%d\nvavs;++va;++vs;}void__in{inti;fori=0;i5;i++auto_static;}
①函数voidauto_staticvoid中变量va与vs的数据类型是什么?他们的存储类别各是什么类别的?
②程序在每次调用voidauto_staticvoid时va与vs都初始化为0了,且都进行了相同的++运算,但是va与vs却有不同的值,这是___?请解释出现不同值的原因
3、实验总结实验五构造类型专业班级学号姓名实验学时4实验类型验证+简单设计实验地点实验时间指导老师成绩教师批语年月日
1、实验目的了解数组与数学矩阵的关系;掌握数组的定义、引用与初始化;理解二维数组数据的存储顺序;理解并掌握冒泡排序法、选择排序法;掌握结构体的概念;学会通过结构体成员来使用结构体;学会通过函数的参数使用结构体;学会结构体变量成员值的输出
2、实验内容1选择法排序程序#includestdio.h #define M 10 void __in { int a[M]ijmintemp; printf请输入排序数据\n; for i=0;iM;i++ scanf%da[i]; printf排序前数列\n; for i=0;iM;i++ printf%da[i]; for i=0;iM1;i++ { min=i; for j=i+1;jM;j++ if a[j]a[min] min=j; temp=a[i];a[i]=a[min];a[min]=temp; } printf\n排序后的数列\n; for i=0;iM;i++ printf%da[i]; printf\n; } 程序调试要求
①运行程序,任意输入 10 个整数,察看并分析程序执行结果;
②运行程序,输入多于 10 个的整数,察看并分析程序执行结果;
③运行程序,输入一组升序排列的有序整数,察看并分析程序执行结果;
④运行程序,输入一组降序排列的有序整数,察看并分析程序执行结果 2用冒泡排序法编程,参考教材P147例
6.3画出程序流程图运行程序,察看并分析程序执行结果3根据下面给出的数据结构编写一个程序,处理不少于5个工人的工资单,每个工人的工资单信息包括工号、姓名、底薪、计件工资、劳保补贴,总工资要求从键盘输入工人的数据,计算总工资,并输出工资单明细表;计算全体工人底薪的平均值,统计底薪高于平均值的人数structPerson{intsn;//工号charname
[20];//此字符串存放某个工人的姓名intsalary
[3];//这个数组存放底薪、计件工资、劳保补贴inttotal;//工资总额}worker
[5];
3、实验总结实验六算法设计专业班级学号姓名实验学时4实验类型设计实验地点实验时间指导老师成绩教师批语年月日
1、实验目的掌握递推法、迭代法、递归法、穷举法等算法的思想与作用,培养学生算法设计与算法分析的初步能力
2、实验要求每道题在编程序前必须先进行分析建模、写出算法或者画出流程图,然后编程
3、实验内容1某数列前三项的值分别为
1、
2、3从第四项开始每项的值是其前三项均值的整数部分再加1,编程实现求解此数列的第N项的值N102用牛顿迭代法求一元高次方程y=x3-5x2+16x-803用递归方法编写猴子吃桃问题4用穷举法帮助公安局分析案情,找出真正的作案嫌疑人公安局对一桩案件根据侦查结果确定了6名嫌疑人员,并对他们做出了如下的分析
①A、B至少有一人作案;
②A、E、F三人中至少有两人作案;
③A、D不可能是同案犯;
④B、C或同时作案或者与本案无关
⑤C、D中仅有一人作案;
⑥如果D没有作案,则E也不可能作案;请编写程序找出作案嫌疑人算法设计提示将6个作案嫌疑人分别用6个变量来表示(每个变量取值范围为0或1,1代表作案,0代表没作案)运用这6个变量逐一列出案件的上述6个推断的逻辑表达式,当这6个逻辑表达式同时为真时,其中的6个变量均有一个确定的值,相应变量值为1的那个人就是作案人求解6个逻辑判断同时为真的办法是将6个逻辑表达式综合成一个进行与运算的逻辑式,判断这个综合式的运算结果是否为1,如果为1,就可证明6个推断同时成立将上述所有的表达式以及对综合式的判断放入一个6重循环中;每个循环的控制变量就是代表6个嫌疑人的变量这时程序的主题框架就建立起来了
4、实验总结实验七学生成绩管理综合应用程序设计专业班级学号姓名实验学时8实验类型综合设计实验地点实验时间指导老师成绩教师批语年月日
1、实验目的运用已学知识完成一个综合系统的设计,掌握小型系统设计的基本方法,掌握文件的使用
2、实验内容完成学生成绩管理系统的综合设计与实验1对某校学生几门课程的考试成绩进行统一管理每个学生记录包括学号、姓名、年龄、性别、班级、语文、数学、英语、计算机成绩,默认以学号为序存放实现以下八种操作,以A、B、C、D、E、F为标志若设置菜单操作更佳A插入一个新的学生记录录入学生信息;B修改一个学生记录;C删除一个学生记录;D登记成绩;E____;F浏览全班成绩、查询某个人的成绩;G计算与统计(计算学生的总成绩,求每门课程的平均分,总成绩的平均分,统计每门课程的及格人数);H分别按学号、总成绩排序输出全班成绩表;2程序编写要求 数据类型的硬性要求
①用结构体类型来定义学生的学号、姓名、年龄、性别、班级、数学、英语、计算机成绩等相关信息的数据类型然后用该类型定义数组或者链表用来构造学生信息的实际存储空间
②所有数据均要求存入文件中,对文件的操作采用fread和fwrite等块读块写的二进制格式进行程序编写的硬性要求
①设计内容中提到的八个操作全部采用模块,其中模块F、G和H需要进一步的分解成若干模块,每个模块均采用函数来实现
②程序中不允许采用全局变量,所有变量均为局部变量;函数之间通讯参数来实现
③新生插入 通过给该生的学号来和原班上的学生的学号比较大小,若大就在后,若小则靠前排,将此生的信息保存下来
④查询成绩可以按姓名查、按学号两种方式查询编写程序要求的数据结构参考内容如下#includestdio.h#includestddef.h#includestddef.h#includestring.h#define__X10typedefstructstudent{/*定义结构体*/charname[__X];/*姓名*/intcode[__X];/*学号*/char___[__X];/*性别*/intchinese;/*语文*/int__the__tic;/*数学*/intenglish;/*英语*/intcomputer;/*计算机*/structstudent*next;/*结构体指针*/}STU;//以上定义了一个结构体类型STUSTU*head;/*定义头指针head*/工具栏状态栏菜单栏输出窗口项目工作区编辑区标题栏。