程序设计实验大纲_第1页
程序设计实验大纲_第2页
程序设计实验大纲_第3页
程序设计实验大纲_第4页
程序设计实验大纲_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、附件:“计算机程序设计”实验教学大纲英文名称:C+ Programming Language课程中文名称:计算机程序设计课程英文名称:Computer Programming课程编号:COMP1001实验学时:32学时,本课程总学时为64学时,实验学时占总学时的50%。学分:课程总学分为3适用专业:一、二年级学生先修课程:大学计算机基础开课学院:电信学院开课学期:春、秋季教材及实验指导书:1崔舒宁编著,Visual C2008程序设计,交大教材科,2012年一、实验课程简介本实验旨在使学生了解程序设计语言的基本知识,掌握程序设计的编程方法与调试技术。其实验内容分为二个部分,第一,介绍程序设计语

2、言基础,包括程序设计语言概述、数据类型、运算符和表达式、控制结构、数组类型、函数、编译预处理、结构体和共用体、指针和文件;第二部分为介绍面向对象技术,包括类和对象、继承与派生、多态性、模板。二、实验课性质、目的和任务性质:“计算机程序设计”是面向非计算机类各专业的必修计算机类基础课程,实验在这门课程的教学中具有重要的作用,是课程的重要组成部分。目的:帮助学生理解和掌握课程内容,训练学生的编程能力和程序调试能力。任务:(1)培养学生C/C+程序设计能力,涵盖C/C+的基本理论和知识。(2)软件测试与调试的能力,学会C/C+程序的基本调试技术。(3)分析问题、解决问题的能力。(4)独立撰写实验报告

3、的能力。三、实验课教学基本要求1C+语言基础知识掌握变量与常量的定义与使用方法;掌握基本数据类型和表达式的使用方法,掌握C+的基本语句。理解结构化和面向对象程序设计的基本思想和有关概念,掌握C+程序的基本框架和上机调试计算机程序的过程。2数组、指针与引用掌握数组的定义、初始化和访问方法;掌握字符串使用方法;理解指针和引用的概念,掌握指针使用方法,理解指针与数组的关系,了解动态内存管理方法。3函数掌握函数的定义与函数调用方法,理解变量的生命周期、作用域和存储类别(自动、静态、寄存器、外部),掌握C+库函数的使用方法。4类与对象的基础知识理解类与对象的基本概念,掌握类及其成员的声明、定义、访问方法

4、,对象的创建与使用方法;掌握构造函数与析构函数的定义与使用;掌握静态数据成员与静态成员函数的定义与使用。5类的复用掌握类的组合语法;掌握派生类的定义和访问权限,类的数据成员与成员函数的继承;理解多态性概念及虚函数机制的要点;了解运算符重载。6输入/输出流理解C+流的概念,掌握数据的格式输入输出,掌握文件的I/O操作。7综合程序设计能力掌握利用所学到的面向对象的程序设计方法,编制含有多个类的程序;掌握根据实际问题和给定的算法,设计类结构并编码实现,解决小型问题。8程序调试掌握C+程序调试的基本方法;理解程序错误的种类和产生的原因,掌握排除语法错误的基本技能;掌握程序调试的基本技能(如设置断点、单

5、步执行、查看中间运行结果等)。四、实验教学的内容与基本要求1实验项目名称:C+集成开发环境的使用实验目的:(1)掌握集成开发环境的使用方法;(2)了解+程序的基本特点。实验内容提要:(1)熟悉Visual C+集成开发环境。(2)编写一个计算矩形面积的程序。(3)编写乘法计算器程序。(4)编写生日卡程序,使其能够输入和显示日期。(5)使用梯形法计算下式定积分的值。(6)编写一个计算矩形面积的程序。2实验项目名称:基本数据类型及其运算实验目的:(1)掌握整型、长整型、浮点型、双精度型和字符型等数据类型;(2)掌握各种数据类型的基本概念;(3)掌握常数和变量的使用方法。实验内容提要:(1)输入三个

6、实数,检验其能否构成一个三角形。(2)输入两个角度值x、y,计算如下式子的值。(3)编写一个程序,要求完成以下要求:1) 提示用户输入任意的3个小数;2) 显示这三个小数;3) 将这三个小数相加,并显示其结果;4) 将结果按四舍五入方法转换成整数并显示。(4)从键盘输入任意三个整数,然后输出这三个数并计算其平均值。(5)编写一个程序,将字符串“Love”译成密码,译码方法采用替换加密法,其加密规则是:将原来的字母用字母表中其后面的第3个字母的来替换,如字母c就用f来替换,字母y用b来替换。提示:分别用4个字符变量来存储'L'、'o'、'v'和&#

