ImageVerifierCode 换一换
格式:DOCX , 页数:92 ,大小:231.09KB ,
资源ID:163714      下载积分:5 金币
已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验项目1C运行环境及基础语法.docx)为本站会员(夺命阿水)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(发送邮件至doc331@126.com或直接QQ联系客服),我们立即给予删除!

实验项目1C运行环境及基础语法.docx

1、世界 因为 女性 的诞 生,显 得分 夕卜美 丽!只个小 小的 问候, 却是 一个 浓浓 的真 意!女2. 2实验项目1C+运行环境及基础语法实验目的:1. 熟悉C+的开发运行环境2. 掌握C+的基本语法3. 熟悉结构化程序设计2.2.1 实验内容:最简单的C+程序运行调试实验步骤:输入下面程序并运行,记录运行结果#includeusing namespace std;int main() coutmy first cpp program,endl;return 0;问题:1、 main函数的返回值有什么含义?程序中main可以定义为void类型吗?可以去掉最后的retun 0语句吗?修改程序

2、并编译,注意屏幕提示,解释结果返回的值的意思是程序的结束标志。当返回值为VOID时,此时无须加上返回值。也可以去掉最后的0,此时的返回类型为VOID o修改后的程序:#includeint main () std:cout,/my first cpp program,/std: :endl;return 0;)答:运行的结果:/my first cpp program/Press any key to continue2、 程序中的using namespace std;有什么作用?如果不要计算机会有和提示?修改程序,删除using namespace std;并让程序 能运行作用:命名空间

3、是为了防止名字(符号)冲突而把一系列的类型、变 量、函数放在一起的一种方式,命名控件要和变量作用域放在一起来 理解,在作用域范围内使用命名空间就可以访问该命名空间内定义的 符号。提示如下:compiling.I.cppE:first1 .cpp(3) : error C2065: cout: undeclared identifierE:first1 .cpp(3) : error C2297: : illegal, right operand has typechar 21E:first1 .cpp(3) : error C2065: endl: undeclared identifier执

4、行cl.exe时出错.l.obj -1 error(s), 0 warning(s)提示: 使用std:coutStd:cout,/return to ok!”endl;2.2.2 实验内容.结构化程序设计基础下面程序是从键盘输入一个数,并求其阶乘:注意:重新建一个工程,不要在一个工程中有多个main函数出现#includeusing namespace std;int main()int n,fact;cininput a num:n;这条语句有错,应怎么改?注意cin和cout的区别for(int i=1 ;in;i+)fact=fact*i;coutn !=factendl;return

5、 0;验证:输入5,应该是120,那么20的阶乘呢?怎么解释结果?注意初始化和变量的范围提示:从变量的作用域上考虑问题:修改程序,在程序最后输出循环变量i的值注意程序中的语句:for(int i=1;in;i+),和以前C程序的写法有 什么区别?说明这种把变量定义在()中的含义及其局限 #includeusing namespace std;int main() DOUBLE n,fact;coutz/input a num”;改正过后结果;cinn;fact=l;for(int i=l;in+l;i+) fact=fact*i;coutnz,!=z/factendl;return 0;答:就

6、是将FACT的初定义为1;将CIN的输入直接接要输入的变量;INT的范围在65353的范围这内因此当输入阶乘为20时它的结果远远大于它的长度此时需要修改它的类型长度即将它修改为DOUBLE类型即可。将INT放在括号里面的作用与在外面定义的作用是不同的INT放在里面表示它只2.2.3 实验内容引用和函数修改如下程序,使其能调用swap函数对参数进行交换:#includeusing namespace std;void swap(int a, int b)在此将此语句改为:void swap (int & a, int & b)int t;t=a; a=b; b=t;)int main()int

7、a=1,b=6;coutbefore swap:na is:a b is:bendl;swap(a,b);coutafter swap:na is:a b is:bendl;return 0;提 示: 使 用 引 用改正过后的结果是:J*E:firstDebuc3. exe*日回口befoi*e swap: a is :1 b is:6 af ter swap: a is b is Press any key to continue.2.2.4 实验内容函数的重载和默认参数从键盘上输入年龄(实数)和性别(用字符M和F表示),输出对应信息.要求如下键盘输入如:18. 6F,则输出19 years

8、 old, female19.4M,则输出 19 years old, male年龄采用四舍五入,如果不会,可以不实现,只取整即可编写print函数来处理(输出),要求函数可以用任意顺序的参数调用,程序结构如下int main()float year; char sex;输入print( year,sex) print( sex,year)print();这里输出 0 years old, male,即默认是。岁,malereturn 0;)程序不要改变main函数结构,编写printf函数(思考需要编写几个?) 提示:如何实现四舍五入?可以采用 变量+0.5取整#include#using

