C++程序设计实验指导书.docx
- 文档编号:11208768
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:70
- 大小:47.01KB
C++程序设计实验指导书.docx
《C++程序设计实验指导书.docx》由会员分享,可在线阅读,更多相关《C++程序设计实验指导书.docx(70页珍藏版)》请在冰豆网上搜索。
C++程序设计实验指导书
C++程序设计实验指导书
前言
《C++程序设计》是软件工程、网络工程专业的一门专业基础课程,是程序设计的基础。
通过C++程序设计实验课,巩固学生对课堂上学习的编程基础知识的理解,培养学生逐步建立编程思路,树立编程思想,同时加强逻辑思维能力和程序调试的实践能力的培养。
该实验课主要进行C++语言结构化程序设计、面向对象程序设计的编程实践。
学生学习编写程序,上机实验是最佳的途径之一。
因此,实验环节的好坏是学生能否学好《C++程序设计》的关键。
为了更好地配合学生实验,特编写实验指导书。
一、实验目的
更好的理解C++程序的基本语法,掌握常见的程序设计方法,能够利用C++语言解决常见的问题,培养程序设计、程序调试能力。
二、实验要求
1、每次实验前学生必须根据试验内容认真准备实验程序及调试时所需的输入数据及预期输出数据。
2、独立完成或在指导教师的帮助下,完成实验项目,得出正确的实验结果。
3、遵守实验室规章制度、不缺席、按时上、下机。
4、实验学时内必须做数据结构的有关内容,不允许上网聊天或玩游戏,如发现上述现象,取消本次上机资格,平时成绩扣10分。
5、实验项目有一次未完成,扣5分,两次以上未完成者,平时成绩以零分记,不允许参加期末考试。
三、实验环境VC++6.0或其它C++集成环境
四、说明
1、所有实验项目布置在在线评测系统平台(OnlineJudgeSystem)上,校内访问IP:
59.73.73.133,每位学生需实名注册账号,并将完成的实验项目在平台上提交,平台能够实现自动评测。
2、各个实验项目中列出的实验只是其中的一部分,要求学生必须完成。
在线评测系统平台上的其它实验项目也必须完成80%以上,否则实验不合格。
五、参考书目
《C++程序设计实验指导书》,集体编写,辽宁科技大学软件学院
《C++程序设计》,余苏宁主编,高等教育出版社,2004年1月
《C++语言程序设计(第四版)》,郑莉,董江舟编著,清华大学出版社,2010年7月
《C++面向对象程序设计》,陈维兴,陈昕编著,人民邮电出版社,2010年10月
《C++程序设计》,谭浩强编著,清华大学出版社,2004年6月
《C++语言程序设计教程》,杨进才,沈显君,刘蓉编著,清华大学出版社,2006年9月
实验一控制语句
(1)
实验类型:
设计性
实验要求:
必修
实验学时:
2学时
【实验目的】
1、熟悉集成开发环境VisualC++,在此环境下能够创建C++程序。
2、熟练使用if语句和switch语句编程,同时进一步学习基本数据类型的定义和使用。
【实验内容】
1、已知分段函数:
通过键盘任意输入一个x,输出函数值的结果。
提示:
C++函数pow(x,y)表示数学表达式xy
2、输出任意一个年份及月份,输出该月的天数。
1,3,5,7,8,10,12月份,每月31天;4,6,9,11月份,每月30天;2月份,若年份为闰年,则29天,否则为平年28天。
闰年的条件判断详见第二章例题。
实验二控制语句
(2)
实验类型:
设计性
实验要求:
必修
实验学时:
2学时
【实验目的】
1、熟练掌握while循环和for循环语句的编程。
2、进一步学习基本数据类型的定义和使用。
【实验内容】
1、输入一个算术表达式,可以实现求两个整数的加、减、乘、除和取余运算。
提示:
可以利用switch语句实现。
2、输入一个数,判断是否为完数。
提示:
完数:
一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。
实验三控制语句(3)
实验类型:
设计性
实验要求:
必修
实验学时:
2学时
【实验目的】
1、熟练掌握三种结构混合使用的复杂编程。
2、进一步学习基本数据类型的定义、使用和数据输出格式的设计。
【实验内容】
1、求1000以内所有完数。
2、计算数列1/1-1/2+1/3-…+1/n,n值由用户自己输入。
实验四数组编程
实验类型:
设计性
实验要求:
必修
实验学时:
2学时
【实验目的】
1、掌握数组的概念,并弄清数组的存储结构。
2、掌握一维数组的定义、赋值和输入/输出的方法。
3、学会与数组有关的算法。
【实验内容】
1、输入一个字符串,求串长,要求自己编程实现,不允许使用求串长函数。
2、输入10个数,将指定数据x删除(x由键盘输入)后在输出结果。
3、输入10名学生成绩,将最高分与最低分位置互换。
4、输入3*3矩阵的元素,然后求对角线元素之和。
实验五指针编程
实验类型:
设计性
实验要求:
必修
实验学时:
2学时
【实验目的】
1、掌握指针的概念、指针变量的定义、使用以及指针的运算。
2、学会使用数组的指针和指向数组的指针变量。
【实验内容】
1、输入10个数据存储于一维数组中,找到其中的最大值、最小值,然后将其位置互换后再输出结果。
2、在10整数的数组中查找一个指定的元素x,存在则给出元素所在下标,否则给出失败信息。
3、输入10个数,实现在指定下标pos处插入数据x。
实验六函数编程
(1)
实验类型:
设计性
实验要求:
必修
实验学时:
2学时
【实验目的】
1、掌握函数的定义。
2、了解函数原型(函数声明)与函数定义的区别与联系。
3、掌握函数调用的基本方法和返回值的用法。
4、弄清值调用和引用调用在传递参数时的区别。
【实验内容】
1、主函数中输入10个成绩,编写函数求平均分,并在主函数中调用并输出结果。
2、主函数中输入一个整数,编写函数判断是否为素数,并在主函数中调用并输出结果。
3、输入10个数据存储到数组中,实现查找一个指定数据x的数组下标,要求查找部分写为函数形式
实验七函数编程
(2)
实验类型:
设计性
实验要求:
必修
实验学时:
2学时
【实验目的】
1、掌握函数调用的基本方法和返回值的用法。
2、掌握用递归函数解决实际问题。
3、掌握函数的参数传递。
【实验内容】
1、输入一个正整数,逆序输出它的各个数位。
例如:
输入123,输出321。
要求利用递归函数实现。
2、编写函数判断是否为素数,在主函数中利用该函数输出100-200之间所有素数。
3、用函数实现将一个数组中元素逆序存放并输出。
提示:
(1)利用指针做逆序存放,可以定义两个指针变量*p,*q
(2)令p指向数组的第1个元素,即p=a
(3)令q指向数组的最后一个元素,即q=a+n-1
(4)在p ①将所指的数组元素交换,②两个指针同时向数组的中间移动 实验八类与对象编程 (1) 实验类型: 设计性 实验要求: 必修 实验学时: 2学时 【实验目的】 1、了解C++面向对象程序设计的基本概念以及了解C++程序的基本结构。 2、了解类,对象的概念,掌握类及类中成员函数的定义及使用方法。 3、掌握对象的定义及使用方法。 4、了解构造函数,析构函数,拷贝构造函数的作用,特点,定义方式及使用方法。 【实验内容】 1、定义一个三角形类Ctriangle,求三角形面积和周长。 要求给出main函数进行测试。 2、设计一个person类,其属性包括name和id,其中name属性为指针,分别利用person类构造函数和拷贝构造函数建立对象,打印每个person类对象的信息。 要求分别编写浅拷贝构造函数和深拷贝构造函数调试程序。 提示: 要在构造函数中为person对象的name属性分配动态内存,在析构函数中,释放掉申请的动态内存。 注意不要让同一块动态内存被释放多次。 实验九类与对象编程 (2) 实验类型: 设计性 实验要求: 必修 实验学时: 2学时 【实验目的】 1、巩固类和对象的定义及使用方法。 2、熟练掌握类及类中成员函数的定义及使用方法。 【实验内容】 1、为List类增加下列成员函数,在主函数中验证新增成员函数功能。 (1)查找位置 intLocate(intx); 功能: 查找x在顺序表中的位置,返回下标。 (2)构造函数 SeqList(intsize,inta[],intn); 功能: 动态申请长度为size的数组,将size赋给MaxSize,length赋值为0。 并用长度为n数组a初始化新申请的动态数组。 (3)逆置函数 voidInvert(); 功能: 将data中的各元素逆置存放。 实验十面向对象编程 (1) 实验类型: 设计性 实验要求: 必修 实验学时: 2学时 【实验目的】 1.了解类的继承的概念和按继承方式的继承分类及各种继承方式的特点。 2.了解并掌握派生类对象的构造和析构过程。 3.了解并掌握单继承,多继承的定义方式。 4.了解多继承情况下产生的二义性及解决办法。 5.了解虚基类的定义,原理和用法,了解存在虚基类的情况下,派生类对象的构造和析构过程。 【实验内容】 1、定义点类Point;定义一个线段类Line,数据成员start和end是Point类的对象,表示线段的端点;定义多边形类Polygon,数据成员borders[MAX_BorderNumber]为Line的对象数组,表示多边形的边,编写成员函数GetPerimeter计算多边形的边长。 从类Polygon派生出三角形类Triangle,并增加成员函数GetArea计算三角形的面积。 实验十一面向对象编程 (2) 实验类型: 设计性 实验要求: 必修 实验学时: 2学时 【实验目的】 1、了解多态性的相关概念。 2、了解运算符重载原则,掌握常用运算符重载方法。 3、了解虚函数的定义,原理,特点,使用方法。 4、了解纯虚函数,抽象类概念,定义,作用,使用方法。 5、了解虚析构函数。 【实验内容】 1、定义一个抽象类shape,应用抽象类shape派生圆类circle、圆内接正方形类in_square和外切正方形类ex_square。 求圆、圆内接正方形和外切正方形的面积和周长。 2、实现Array类,Complex类的运算符重载 实验十二类模板编程 实验类型: 设计性 实验要求: 必修 实验学时: 2学时 【实验目的】 1、理解类模板的概念。 2、掌握类模板的定义、实例化过程。 3、掌握类模板运用。 【实验内容】 1、为List类增加下列成员函数。 (1)查找位置 intLocate(intx); 功能: 查找x在顺序表中的位置,返回下标。 (2)构造函数 List(intsize,inta[],intn); 功能: 动态申请长度为size的数组,将size赋给MaxSize,length赋值为0。 并用长度为n数组a初始化新申请的动态数组。 (3)逆置函数 voidInvert(); 功能: 将data中的各元素逆置存放。 将修改后的List类设计为类模板,在主函数中验证。 (4)实现学生管理系统的插入、删除、排序、查找等 实验十三I/O流编程 实验类型: 设计性 实验要求: 必修 实验学时: 2学时 【实验目的】 1、了解i/o流类族的基本结构及类族中各个类的作用。 2、掌握常用的i/o流类成员函数和数据成员。 掌握利用标准输入输出对象和用户自定义流对象调用i/o流类成员。 3、了解常用输入输出格式控制方法。 4、了解文件流的使用方法,掌握读,写,遍历文本文件和二进制文件。 【实验内容】 1、将实验十二的List数据实现文件的读写操作。 附录: 在线评测系统练习题汇总 1控制结构 选择01: 整除 请写一个程序: 输入一个正整数值,请查这个值是否可以被17整除,如果可以输出1,否则输出0。 输入34输出1 输入38输出0 测试 输入15输出0 选择02: 利润提成 编写一个程序,根据年利润提成,计算企业发放的年度奖金。 利润低于或等于10万元的部分,奖金按10%提取; 利润高于10万元,低于或等于20万元的部分,奖金按7.5%提取; 20万到40万之间的部分,可提成5%; 40万到60万之间部分,可提成3%; 60万到100万之间的部分,可提成1.5%; 超过100万元的部分按1%提成。 从键盘输入当月利润,求应发放奖金总数。 输入9输出0.9 输入15输出1.375 输入30输出2.25 输入50输出3.05 输入80输出3.65 输入120输出4.15 测试: 输入90输出3.8 选择03: 征税 税务部门征收所的税,规定如下: 1)收入在1000元以内(含1000),免征; 2)收入在1000~3000元以内(含3000),纳税额为收入的3%; 3)收入超过3000~5000元以内(含5000),纳税为收入4%; 4)当收入超过5000元时,纳税为收入6%。 请根据以上关系,输入收入m,输出应缴纳的税收tax。 输入900输出0 输入2000输出60 输入4000输出160 输入6000输出360 测试: 输入2500输出75 选择04: 闰年 编写一个程序,输入一个年份,判断该年份是否为闰年,是闰年输出yes否则输出no。 输入: 2000输出: yes 输入: 2014输出: no 测试数据: 输入: 1000 输出: no 选择05: 等级分 编写一个程序,输入一个正整数表示学生的学习成绩,学习成绩大于等于90分,输出'A',在60-89分之间的,输出'B',60分以下的输出'C'。 输入90输出A 输入70输出B 输入59输出C 测试: 输入80输出B 选择06: 工资 某公司的工资根据工作时间发放如下: 1)时间在4小时以内(含4小时),工资为50元; 2)时间在4-8小时(含8小时),在4小时50元的基础上,超出4小时的时间按每小时20元计算; 3)时间超过8小时,在前8小时的工资基础上超出时间按每小时30元计算; 请根据以上关系,输入工作时间,输出应发的工资wage。 输入3输出50 输入7输出110 输入10输出190 测试: 输入12输出250 选择07: 天数 根据历法,凡是1、3、5、7、8、10、12月,每月31天;凡是4、6、9、11月,每月30天;2月闰年29天,平年28天。 闰年的判断方法是: 1)如果年号能被400整除,此年为闰年; 2)如果年号能被4整除但不能被100整除,此年为闰年; 3)其他情况都不是闰年。 编程输入年、月,输出该月的天数。 输入20105输出31 输入20102输出28 测试: 输入20004输出30 选择08: 判断三角形 输入三个整数,表示三角形的三个边长。 当任意两边之和大于第三边时,输出: 合法三角形;否则,输出: 非法三角形。 输入: 367输出: 合法三角形 输入: 3610输出: 非法三角形 选择09: 最大数 请写一个程序,我们输入三个int类型的数,找出最大的数并输出。 输入: 234输出: 4 测试数据: 输入: 103020输出: 30 选择10: 函数 输入int型整数x,若x>0,则y=1;若x=0,则y=0;否则,y=-1。 最后输出y。 输入-5输出-1 输入0输出0 输入4输出1 测试: 输入50输出1 选择11: 对号入座 有4种水果,单价分别是3.1元/公斤,2.50元/公斤,4.10元/公斤,10.20元/公斤,编号分别为1,2,3,4。 要求从键盘中输入水果的编号,输出该水果的单价。 如果输入不正确的编号,显示单价为0。 输入1输出3.1 输入2输出2.5 输入3输出4.1 输入4输出10.2 输入5输出0 测试: 输入6输出0 选择12: 第几天 编写一道程序,输入三个正整数,表示某年某月某日,判断这一天是这一年的第几天? 输入2013712输出193 输入2012515输出136 测试: 输入201235输出65 选择13: 是否及格 输入一个学生的数学成绩(正整数),如果它低于60,输出“Fail”,否则,输出“Pass”。 输入65输出Pass 输入50输出Fail 测试: 输入90输出Pass 选择14: 最小值 输入四个整数,输出其中的最小值。 输入1234输出1 输入2143输出1 输入2314输出1 输入3241输出1 测试: 输入13121411输出11 选择15: 回文数 输入一个5位数,判断它是不是回文数。 输入12321输出YES 输入12345输出NO 测试: 输入36563输出YES 选择16: 字母转换 编写程序,要求输入一个字母,若为大写字母,将其转换成相应小写字母输出,否则,原样输出该字母。 输入A输出a 输入g输出g 输入9输出9 测试: 输入T输出t 选择17: 体重 编写一个程序,输入某人的身高(cm)以及体重(kg),按照以下标准对他(她)的体型做测试: (1)标准体重=身高-110; (2)超过标准体重5kg(不含5kg)的为“过胖”;(3)低于标准体重5kg(不含5kg)的为“过瘦”(3)既不超过标准体重多于5kg,也不低于标准体重多于5kg的为“标准” 输入17575输出过胖 输入17560输出标准 输入17555输出过瘦 测试: 输入18080输出过胖 选择18: 加法 从键盘上输入2个加数,再输入答案,如果正确,显示“right”,否则显示“error” 输入358输出right 输入359输出error 测试 输入131528输出right 选择19: 网费 编写一个程序来计算一个月的上网费用,计算方法如下: 若上网时间<=10小时,网费为30元;若10小时<上网时间<=50小时,网费每小时3元;若上网时间>50小时,网费每小时2.5元。 要求输入该月上网小时数,显示该月总的上网费用。 输入8输出30 输入30输出90 输入60输出150 测试: 输入50输出150 循环01: 最大数 写一个程序,可以输入一批正数,输入0时结束循环,并且输出最大的正数。 输入392856318270 输出63 测试: 输入153269632875901560 输出963 循环02: 素数 输入正数n,判断n是否为素数。 若为素数则输出1,否则输出0。 (提示: 素数是指只可以被1和其本身整除的正数(1除外)) 输入10输出0 输入7输出1 测试: 输入9输出0 循环03: 数列求和 输入一个正整数n,计算前n项之和: 1+1/4+1/7+1/10..+1/(3*n-2)(保留2位小数)。 输入5输出1.57 输入4输出1.49 测试 输入10输出1.81 循环04: 西瓜卖几天 n个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完? 输入: 西瓜个数,输出: 天数 输入10输出2 输入50输出4 测试 输入120输出5 循环05: 成绩判定 输入一个正整数repeat(0 输入一个学生的数学成绩,如果它低于60,输出“Fail”,否则,输出“Pass”。 输入53568499488 输出 Fail Pass Fail Pass Pass 测试 输入8908060504030738859 输出 Pass Pass Pass Fail Fail Fail Pass Pass Fail 循环06: 数列求和 输入1个正整数n(n<=100),计算并输出1+1/2+1/3+……+1/n。 输出结果保留3位小数。 输入5输出2.28 输入4输出2.08 测试 输入10输出2.93 循环07: 水仙花数 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该 数本身。 例如: 153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 输入无输出153370371407 循环08: 数位之和 输入一个正整数,输出其各个位置上的数字之和。 输入1234输出10 输入12534输出15 测试 输入4325输出14 循环09: 奇数和 读入一批正整数(以零为结束标志),求其中的奇数和。 输入3233503465670输出165 输入13151730350输出80 测试 输入3133503465670输出196 循环10: 求和 从键盘输入若干正数,对其求和并输出,遇到负数则终止输入。 输入323350346567-1输出281 输入1315173035-2输出110 测试 输入313350346567-5输出280 循环11: 字符转换 编写程序,要求输入一串字符,将其中的每个大写字母转换成相应小写字母后输出,其他字符原样输出。 输入AdfedBIDE34Dkd输出adfedbide34dkd 输入KDadgJFJ343jdf输出kdadgjfj343df 测试 输入djfie989;,.DJDKE909输出djfie989;,.djdke909 循环12: 征税 税务部门征收所的税,规定如下: 1)收入在1000元以内(含1000),免征; 2)收入在1000~3000元以内(含3000),纳税额为收入的3%; 3)收入超过3000~5000元以内(含5000),纳税为收入的4%; 4)当收入超过5000元时,纳税为收入的6%。 请根据以上关系,输入收入m,输出应缴纳的税收tax。 输入: 第一个整数n表示后续有n个收入 输出: 每个收入对应的纳税额 输入4900200040006000 输出060160360 测试: 输入52500输出75 循环13: 因数个数 给定一个正整数n,求它的因数个数。 如6的因数为1、2、3、6,则因数个数为4。 输入12输出6 测试 输入30输出8 循环14: 最大公约数 键盘输入两个正整数m,n,求出他们的最大公约数。 输入2015输出5 测试 输入3280输出16 循环15: 斐波那契数列 判断第n个斐波那契数列能否被3整除给定斐波那契数列为: F(0)=1,F (1)=1,F(n)=F(n-1)+F(n-2)(n>=2),编写一个程序,输入n(>=0),如果F(n)能被3整除则输出一个“yes”,否则输出一个“no”。 输入8输出yes 输入6输出no 测试 输入12输出yes 循环16: 计算奇偶数 求N(<=100)个数中奇数的平方和与偶数的立方和。 注意: 输入格式为,第一个数为N,后面接着N个数。 输
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 程序设计 实验 指导书