7、39;e',利用ASCII表中字母的排列关系,按照译码方法对各个变量进行运算后输出即可。3实验项目名称:选择及循环程序设计实验目的:(1)掌握C+的选择结构语句的使用,如: ifelse, switch(2)掌握C+的循环结构语句的使用,如: while, dowhile, for.实验内容提要:(1)编写计算n的阶乘程序。(2)计算1!+2!+3!+10!。(3)编写程序求斐波那契数列的第n项和前n项之和。(4)编程求 。(5)用牛顿法求方程在1.5附近的根。(6)求解猴子吃桃问题。(7)编写一个程序,寻找用户输入的几个整数中的最小值。并假定用户输入的第一个数值指定后面要输入的数值个

8、数。例如:当用户输入数列为: 5 20 15 300 9 700时,程序应该能够找到最小数9(8)有一分数序列(即后一项的分母为前一项的分子,后项的分子为前一项分子与分母之和),求其前n项之和。(9)求a+aa+aaa+aaaa+. .+aa.a(n个),其中a为19之间的整数。例如:当a = 1, n = 3时,求1+11+111之和;当a = 5, n = 7时,求5555555555555555555555555555之和。(10)猜幻数游戏。由系统随机给出一个数字(即幻数),让游戏者去猜,如果猜对,则打印成功提示;否则,打印出错提示,并提示游戏者选择下一步动作,最多可以猜5次。4实验项

9、目名称:数组与字符串的输入和输出实验目的:(1)掌握一维、二维数组的定义和使用方法(2)掌握字符数组和字符串处理的库函数(3)掌握结构体类型的定义与使用方法实验内容提要:(1)使用数组来求斐波那挈数列的第n项和前n项之和。(2)编写程序计算矩阵的转置。(3)使用数组编写一个统计学生课程平均分的程序:输入6个学生的学号和3门课程的成绩(整数形式),统计每个学生3门课程的平均分(整数形式),最后输出统计结果。输出格式:学号高数英语体育平均分-(4)编写一个程序,要求用户输入一个十进制正整数,然后分别转换成为二进制数、八进制数和十六进制数输出。(5)输入10个字符到一维字符数组s中,将字符串置逆。即

10、s0与s9互换,s1与8互换,.,s4与s5互换,输出置逆后的数组s。(6)替换加密(恺撒加密法):加密规则是:将原来的小写字母用字母表中其后面的第3个字母的大写形式来替换,大写字母按同样规则用小写字母替换,对于字母表中最后的三个字母,可将字母表看成是首未衔接的。如字母c就用F来替换,字母y用B来替换。请将字符串“I love you”译成密码。5实验项目名称:函数的声明、定义和调用实验目的:(1)掌握函数定义及函数调用;(2)掌握函数间参数传递方式(值方式和引用方式);(3)掌握库函数的使用。实验内容提要:(1)编写字符串反转函数mystrrev( ),该函数的功能为将指定字符串中的字符顺序

11、颠倒排列。然后再编写主函数验证之。(2)编写一组求数组中最大最小元素的函数。(3)编写函数isprime(int a)用来判断变量a是否为素数,若是素数,函数返回1,否则返回0。调用该函数找出任意给定的n个整数中的素数。(4)打印出以下的杨辉三角形(要求打印出10行)11112113311464115101051 (5)用弦截法求一元方程在区间之间的一个根。(6)编写字符串查找函数。(7)编写一组函数来实现词频统计功能。6实验项目名称:指针的声明和使用实验目的:(1)掌握指针的概念,学会定义指针变量和使用指针变量进行间接引用;(2)掌握数组的指针和指向数组的指针变量;(3)掌握二维数组中行指针