9、namespace std;#include#includeusing namespace std;这里输出years和sex顺序不同,但方法体是相同的。void print(float year, char sex)int y=0;y=(int)year;if (sex=,m | sex=,M )coutyear years old, male/zendl;else coutyear *years old, female“endl;出参数顺序不同意外,其它都是相同的。void print(char sex, float year)int y=0;y=(int)year;if (sex=m |

10、 | sex=M) coutyear ,zyears old, malez,endl;else coutyear years old, femalez,endl;这里输出0 years old, male,即默认是。岁,malevoid print () cout*0 years old, malez,endl;int main () float year; 变量year存放年龄变量。char sex; 变量sex存放性别变量。char input 20;存放输入字符串。char years20;存放输入字符串中年龄字符数组。char dot20;存放输入字符数组中小数点以后的小数部分数 组。

11、char * p;存放小数点后第一位数值,用于判断是否进行四舍五入。若大于5则总体值+1。p=dot;coutinput; 输入字符数组。字符串数组最后一位一定是性别,首先提取出来存放在sex变量 中。sex=input Estrlen(input)-1;将输入数组除最后一个字符以外的字符串传入年龄数组。for(int i=0;istrlen(input)-l;i+)yearsi=inputi;在年龄数组中获取小数点最近的数值,放入P中。for (int j=0;j=5)year=(float)(atoi(years) +1);else year=(float)atoi(years);调用pr

12、int函数。Pring函数要进行重载。print( year, sex);print ( sex,year);print ();这里输出0 years old, male,即默认是0岁,malereturn 0;2.3实验项目2运用类和对象进行程序设计实验目的掌握类的定义掌握对象的成员变量,成员函数的使用掌握对象成员访问控制的设定2.3.1 实验内容 类基本语法练习#includeusing namespace std;class Time/定义Time类public:/数据成员为公用的int hour;int minute;int sec;int main()Time t1 ;/定义t1为T

13、ime类对象cint1 .hour;输入设定的时间cint1.minute;cint1.sec;coutt1 .hourk: t1 .minute: t1 .secendl;return 0:)改写程序,要求:改写后的程序:#include stdafx. h#include,/iostream,/using namespace std;class Time public:Time ();void printtime();实现输出时间函数void settime(int, int, int); 实现时间的的格式设置private:将成员函数改为私有的int hour;int minute;in

14、t sec;Time: :Time()hour=minute=sec=0;)void Time:settime(int h, int m,int s)hour=(h=0&h=0&m=0&s60)?s:0;:void Time:printtime() couthour: minute: sec; int main () int i;Time tl;tl. settime 8, 8);couti;printf(pause);return 0;将数据成员改为私有的;在上面已经实现了将输入和输出的功能改为由成员函数实现;在上面已经实现了在类体内定义成员函数在上面已经实现了然后编译和运行程序。请分析什么

15、成员应指定为公用的?什么成员 应指定为私有的?什么函数最好放在类中定义?什么函数最好在 类外定义?外部成员就应该定义为公有的,属性成员应该定义为私有的。函 数声明应该放在类中,方便用户调用的函数应该放在类的外部下面程序设计了一个日期类如下,通过成员函数init来初始 化,print输出class Dateint y,m,d;void init()y=year; m=month; d=day;void print()couty year m month d dayendl;)int main()Date d;d.init();d.print();return 0;程序 问题1:程序有3处错误,试

16、改正提示:类定义格式,注意最后的分号在类定义完之后需要加分号init函数是否要参数需要带参数注意成员函数的访问属性,公有还是私有 是公有的PUBLI 改正后的程序:#include stdafx. h#include iostream”using namespace std;class Datepublic:void init (int, int, int);void print();private:int year,month, date;);void Date:init (int y,int m, int d) year=y;month=m;date=d;void Date:print()

