C程序设计实践环节考核规定.docx_第1页
C程序设计实践环节考核规定.docx_第2页
C程序设计实践环节考核规定.docx_第3页
C程序设计实践环节考核规定.docx_第4页
C程序设计实践环节考核规定.docx_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

C+程序设计实践环节考核规定1.C+程序设计实践环节考核大纲一、考核类型上机考核二、目的要求C+语言程序设计是计算机科学与应用专业、信息管理专业(本科)的必修课,是培养学生实践动手能力的一门重要专业课程,是为满足计算机应用领域与计算机应用人才的需要而设置的。C+语言是一种面向对象的编程语言,它集抽象性、封装性、继承性和多态性等面向对象特征于一体,可以帮助人们开发出具有较高数据抽象程度,能够充分体现信息隐蔽、软件重用、易修改、易扩充等特性的大型软件。C+程序设计的实验采用MicrosoftVisualC+6.0。通过上机实践,加深对课程的理解,更好地掌握C+面向对象程序设计的基本方法,增强实际动手能力。三、考核环境硬件:586以上的PC系列机,主频大于166MHz,内存大于256MB,硬盘空间大于500MB。软件:中文Windows2000/NT/XP操作系统,MicrosoftVisualC+6.0。四、考核方法考生抽取试题后,在45分钟内,完成试卷中所要求的全部内容,并作必要的记录。考核结束后,考生上交试卷。上机考核成绩由现场老师初评,经考点负责人审核签名,报主考院校核定。成绩分合格、不合格两类。五、考核内容l掌握MicrosoftVisualC+6.0集成开发环境的使用,新建工程,编辑含有类的C+源文件,存取文件,编译文件,调试程序和运行程序。l模板。包括:函数模板、类模板,练习编制函数模板和类模板。l熟悉面向对象编程思想和多文件编程规范。l掌握公有继承的赋值兼容性规则、构造函数、复制构造函数和析构函数的设计方法。l练习使用向量解决实际问题。1l熟悉各类运算符的重载。l熟悉使用文件的基本方法。l熟悉继承和包含以及虚函数的多态性。六、参考书目1.刘振安主编,C+程序设计,机械工业出版社2008年2.薛万鹏译,C+程序设计教程,机械工业出版社,2005年3.钱能,C+程序设计教程,清华大学出版社,2006年2C+程序设计上机考核指导C+语言程序设计是一门实践性很强的课程,必须通过反复上机练习,深入领悟面向对象程序设计的基本思想。通过实验教学加深理解和巩固课堂和教材所学的内容,提高实践动手能力。实验一MicrosoftVisualC+6.0集成开发环境的使用一、实验目的与要求了解并初步掌握MicrosoftVisualC+6.0集成开发环境的使用。二、实验内容(1)创建项目(Project)l启动VC+6.0。l从主菜单中选择【文件】|【新建】命令,打开【新建】对话框。单击【工程】标签,从项目列表中单击Win32ConsoleApplication选项;在【工程】文本框中输入项目的名字,如“hello”,系统将自动为用户的项目分配一个默认的目录.l如果是VisualC+6.0,系统将显示一个询问项目类型的程序向导,选择anemptyproject选项,单击【完成】按钮,显示新建项目信息;单击【确定】按钮结束。(2)添加程序代码l从主菜单中选择【文件】|【新建】命令,打开【新建】对话框。l在【新建】对话框中打开【文件】选项卡,单击+SourceFile选项,建立源文件;选中“添加工程”复选框;在右边的“文件”文本框中为文件指定一个名字,如“hello”。2l编辑源文件。在【工作区】窗口中单击FileView标签,选择并打开该窗口中SourceFiles下的文件,如hello.cpp,在打开的【文件】窗口中输入源程序。l在项目文件中增加文件。若在已有的项目文件中增加一个新文件,如C+源文件“*.cpp”或头文件“*.h”需要执行以下操作。打开相应的项目文件,选择【新建】|【文件】命令,选择C+编辑栏Source选项,可增加C+源文件;或选择C/C+HeadFile选项增加C/C+头文件。在【文件】文本框输入文件名,单击【确定】按钮。(3)编译源文件先激活相应的源程序窗口,选择【编译】|【编译】命令或按Ctrl+F7键来编译源文件,形成目标文件(生成.obj文件),若该项目中有多个源文件,可依次激活并编译。(4)链接目标程序,形成可执行文件选择【编译】|【链接】命令或按快捷键F7链接程序,并形成可执行文件。此命令也可直接将项目中的所有源文件进行编译并链接形成可执行文件,使编译和链接的过程结合在一起。(5)运行程序选择【编译】|【执行】命令或使用快捷键Ctrl+F5运行该程序,将显示一个类似于DOS的窗口,在窗口中第一行输出“hello,world!”,第二行输出“Pressanykeytocontinue”,提示用户按任意键回到开发环境。三、程序练习定义一个关于日期的类,然后声明对象,判断该日期是否为闰年并输出。本题练习的是定义类和使用类的方法。源程序代码:#includeiostreamusingnamespacestd;classTDatepublic:voidSetDate(inty,intm,intd);intisLeapYear();voidPrint();private:intyear,month,day;voidTDate:SetDate(inty,intm,intd)3year=y;month=m;day=d;intTDate:isLeapYear()return(year%4=0&year%100!=0)|(year%400=0);voidTDate:Print()coutyear.month.dayendl;voidmain()TDatedate1,date2;date1.SetDate(2004,5,4);date2.SetDate(2005,4,9);intleap=date1.isLeapYear();date1.Print();if(leap=1)cout是闰年!endl;elsecout不是闰年!endl;date2.Print();leap=date2.isLeapYear();if(leap=1)cout是闰年!endl;elsecout不是闰年!endl;四、实验要求按要求编写实验程序,将实验程序调试运行,写出程序的运行结果,并提交实验报告,写出调试运行的分析和体会。实验二类和对象的使用一、实验目的和要求(1)熟悉类的定义格式和类中成员的访问权限。(2)掌握对象的定义方法以及对象的初始化和赋值的操作。(3)掌握构造函数和析构函数的使用。二、实验内容1.编写一个程序,定义类CPeople包含个人信息姓名、年龄、薪水。并在类中定义构4造函数、析构函数。题目分析:注意构造函数、析构函数的定义规则。源程序代码:#includeiostream#includeusingnamespacestd;/类CPeople的定义classCPeopleintm_nAge;floatm_fSalary;char*m_pstrName;public:CPeople();/缺省构造函数CPeople(intage,floatsalary,char*name);/带参数的构造函数CPeople(constCPeople&);/拷贝构造函数CPeople();/析构函数char*GetName();floatGetSalary();voidSetSalary(float);intGetAge();voidSetAge(intage);CPeople:CPeople()/缺省构造函数,给创建的对象的每个成员赋默认值m_nAge=20;m_fSalary=3000.00f;m_pstrName=newchar20;/用new操作符为字符指针m_pstrName分配空间strcpy(m_pstrName,无名氏);CPeople:CPeople(intage,floatsalary,char*name)/带参数的构造函数m_nAge=age;m_fSalary=salary;m_pstrName=newchar20;/用new操作符为字符指针m_pstrName分配空间strcpy(m_pstrName,name);/复制构造函数,用已存在的对象来创建新的对象CPeople:CPeople(constCPeople&AnotherPeople)m_nAge=AnotherPeople.m_nAge;5m_fSalary=AnotherPeople.m_fSalary;m_pstrName=newcharstrlen(AnotherPeople.m_pstrName)+1;strcpy(m_pstrName,AnotherPeople.m_pstrName);CPeople:CPeople()/析构函数,用来释放我们在构造函数中动态申请的内存空间if(m_pstrName!=NULL)deletem_pstrName;/释放m_pstrName所占用的内存空间char*CPeople:GetName()returnm_pstrName;intCPeople:GetAge()returnm_nAge;voidCPeople:SetAge(intage)if(age=0)cout设置的年龄不合法endl;elsem_nAge=age;floatCPeople:GetSalary()returnm_fSalary;voidCPeople:SetSalary(floatnum)if(num0)cout设置的薪水数目不合法endl;elsem_fSalary=num;voidmain()CPeopleZhangSan(65,2000.00f,张三);/创建一个对象ZhangSancout以下为个人信息:n姓名,年龄,薪水endl;cout-n;coutZhangSan.GetName();/输出对象ZhangSan的姓名coutZhangSan.GetAge();/输出对象ZhangSan的年龄信息coutZhangSan.GetSalary()endlendl;/输出对象ZhangSan的工资信息6CPeopleA;/创建一个对象AA.SetAge(34);/设置对象A的年龄A.SetSalary(4000.00f);/设置对象A的工资coutA.GetName();/输出对象A的姓名coutA.GetAge();/输出对象A的年龄信息coutA.GetSalary()endlendl;/输出对象A的工资信息CPeopleB(ZhangSan);/用对象ZhangSan来创建对象BcoutB.GetName();coutB.GetAge();coutB.GetSalary()endlendl;三、实验要要求按要求编写实验程序,将实验程序调试运行,写出程序的运行结果,并提交实验报告,写出调试运行的分析和体会。实验三继承与派生一、实验目的和要求l掌握派生类的定义方法和派生类构造函数的定义方法。l掌握不同继承方式的情况下,基类成员在派生类中的访问权限。l了解派生类的构造函数和析构函数的执行顺序。了解多重继承的定义方法,多重继承的构造函数和析构函数的使用。二、实验内容在类CPeople的基础上,派生出学生类CStudent,并实现对学生成绩的统计和输出。源程序代码:#include#include#defineMAXNUM10usingnamespacestd;classCPeopleprotected:intm_nAge;public:char*m_pstrName;CPeople(intage,char*name);CPeople();intGetAge();voidSetAge(intage);7voidCopyPeople(CPeople*pAnother);CPeople:CPeople(intage,char*name)m_nAge=age;m_pstrName=newchar20;strcpy(m_pstrName,name);CPeople:CPeople()if(m_pstrName!=NULL)deletem_pstrName;intCPeople:GetAge()returnm_nAge;voidCPeople:SetAge(intage)m_nAge=age;voidCPeople:CopyPeople(CPeople*pAnother)m_nAge=pAnother-m_nAge;strcpy(m_pstrName,pAnother-m_pstrName);classCStudent:publicCPeoplefloatm_ArrayScoreMAXNUM;/用来存放成绩的数组protected:intm_stuNo;/学号intm_courseNum;/课程数目floatm_aScore;/平均成绩public:CStudent(intage,intNo,intNum,char*pName=noname):CPeople(age,pName)m_stuNo=No;m_courseNum=Num;m_aScore=0.0f;8/初始化成绩数组cout请输入学生m_pstrNamem_courseNum门课的成绩:endl;for(inti=0;im_ArrayScorei;voidCaculateAverageScore()floatsum=0.0f;for(inti=0;im_courseNum;+i)sum+=m_ArrayScorei;m_aScore=sum/m_courseNum;floatGetm_aScore()returnm_aScore;friendostream&operator(ostream&out,constCStudent&s);ostream&operator(ostream&out,constCStudent&s)out学生姓名:s.m_pstrName,学号:s.m_stuNo,成绩列表:endl;for(inti=0;is.m_courseNum;+i)outs.m_ArrayScoreiendl;out平均成绩=s.m_aScoreendlendl;returnout;voidmain()CStudentstu1(16,29,3,张三);stu1.CaculateAverageScore();coutstu1;三、实验要要求按要求编写实验程序,将实验程序调试运行,写出程序的运行结果,并提交实验报告,写出调试运行的分析和体会。9实验四模板的使用一、实验目的与要求了解函数模板、类模板的概念,练习编制函数模板和类模板。二、实验内容编写一个使用类模板对数组进行排序、查找和求元素和的程序。要求:设计一个类模板templateclassArray,用于对T类型的数组进行排序、查找和求元素和,然后由此产生模板类Array和Array。源程序如下:#include#includeusingnamespacestd;templateclassArrayT*set;intn;public:Array(T*data,inti)set=data;n=i;Array()voidsort();/排序intseek(Tkey);/查找指定的元素Tsum();/求和voiddisp();/显示所有的元素;templatevoidArray:sort()inti,j;Ttemp;for(i=1;i=i;j-)if(setj-1setj)temp=setj-1;setj-1=setj;setj=temp;template10intArray:seek(Tkey)inti;for(i=0;in;i+)if(seti=key)returni;return-1;templateTArray:sum()Ts=0;inti;for(i=0;in;i+)s+=seti;returns;templatevoidArray:disp()inti;for(i=0;in;i+)coutseti;coutendl;voidmain()inta=6,3,8,1,9,4,7,5,2;doubleb=2.3,6.1,1.5,8.4,6.7,3.8;Arrayarr1(a,9);Arrayarr2(b,6);coutarr1:endl;cout原序列:;arr1.disp();cout8在arr1中的位置:arr1.seek(8)endl;arr1.sort();cout排序后:;arr1.disp();coutarr2:endl;cout原序列:;arr2.disp();cout8.4在arr2中的位置:arr2.seek(8.4)endl;arr2.sort();cout排序后:;arr2.disp();11三、实验要求按要求编写实验程序,将实验程序调试运行,写出程序的运行结果,并提交实验报告,写出调试运行的分析和体会。实验五使用向量一、实验目的和要求练习使用向量解决实际问题二、实验内容利用向量编写程序:出圈游戏。假设有人数为n的一个小组,他们顺时针方向围坐一圈。一开始任选选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报数m的人出列,然后从他原来所在地以顺时针方向的下一个人开始,重新从1报数,报到m时停止报数并出列。如此下去,直至所有人全部出列为止。要求按他们出列的顺序输出他们的名字。源程序代码如下:#include#includeusingnamespacestd;classSeqListcharname10;public:voidDispName()coutname;voidSetName(charb)strcpy(name,b);voidJoseph(vector&);/Joseph函数voidSeqList:Joseph(vector&c)intm,star,i,j,k;cout请输入间隔数m(mm;while(m20)12coutm;cout从第几个人的位置开始报数(不能大于c.size()star;while(starc.size()coutstar;cout准备输入名字endl;getchar();/消除回车干扰/输入参加游戏人的名字chars10;for(i=0;ic.size();i+)cout第i+1个人的名字:;gets(s);ci.SetName(s);i=star-2;vector:iteratorp;p=c.begin();intlength=c.size();for(k=1;k=length;k+)j=0;/报数while(jm)i+;if(i=c.size()/到终点,返回到第一个位置计数i=0;j+;if(k=length)break;ci.DispName();/输出出圈人的信息cout,;c.erase(p+i);/删除出圈人的记录-i;/调整计数位置初始值/break语句跳转至此处,输出最后出列的编号ci.DispName();13coutendl;voidmain()intlength=0;coutlength;vectorc(length);SeqListgame;game.Joseph(c);三、实验要求按要求编写实验程序,将实验程序调试运行,假设参加游戏的为5人,间隔数选10,从第三个人的位置开始报数,5个人的名字依次为:李红、王强、张三、李四、王五,写出程序的运行结果,并提交实验报告,写出调试运行的分析和体会。实验六多态性和虚函数一、实验目的熟悉继承和包含以及虚函数的多态性。二、实验内容程序实现的基本功能:小型公司人员信息管理。某小型公司主要有3类人员:经理、兼职技术人员、兼职销售员。这些人员分别具有以下属性。经理:姓名、编号、固定工资、当月薪水、计算月薪、显示信息;兼职技术人员:姓名、编号、工作小时、每小时工资额、当月薪水、计算月薪、显示信息;兼职销售员:姓名、编号、销售额、销售额提成、当月薪水、计算月薪、显示信息;要求:人员编号基数为1000,每输入一个人员信息编号顺序加1;月薪计算办法是经理固定月薪8000元;兼职技术人员按100元/小时领取月薪;兼职推销员按当月销售额的4%提成。根据题目要求,设计一个基类employee,然后派生出technician(兼职技术人员)类、manager(经理)类和salesman(兼职销售员)类。/employee.h头文件14classemployee/定义职员类protected:char*name;/定义姓名intEmpNo;/个人编号doublesumPay;/月薪总额staticintemployeeNo;/本公司职员编号目前最大值public:employee();employee();virtualvoidpay()=0;/计算月薪函数,/解决:虚函数voiddisplayStatus();/显示人员信息;classtechnician:publicemployee/兼职技术人员类(公有派生)protected:floathourlyRate;/每小时酬金intworkHours;/当月工作时数public:technician();voidpay();/计算月薪函数voiddisplayStatus();/显示人员信息;classsalesman:publicemployee/兼职推销员类protected:doubleCommRate;/按销售额提取酬金百分比doublesales;/当月销售额public:salesman();voidpay();/计算月薪函数voiddisplayStatus();/显示人员信息;classmanager:virtualpublicemployee/经理类protected:floatmonthlyPay;/固定月薪数public:manager();voidpay();/计算月薪函数voiddisplayStatus();/显示人员信息;/*15/empfun.cpp#include#include/#includeemployee.hintemployee:employeeNo=1000;/员工编号基数employee:employee()charstr20;coutstr;name=newcharstrlen(str)+1;/动态申请strcpy(name,str);EmpNo=employeeNo+;/新员工编号自动生成sumPay=0.0;/月薪总额初始0employee:employee()deletename;/释放空间voidemployee:displayStatus()coutname:编号:EmpNo,本月工资sumPayendl;technician:technician()hourlyRate=100;/每小时酬金100元voidtechnician:pay()coutworkHours;/计算月薪sumPay=hourlyRate*workHours;voidtechnician:displayStatus()cout兼职技术人员:;employee:displayStatus();salesman:salesman()CommRate=0.04;/提成比例voidsalesman:pay()16coutsales;sumPay=sales*CommRate;/月薪=销售提成voidsalesman:displayStatus()cout推销员:;employee:displayStatus();manager:manager()monthlyPay=8000;voidmanager:pay()sumPay=monthlyPay;/月薪总额=固定月薪数voidmanager:displayStatus()cout经理:;employee:displayStatus();/sy10_4.cpp#include#includeusingnamespacestd;voidmain()/经理:;managerm1;m1.pay();m1.displayStatus();/兼职技术人员:;techniciant1;t1.pay();t1.displayStatus();/兼职推销员:;salesmans1;s1.pay();s1.displayStatus();coutn使基类指针指向子类对象endl;employee*ptr4=&m1,&t1,&s1;for(inti=0;idisplayStatus();17三、实验要求按要求编写实验程序,将实验程序调试运行,写出程序的运行结果,并提交实验报告,写出调试运行的分析和体会。实验七运算符重载、使用多文件编程一、实验目的熟悉运算符重载的定义和使用方法,熟悉多文件编程规范。二、实验内容重载类CPople的输出运算符和赋值运算符。/*/程序清单CPople.h/*/类CPeople的定义#includeusingnamespacestd;classCPeopleintm_nAge;floatm_fSalary;public:char*m_pstrName;CPeople();CPeople();CPeople(intage,floatsalary,char*name);floatGetSalary()const;voidSetSalary(float);intGetAge()const;voidSetAge(intage);CPeople&operator=(constCPeople&AnotherPeople);friendostream&operator(ostream&stream,constCPeople&p);/*/程序清单CPople.cpp/*/类CPeople的实现#includePeople.h#includeusingnamespacestd;CPeople:CPeople()18m_nAge=20;m_fSalary=3000.00f;m_pstrName=newchar20;strcpy(m_pstrName,无名氏);CPeople:CPeople(intage,floatsalary,char*name)m_nAge=age;m_fSalary=salary;m_pstrName=newchar20;strcpy(m_pstrName,name);CPeople:CPeople()if(m_pstrName!=NULL)deletem_pstrName;intCPeople:GetAge()constreturnm_nAge;voidCPeople:SetAge(intage)m_nAge=age;floatCPeople:GetSalary()constif(m_nAge60)returnm_fSalary/2;elsereturnm_fSalary;voidCPeople:SetSalary(floatnum)m_fSalary=num;/赋值运算符重载的实现CPeople&CPeople:operator=(constCPeople&AnotherPeople)if(this=&AnotherPeople)/检查自赋值return*this;if(m_pstrName)19deletem_pstrName;/释放原有的内存资源m_nAge=AnotherPeople.m_nAge;m_fSalary=AnotherPeople.m_fSalary;/分配新的内存资源,并复制内容m_pstrName=newcharstrlen(AnotherPeople.m_pstrName)+1;strcpy(m_pstrName,AnotherPeople.m_pstrName);return*this;/输出运算符重载函数的实现ostream&operator(ostream&stream,constCPeople&p)stream姓名:p.m_pstrName,年龄:p.GetAge(),薪水:p.GetSalary();returnstream;/*/程序清单test7.cpp/*/测试CPeople类#include#includepeople.husingnamespacestd;voidmain()CPeopleZhang(65,2000.00f,张飞);coutZhangendl;/输出对象的值CPeopleA,B;A.SetAge(34);A.SetSalary(4000.00f);coutAendl;B=A;/将对象A的值赋给对象BcoutBendl;三、实验要要求按要求编写实验程序,将实验程序调试运行,写出程序的运行结果,并提交实验报告,写出调试运行的分析和体会。实验八文件读写一、实验目的熟悉使用文件的基本

温馨提示

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

评论

0/150

提交评论