12、的概念和使用。实验内容提要:(1)使用指针编写一个对整型数组进行排序的函数,排序方法使用例4-6的交换排序法(冒泡排序法)。(2)编写程序,将某一个输入的位数不确定的正整数按照标准的三位分节格式输出,例如,当用户输入82668634时,程序应该输出82,668,634。(3)编写程序,把10个整数1、2、10赋予某个int型数组,然后用int型指针输出该数组元素的值。(4)用指针编写一个程序,当输入一个字符串后,要求不仅能够统计其中字符的个数,还能分别指出其中大、小写字母、数字以及其他字符的个数。(5)编写一个函数, 用于将一个字符串转换为整型数值。其原型为: int atoi(char *s

13、tring); 其中参数string为待转换的字符串(其中包括正、负号和数字),返回值为转换结果。(6)编写一个函数,用于生成一个空白字符串,其原型为:char *mystrspc(char *string, int n);其中参数string为字符串,n为空白字符串的长度 (空格符的个数)。返回值为指向string的指针。7实验项目名称:函数和指针程序设计实验目的:(1)掌握函数调用的方法;(2)掌握函数的递归调用方法;(3)掌握函数调用中参数的值传递和地址传递方法和含义。实验内容提要:(1)使用递归算法编写如下程序:对于任意给定的实数X和整数k>0,计算Xk。(2)Ackermann