17、cout,date:,year,-0,?month,-0/datei;return 0; 把程序分成3个部分(文件),main函数所在的文件main, cpp,类的声明time. h, 类的定义time. cpp。三个文件在同一个工程中。注意:哪些要包含头文件。选做:(在头文件中使用头文件卫士(#ifndef)来保护头文件可以被多次包 含程序:问题2.根据上面修改的类,继续添加成员函数,要求能进行 日期相减得到相差的天数,日期可以加上一个数,得到新的日期.为简化程序,设每个月都是30天.#include using namespace std;class Dateint y, m, d;pub

18、lic:void init(int year, int month, int day) y=year; m=month; d=day;)void print () couty* yearmonth dyd. y) dy=(this-y-d. y) *360;把年求出并计算出它的天数else dy=(d. y-this-y)*360;if (this-md. m) dm=(this-m-d. m) *30;取出它的月份并用天数表示else dm=(d. m-this-m)*30;if(this-dd. d)dd=(this-d-d. d);取出它的天数else dd= (d. d-this-d)

19、 *1;return dy+dm+dd;Date addNum(int num)int dy, dm, dd;dy=num/360;的年份dm=(num-(360*dy)/30;的月份dd=(num-dy*360-dm*30)/I;的天数this-y=this-y+dy;this-m=this-m+dm;this-d=this-d+dd;传递一个数并计算出它传递一个数并计算出它传递一个数并计算出它当前年与它进行相加当前月与它进行相加当前日对它进行相加return *this ;);int main() Date dl, d2, d3;dl. init(1900, 2,1);d2. init(1

20、900,1,1);cout*the date total: *dl. subDate (d2) endl;输出计算后的天数d3=dl. addNum(5);计算出它加后的年月日d3. print ();return 0;) 提示:增加成员函数int subDate( Date d)返回一个值Date addNum( int num) /返回在main函数中验证如下Date d1 ,d2,d3;d1.init(1900,2,1);d2.init(1900,1,1);coutd1 .subDate(d2);结果为 30d3 = d1 .add(5);d3.print();/d1 是 1900,2,

21、6思考:addNum(int函数的返回值是否可以定义为void?即这样使用:d1.add(5);d1.print();d1自身的日期加5,如果要这么做,addNum函数要如何修改?提示:注意区分当前对象,如果需要返回当前对象自己,可以使 用 return *this;this是指向当前对象的指针,*this表示当前对象改正过后的程序:#includeusing namespace std;class Dateint y, m, d;public:void init (int year, int month, int day)if(month12|day30)cout,data error/,e

22、ndl;exit (0); else y=year;m=month; d=day;void print () coutyy=this-y+dy;加this-m=this-m+dm;加this-d=this-d+dd;加return *this ;int subDate(Date &d)intdata=(this-y*12*30+(this-m-l)*30+this-d)-(d. y*12*30+(d.m -l)*30+d. d);return data;;int main() Date dl, d2, d3;dl. init(1900, 25, 1);d2. init(1900, 1, 1);

23、cout,the date total: z/dl. subDate (d2) 24 |y60| m60|d0)coutTime errorz/, yendl;);int main() Point a,b,c ; a.init(1,2) ;b.init(3,4)c = a + b ;c.disp();#include#include using namespace std; class Point int x,y;初始化public:void init( int a int b)x=a;y= b;)Point operator + (const Point& a) 实现两 个复数相加的运算符重

24、载函数的方法Point s;s.x=this-x+ a.x;s.y=this-y+ay;return s;void disp()cout two complex realized real add is: xendl;cout two complex realized image addis: yendl;;int main()Point a,bfc;ainit(1,2);b.init(3z4);c= a+ b; 调用运算符重载函数 c.dispO;return 0;采用2种方式重载+运算符:成员函数和全局函数方式 提不:成员函数方式 Point operator+(const Point&

25、a)全局函数方式 Point operator+(const Point& a, const Point& b)全局函数方式下要注意成员访问限制,可以使用友元或其他方式 思考:这两种方式你更喜欢用哪一种?有什么优缺点?#include using namespace std;class Point public:int x, y; / x, ?y是?坐?标括?public:void init( int a, int b)x =a; y = b;void disp() cout ,zxArray : z/,zyArray : /zyendl;Point add( Point p ) Point

26、tempPoint ;tempPoint. init ( x + p. x, y+p. y); return tempPoint ;)Point operator+(const Point& a) Point temp;temp, x=x+a. x;temp. y=y+a. y;return temp;思考:后面的答案:#include# include math.hclass Pointprivate:intx;inty;public:void init( int a, int b) 初始化x=a;y= b;friend Point operator+ (const Point& a,con

27、st Point& b)Points;s.x= a.x+ b.x;s.y= a.y+ by return s;)void disp()cout two complex realized real add is: xendl;cout two complex realized image add is: y# include math.hclass Complexint re;int im;public:void init( int a, int b) 初始化re = a; im= b;friend Complexoperator -(Complexc1,Complex c2)Complex d

28、d.re=c1.re-c2.re;d.im=c1.im-c2.im;return d;void disp()cout two complex realized real sub is: reendl;cout two complex realized image sub is: imendl;int main()Complex c1zc2zc3;创建三个对象int rj;实部虚部的值cout n input first/ and i: ri;c1.init(7,7); 当前对象来调用cout n input second/ and i: r;c2.init(8,9);c3= c1-c2;c3

29、disp();return 0;提示:重载运算符不能使用成员函数形式2.3.3实验内容 构造和析构函数设计日期类Date,满足如下要求生成对象可以不带参数.如Date a,默认日期是 1900-1-1可以带亚洲日期格式参数.如 Date a(1990,l,l)可以带欧洲日期格式参数.如Date a(l,1,1990)月,日,年格式 可以输出,如couta;按年月日输出说明:为简化程序,规定字符串的月日必须用2位表示提示:欧洲亚洲旧期格式可以使用if语句判断,比如年小于12 则表示月在main函数中验证是否正确Date a(l 990,1,1), b(3,5,l990),c;coutabc;看

30、结果是否正确问题1:修改设计的日期类,增加“时间“成员,要求时间成员是类对象。如下:class Timeint hour;public:Time( int h) hour = h;);class DateTime t;);提示:此问题是解决“类中包含其他对象成员”的问题,需要 注意的是Date类构造函数的写法,Date类构造函数应该有4 个参数,如何把时间传递给其Time成员,必须使用构造参数 表的形式才可以。如下面形式:Date( int y,):year(y),t(time)问题2:修改Time类的构造函数,使其有默认参数,则Date 类构造函数可以不用构造参数表形式思考:构造参数表有什么

31、作用?什么时候需要问题3:选做:a)重载Date的 (小于)运算符,比较日期.自己定义比较规则b)从键盘读入若干个日期,放入到数组或向量vector中 c)用对日期排序输出#include using namespace std;class Time private:int hour;public:Time () Time(int h) hour=h;void setTime(int h) hour = h;int getTime () return hour;);class Dateprivate:int y, m, d;Time t;public:Date (Time tim) : t (

32、tim) 构 1造i函一数篦加6上?参?数篦列表括?)Date(int year, int month, int day) y=year;m=month;d=day;)void setTime(int h)t.setTime(h);void print () coutyzz: zzmzz: zzdzz :t. get Time () endl;);int main ()Date b(1900, 1, 1);b. setTime (1);b. print ();return 0;提示:如果使用数组,则解决方法同c语言(自己编写排序函数);如果使用向量,则可以如下解决:向量定义 vector ve

33、cDate;放入到向量用push_back(.)重载 运算符后,不需要指定比较函数,直接使用C+提供的sort排序(或者自己编写排序函数),如sort( v.begin(), v.end();使用sort函数要带头文件algorithm2.3.4实验内容I/O流和文件操作1 .编程:从键盘输入若干个数,以0结束,把这些数字写入到磁盘文件data, dat中提示:注意循环条件的写法,此处没有指定循环次数,可 以用while循环,并注意变量的初始值文件操作需要有头文件fstream,注意文件的打开方式2 .从文件data. dat中读出数据,并把其中的素数显示在屏幕 上,并统计输出有多少个素数。#

34、include /zfstream. h#include math.bool prime(int x);void datainput();void main()int x;int num;ifstream myfile;定义?文?件t对?象6datainput ();myfile. open(z/data, dat”, ios: :binary);文?件t打洙?开anum=O;if(myfile)cout当獭?前。的?素?数篦为a:毗 ,zendl;while(myfile. good()/good()是?ifstream中D的?函一数篦,?判口别健是? 否?到?文?件t末?尾2(myf il

35、e. read(char *)&x, sizeof x);if (prime(x)coutxendl;num+;cout/z素?数篦个?数籥为a:毗 zznumendl;else(cout/zopen err/zendl;bool prime(int x)(int i, j;if(x=l)return false;j=int(sqrt (x);for(i=2;i=j;i+)if (x%i=0) return false;return true;void datainput()(int x;ofstreamofs(data. dat,ios:binary);x=l;coutx;ofs. write(char *)&x, sizeof x);)ofs. close ();2. 4实验项目3面向对象程序设计综合应用 实验目的掌握面向对象的设计方法掌握面向对象中的继承多态的概念掌握面向对象的异常概念及使用了解模板,学会使用标准类2.4.1 实验内容多态与虚函数基本概念1 .有一个汽车类Vehicle,

宁ICP备18001539号-1