14、函数ack(m,n)由以下递归定义:ack(0, n)=n+1ack(m, 0)=ack(m-1, 1)ack(m, n)=ack(m-1, ack(m, n-1) 其中m>0, n>0编写一个计算此函数的递归程序。(3)使用递归算法编写求斐波那契数列的第n项的函数,并编出主函数进行验证。(4)编写一个求立方的函数cube,并重载它,使之可以对输入的整型量和实型量数值求立方。(5)重载判断两个数值大小的函数max,这些数值可能是整型数、实型数和字符型,函数的返回值为两个数值中的最大值。(6)编写一个函数,用于去掉字符串尾部的空格符,其原型为:char *mytrim(char *s

15、tring);其中参数string为字符串,返回值为指向string的指针。(7)编写一个函数,用于去掉字符串前面的空格,其原型为:char *myltrim(char *string);其中参数string为字符串,返回值为指向string的指针。(8)编写一个程序,当输入一个整数以后,可以转换成相应的英文单词输出。如:123转换成one hundred twenty three.(9)用牛顿法或者二分法编写一个求方程f(x)=0在区间a,b中的实根的函数, 其原型为: double equation(double (*func)(double), double a, double b, d

16、ouble eps);其中参数func, a和b分别为求根函数和区间两端点, eps为精度。8实验项目名称:结构体的使用实验目的:(1)掌握结构体、枚举等自定义数据类型的定义与使用方法。(2)理解并应用“自顶向下,逐步求精”的结构化程序设计方法来解决复杂问题。实验内容提要:(1)输入某小组7个人的姓名、性别、出生年份等信息,统计男女人数以及1988年以后(含1988年)出生的人数。(2)定义一个名为Circle(圆)的结构体,其数据成员是圆的外接矩形的左上角和右下角两点的坐标,计算该圆的面积。(3)读入5个用户的姓名和电话号码,按姓名的字典顺序排列后,输出每个用户的姓名和电话号码。(4)口袋中

17、有红、黄、蓝、白、黑五种颜色的小球若干个。如果每次都从口袋中取出3个不同颜色的小球。问有多少种取法?要求使用枚举类型来表示小球的颜色。(5)用自顶向下、逐步求精的程序设计方法找出210000之内的所有完全数。9实验项目名称:类的基本定义方法和使用实验目的:(1)掌握类的定义和使用。实验内容提要:(1)定义一个Dog类,包含name、age、sex、weight等属性以及对这些属性操作的方法。实现并测试这个类。(2)设计并测试一个名为Ellipse的椭圆类,其属性为外接矩形的左上角与右下角两个点的坐标,并能计算出椭圆的面积。(3)仿照Date类设计一个Time类,可以设置时间、进行时间的加减运算

18、、按各种可能的格式输出时间。(4)合并Date类和Time类为一个DateAndTime类,修改相应的成员函数,当时间递增到新的一天时,应能够修改日期值。10实验项目名称:构造函数和数据成员的初始化实验目的:(1)掌握构造函数的使用。(2)掌握指向对象的指针的使用。(3)了解析构函数。实验内容提要:(1)定义一个Dog类,包含name、age、sex、weight等属性,设计一个构造函数,可以对这些属性进行初始化。实现并测试这个类。(2)设计并测试一个名为Ellipse的椭圆类,其属性为其圆心坐标以及半长轴和半短轴的长度。设计一个构造函数对这些属性进行初始化,并通过成员函数计算出椭圆的面积。(

19、3)仿照Date类设计一个Time类,设计多个重载的构造函数,可以设置时间、进行时间的加减运算、按各种可能的格式输出时间。(4)合并Date类和Time类为一个DateAndTime类,修改相应的成员函数,当时间递增到新的一天时,应能够修改日期值。11实验项目名称:从一个类派生另一个类实验目的:(1)掌握不同继承方式下对基类的成员的访问的控制。实验内容提要:(1)从类Person中派生出一个教师类,新增的属性有:专业、职称和主讲课程(一门),并为这些属性定义相应的方法。(2)许多研究生既有学生的属性,又有教师的属性。试通过多重继承说明一个研究生类。(3)修改例11-5,从Point类中派生出一

20、个Line类。Line类增加一个数据成员EndPoint,计算线的长度。试比较一下与直接使用Point类来构造Line类的不同之处。(4)从Date类和Time类派生一个DateAndTime类,修改相应的成员函数,当时间递增到新的一天时,应能够修改日期值。12实验项目名称:虚函数的定义和运算符的重载实验目的:(1)掌握使用虚函数实现多态性;(2)掌握运算符重载的方法。实验内容提要:(1)定义一个类Base,该类含有虚函数display,然后定义它的两个派生类FirstB和SecondB,这两个派生类均含有公有成员函数display,在主程序中,定义指向基类Base的指针变量ptr,并分别定义

21、Base、FirstB、SecondB的对象b1、f1、s1,让ptr分别指向b1、f1、s1的起始地址,然后执行这些对象的成员函数display。(2)扩充例12-6,从中派生出一个正方形类和圆柱体类,写一个测试程序,输出正方形的面积和圆柱体的体积。提示:正方形数据成员:一个顶点和边长;圆柱体数据成员:圆和高。(3)扩充实例编程中的日期类,为Date类增加一个成员函数,可以判断一个日期是否是系统当前日期。从键盘输入你的生日,如果今天是你的生日则显示:“Happy Birthday!”,否则显示“还有xx天是你的生日”或“你的生日已经过去了xx天,明年的生日要再等yy天”。13实验项目名称:模

22、板与异常处理程序设计实验目的:(1)理解函数模板和类模板的概念。(2)能够编写包含函数模板和类模板的程序。(3)正确理解C+的异常处理机制。(4)学习异常处理的定义和执行过程。实验内容提要:(1)编写一个求绝对值的函数模板,并测试。(2)请将例4-6的冒泡排序法改写成模板函数并编写一个程序进行测试。(3)例13-6中所定义的通用栈类实际上是不完善的,如无法根据用户需求改变栈的大小,没有提供栈满溢出无法压入和空栈无法弹出提示等,请改进该程序。(4)C+中的数组类型比较简单,它的下标只能从0开始,没有负数下标,而且没有数组越界检查。请用类模板设计一个newArray类,该类的对象可以是整型、浮点型

23、、字符型等任何元素类型的数组,而且当访问数组成员时,如果下标越界,程序可以报错并终止。如下是一些例子:newArray <int> A1(3)/同传统类型的整型数组/包含5个元素的浮点型数组,其成员为A2-2, A2-1, A20, A21, A22newArray <float> A2(-2, 3) 请编写一个测试程序。(5)例5-1给出的求阶乘n!的函数,当用户的输入太大时(如50),会出现错误,请编写一个程序,使用异常处理机制来解决这一问题。14实验项目名称:标准库和输入输出流实验目的:(1)掌握C+语言输入和输出操作的方法;(2)掌握C+的流和流类库的使用方法。

24、实验内容提要:(1)编写一个程序,分别用不同的域宽(010)打印出整数12345和浮点数1.2345。观察当域宽小于数值的实际需要的域宽时会发生什么情况。(2)编写一个程序,将华氏温度0度212度转换为浮点型摄氏温度,浮点数精度为3。转换公式如下:Celsius = 5.0 / 9.0 * (Fahrenheit-32);输出用两个右对齐列,摄氏温度前面加上正负号。(3)编写一个程序,打印出ASCII字符集中码值为33126的字符的ASCII码表。要求输出十进制值、八进制值、十六进制值以及码值所表示的字符。(4)修改例14-9的程序,重载>>运算符,使其能够直接使用cin语句输入Date类对象。(5)编写一个程序,可以读入一个C+语言的源文件,每一行加上行号后保存到另一个后缀为.prn的同名文件中。15实验项目名称:综合程序设计实验目的:掌握利用所学到的面向对象的程序设计方法,编制含有多个类的程序;掌握根据实际问题和给定的算法,设计类结构并编码实现,解决小型问题。实验内容提要:编写一个简单电话管理程序。16实验项目名称:顺序表的操作实验目的:(1)掌握线性表的两种存储结构的C+ 定义:一种是顺

温馨提示

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

最新文档

评论

0/150

提交评论