昆明理工大学C++补考资料_第1页
昆明理工大学C++补考资料_第2页
昆明理工大学C++补考资料_第3页
昆明理工大学C++补考资料_第4页
昆明理工大学C++补考资料_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

第二章数据类型、运算符和表达 第三章简单的输入/输出语 第一节C++语言的语句和程序结 第二节选择结 第三节循环语句结 第五章函数和编译预处 第一节函数的定义和调 第三节递归函数、变量的作用域和编译预处 第十章类和对象【2 第十一章构造函数和析构函数【4 第十二 继承和派生类【4 B(intrr,int 第十二章类的其他特性【4 第一节友元函 第二节静态成 第三节虚函 第十三章运算符重载【2 voidmain(void){ int //说明变量i //从键盘上输入变量i }

实型(实型

单引号括起来的单个字符。例如:‘a’,‘&’‘ab’“a”都是不合义符”\”开始,后跟一个字符或一个整型常量(ASCII值)的办法来表示一个字符。开头。常用的转义序列字符有:’\\’表示字符“\”,‘\’’表示单引号,‘\”’表示双引号,‘\n’用双引号括起来的若干个字符。例如:“ab3d”,“a”都是合法的字符串常量。字符串常量与字符常量的存放格式不一样,在字符串常量的尾部,存储时都要存放一个\0’,\0’表示例 PI=3.1415926在程序中标识符常量必须先定义后引用,并且标识符例如:inta//aa4个字节的存储单元,变量说明语句必①在变量说明的同时对变量赋初值,例如:charch1=‘a’,char②使用赋值语句赋值,例如:floatx,yx=1.234cin对变量赋初值,例如:inta;cin>>a;(后面章节将会学到)(:+(4(a&&b&&ca0ba0时,不管后面的项0a和b0ca||b||ca0bca、b0时才需要计c项。C++中赋值运算符分为两种:单一赋值运算符(=)和复合赋值运算符(+=,–=,*=,/=,%=,^=,|=,<<=,>>=),都为双目运算符,结合性为左结合,其运算法则为:将左操作数与右操 (前置自增:先将i的值加1,再将变化后的i值参与运算) (后置自增:先将i参与运算,再将i的值加1) (前置自减:先将i的值减1,再将变化后的i值参与运算) (后置自减:先将i参与运算,再将i的值减1)<1>,<2>,条件运算符“<12计算过程为:先计算<1>0,则计算<2>,并将计算的值作为该条件表达式的值;否则求解<3>的值,并将该值作为条件表达式的值。高!++1“intx=5,y=7,z=8;”,“z+=x++||y++||++z”x、y、z B.6、8、 C.6、8、 D.6、8、2、设有语句“inta=258,b;unsignedcharc;b=c=a;“,则b的值是 3、设有语句“chars[]=“Rep\0Ch”;intm=sizeof(s);”,则m的值是 43xyxya和bC++中对应的正确表达式是 B. C. D. /#include<iostream.h> 1cin>><变量名>[>><变量名>(1“ 若从键盘上输入:A 和从键盘上输入:Abe回车两者结果一样(例:char二、输出语句1格式:cout<<<1><<< (回车)(3)Setw(n):用于指定输出的宽度。其必须要在程序的开头位置加一行:#include<iomanip.h>。另外1)n例2C++1if(<表达式 if(<表达式>) <语句2>if(<表达式 if(<表达式2>) if…

else<表达式>C++语法规则的任一表达式,可以是算术表达式、关系表达式if语句,C++elseif的配对规则为:else总是与其前面最近的还没有if进行配对。(?)—三目运算(左结合格式:3的值3的值(2的值,并把他作为运算的结果。1:max=a>b?a:b;等价于 if 等价于:if if max=c;else <1>:1break break… <n>:《语句序列nbreak《default<n+1>}<<i>可以含有多个语句,也可以没有任何语句,当有多条语句时,不需要用大括号“{}”括起来。字符(ASCII32)和其他字符。voidmain(void){charif elseif(c>=’0’ elseif && if(c>=’A’ &&c<=’Z’)}2、执行下列程序段后,变量i的值 inti=10;{case9:case10:case11:i+=1;default:}A. 注意:breakwhile(do…while()语句的主要区别:循环条件的判断与循环体的执行顺序不do…while()语句中的循环体至少要执行一次。二、for14,3)S32break2ORWHILE3OR适用于循环次数已确定的情况下,用的比较多。1、break语句(结束循环aa

已知迭代公式:10-5#include<math.h> main(void){if do{}while(fabs(x1-x0)>1e-5);}}2设有语“for(inti=5,sum=0;i<10,sum++;i++)sum+=i;则for()语句的执行情况是 A.循环0次 B.循环4次 C.循环5次 D.循环6次循环语句“for(intx=0,y=0;y!=100||x<10;)x++;,执行的循环次数是 for(intx=0,y=0;!x&&y<=5;y++)语句执行循环的次数 A0B5C.6D.5、以下程序的输出结果是s= #include<iostream.h>void{intj,k,s,m;s=1;m=k+2;}} ,第二行 voidmain(void){intx=6; }while(--x)}1floatmax(floatx,floaty){return}voidmain(void){floata,b;}C++源(程序)main的主函数。C++程序执行总是从mainmain函数,最后在main函数中结束整个程一个函数可以调用其它函数或其本身,但任何函数(main函数外)<类型 {函数体2)return不管函数返回值的类型(return后面表达式)是什么,最后的返回值要转化成与《return语句,则函数定义的<类型>void;反之,<类型>不voidreturn参函数调用格式:<函数名>(实形参数列表第二节一、1、函数的例:floatf(floatx,floaty,intI,charc) // 3、注意兼容性(实参对于形参而言,若可以转换则称为可兼容42voidp(inta,intb){}voidmain(void)intx=100,y=200;p(x,y);cout<<x<<'\t'<<y<<'\n';p(x,x);cout<<x<<'\t'<<y<<'\n';p(y,x);cout<<x<<'\t'<<y<<'\n';p(y,}voidp(int&a,intb){}voidmain(void)intx=100,y=200;p(x,y);cout<<x<<'\t'<<y<<'\n';p(x,x);cout<<x<<'\t'<<y<<'\n';p(y,x);cout<<x<<'\t'<<y<<'\n';p(y,}voidmain(void)intx=100,y=200;p(x,}voidp(int&a,intb){})1(1)将pmain(如前面节中所述voidp(int&a,intb); voidp(int&,int intp(inta,intb=1return}voidmain(void)intt1=p(x, }A行不能写成:floatv(floata,floatb=10,floatc);//floatv(floata=20,floatintabs(intx) }floatabs(floatx){ return(x<0?-x:x);}doubleabs(doublex) return(x<0?-x:x);}voidinta;floatb;doublec;cin>>a>>b>>c; //E }例:floatfun(floatx) voidfun(float#includeiostream.h>longintf(intn){if return(1);else }voidintn;cin>>n;}intf(inti){if(i==1)return }voidintfor(int}}a)ABABB中的A中的同名标识符,即局部优先。ifswitch语句的表达式(即括号中语句)forfor语句的整个块。(后述(auto(register(static(auto寄存器静态(taic)存储类型的变量分为全局变量和静态类型变量。静态类型的变量在程序开0。(xen用前需进行外部类型变量声明,或在一个源文件中引用另一个源文件中定义的全局变量时,引用前须进行该变量的外部声明。#includeintvoidmain(void)for(inti=0;i<5;i++){intk;k=i+1;cout<<k<<'';}}intz;voidfun(intx,int&y){}voidmain(void)intx=5,y=10;z=15;}#include<iostream.h>intf(intx){staticintu=1;x+=x;returnu*=x;}void{intcout<<f(x)<<'\n';}intf(void){staticinta,b=10,c=1;a+=b;b+=c;returnc=a+b;}voidmain(void){}#include文件包含 //目录include子目录下的文件或#include “文件名”//当前工作目录下的文件被包含的文件一般是以.h、.cpp.txtinclude语句只能包不带参数的宏定义:例: 带参数的宏定义:例:# 设有宏定义:#definef(x) #defineSQR(x)x*xvoidmain(){inta,k=3;} 2class类名<《<《<#include<iostream.h>classAA{intx[10];intm;intsum;voidf(inta[],intn){inti;}voidinti;}voidshow(){inti;if((i+1)%5==0)cout<<endl;}}intx[10];intm;intsum;voidf(inta[],intvoidg(void);voidAA:f(intinti;} AA:g(void){inti;} AA:show(){inti;if((i+1)%5==0)cout<<endl;}}3#include<iostream.h>classAA{intx[10];intm;intsum;voidf(inta[],intn){inti;}voidg(void){inti;}voidshow(){inti;if((i+1)%5==0)cout<<endl;}}voidintAAar1;}classintAdd(inta,intb){returna+b;} //AdoubleAdd(doublex,doubley) {returnx+y;} //BintAdd(inta,intb) {returna+b;} //Cvoidmain(){CAddcout //Acout //调用C}四、this*this指针是一个指向当前被操作对象的特殊指针。在类的成员函数中,*this指针代表当前4classAA{intx[10];intm;intsum;AA(inta[],intn){inti;}voidg(void){inti;}voidshow(){inti;if((i+1)%5==0)cout<<endl;}}voidintt[]={1,2,3,4,5,6,7,8,9,0};AAar1(t,10);}void类型。classRectangle{ Rectangle(intl,intr,intt,intvoidvoidmain(void)Rectangler1(100,200,300,400);Rectangle Rectangler3();//加括号并不表示定义对象,更不表示要调用不待参数的构造函}classintx,y;D(int,int!\n”;} D(!\n”;}void voidmain(void)D*pd=new D*p=newD; deletepd;deletep;}class{intx,y;E(inta,intb)}如有说明 classE{intx,y;E(inta=0,intb=0){x=a;y=b;}E(){}}如有说明 classE{intx,y;E(inta=0,intb=0)}如有说明 classB{inti;intA(inta){<<"}A(By,int<<"}voidAa2=20;B}i=10A(int)!i=20A(int)!i=50 A、B、D、E44次构造函数,62CF行。classCSample{intx,y;CSample(inta,intb){}voidCSamplex1(12,105); } x1,完成赋值后,立即撤消该临时的对象。classCPoint{intx,y;CPoint(intvx,intvy){x=vx;y=vy;}voidPrint(){cout<<x<<'\t'<<y<<'\n';}voidCPointCPoint CPoint }AB行,由于在类定义中没有相应的构造函数与它们匹配,此时将调用系统C行,由于是同类型变量之间的赋值,因此不需要调用任 { classintCPoint(intvx,int {x=vx;y=vy;CPoint(CPoint}voidvoidmain(){CPointpt1(100,200);CPointpt2(pt1); CPointpt3=pt1; } 标志ABCnew inti;<<"A14a(0); //a,编译时首先对其处理,调用构造函i=0调用了构造函数!,而在整个程序结束时撤消该对象,调用析构函数voidmainA14a1(10); A14a2=20; //50a2,因此需要调用构造函数,赋值完后临时对象立即被撤消,调用析构函数}i=0调用了构造函数!i=10调用了构造函数!i=20调用了构造函数!i=50调用了构造函数!i=50调用了析构函数!i=50调用了析构函数!i=10调用了析构函数!i=0调用了析构函数!3(在函数内定义的对象static定义的局部对象,在首次到达对象的定义时调用构造函数;在程序结束时,deleteclassCCircle{intr;CCircle(inta){voidmain{CCirclec1(10);CCircle*c2=newCCircle(20);delete cout<<"结束main()} 结束main()函数! intx,y;A17( A17(inta,int x=a;y=b;cout<<"A17的构造函数!"<<endl;}voidshow(){~A17(){cout<<"A17classintLength,Width;B17( B17(inta,intb)Length=a;Width=b;cout<<"B17的构造函数!"<<endl;}voidshow(){classC17{intr,High;A17 B17 C17(inta,intb,intc,int voidshow()voidmain{C17 c1.show(}c1A17B17c1a1b1。数,c和dA17a1的初始化参数。A的构造函数!B的构造函数!C的构造函数! A《,c2(2),…,cn(参数表n) 第四节2004#includeclassElem{ intscore; intid; Elem(ints=0,inti=0){}intKey(){ returnid;}intGetScore(){ returnscore;}voidSelect(Elema[],intn){for(inti=0;i<n–1;i++){intmin=a[i].Key();intp=i,j;Elemtemp;if(a[j].Key()<min){ } }}}voidints[intid[Elemfor(inti=0;i<8;i++) for(intcout<<a[j].GetScore()<<‘\t’<<a[j].Key(}第十二章继承和派生类【4根据基类中的成员在派生类中的访问权限,可分为公有派生(public) #include<iostream.h>classA{intx,y,sum;A(intxx,intyy){}voidp(){}voidshow1(){}classB:publicA{intr,s,n;B(intrr,intss):A(ss,rr){}voidintfor(i=1;i<=s;i++)ss1*=i;for(i=1;i<=r;i++)ss2*=i;}voidshow2(){}voidmain(){Bb(2,4);}class{intx;CBase41(intclass{inty;CBase42(intclassCDerived4:publicCBase41,public{intCDerived4(inta,intb,intcCBase41(aCBase42(b)B初始化基类成员,此时是void{CDerived4}BCDerived4(inta,intb,intc):classintx;A(inta){x=a;coutAclassB:publicinty;B(inta,intb):A(a){y=b;coutBclassC:publicintz;C(inta,intb,intc):B(a,b){z=c;coutCvoid{ABC}C2293类类类类类类类1

11-6能1#include<iostream.h>classA{intA(intvoidclassB{intB(intvoidclassC:publicA,publicB{intC(inta,intb,intvoidvoidC}2#include<iostream.h>classBa{inty;intBa(intb){x=b;y=x+x;}intGety(void){returny;}classA:publicBa{A(intintGetx(void){returnclassB:publicBa{B(intintGetx(){return类类类类类类类类类类C(intvoidmain(){Cc(100);}4第一节<常为引用类型。通过友元关系,类外函数可以通过某种机制访问类中的任何成员,而2class{inti,j;CBox(inta=10,intfriendintget_area(CBox //Afriendint intget_area(CBox returns.i*s.j; intget_default_area(){CBox return }void{CBoxs1(18,12);}友元函数并不是相应类的成员函数,由于它没有隐含的*this指针,所以它不::第二节1、态成员数据与静态类型的变量的定义方式一样,即只要在成员数据的定义之前加关键字static。静态成员数据也必须有确定的值,但由于在类定义中不能成员数据直接进2[例]#include<iostream.h>classTpublic:staticintx;};intT::t=1;void{Ta,b;a.x=10;b.x=20;}3#include<iostream.h>classA{inti;staticintA(int{i=a+count;}intA::count=0;voidmain(void){AAA}(15)2 (16)count=第三节数。virtual类型>成员函数名(<参数表(可以通过域操作符“#includeiostream.h>classX{public:virtualvoidpublic:voidvoidYy,*xy=&y;X*xp=&y;}2#include<iostream.h>classX{voidvirtualf(){cout<<"X:11"<<endl;}voidvirtualg(){cout<<"X:22"<<endl;}classA:publicX{voidclassB:publicA{voidvoidg(int voidmain(){Bb;X*px=&b;}3#include<iostream.h>classX{intX(intvoidvirtualf(){cout<<m+m<<endl;}voidvirtualclassA:publicX{intn;A(inta):X(100){n=a;}voidf(){cout<<n<<endl;}voidg(int voidmain(){Aa(10);X*p=&a;}4#include<iostream.h>classShape{virtualfloatclassCircle:publicShape{floatr;classRectangle:publicShape{floath,w;Rectangle(floatc,floatd){h=c;w=d;}floatArea(){returnh*w;}voidfun(Shape*s){}voidmain(){Circlec(4);Rectangler(5,2);}virtual类型>(<参数表2.::?:*(指针运算符 值运算符、数组下标运算符”[]”、函数调用运算符”()”、new、delete等。<类型 operator<单目运算符 {}//<类型operator二元运算符>(<参数{}//X {}//X>{}//++----<类型operator{}//函数体friend<类型>operator &{}//<类型operator{}//函数体friend<类型>operator &,{}//c++(三目运算符?:)(成员选择符.)(*(::(求字节操作符sizeofthis指针用友元函数实现运算符的重载时,不能使用*this实现前置“++;实现后置“++1133713.5}#ifndefEMPLOYEE_H#defineEMPLOYEE_H#include<iostream>#include<string>usingnamespacestd;classEmployee{voidget_information(stringi_number_ID,stringi_name,stringi_card_ID);virtualstringout_number_ID();virtualstringout_card_ID();virtualstringoutName();virtualvoidget_laborage(inti_b_laborage);virtualintout_laborage();virtualvoidstringm_number_ID;stringm_name;stringm_card_ID;//int#ifndefFUNCTIONARY_H#define#includeclassFunctionary:public{voidget_sales(inti_sales);intout_sales();voidget_laborage(inti_b_laborage);intout_laborage();voidget_information(stringi_number_ID,stringi_name,stringi_card_ID);stringout_number_ID();stringout_card_ID();stringoutName();voidout_Date();int#ifndefJOBBER_H#define#includeclassJobber:public{voidget_workTime(inti_workTime);intout_workTime();voidget_laborage(inttime_laborage);intout_laborage();voidget_information(stringi_number_ID,stringi_name,stringi_card_ID);stringout_number_ID();stringout_card_ID();stringoutName();voidout_Date();intm_workTime;inttime_laborage;#ifndefMANGER_H#defineMANGER_H#include"Employee.h"classManager:public{voidget_laborage(inti_b_laborage);intout_laborage();voidget_information(stringi_number_ID,stringi_name,stringi_card_ID);stringout_number_ID();stringout_card_ID();stringoutName();voidout_Date();#include{}string{return}string{return}string{return}voidEmployee::get_laborage(int{}int{return}void{}{}voidFunctionary::get_sales(int{}int{return}voidFunctionary::get_laborage(int{}int{return}{}string{return}string{return}string{return}void{ "<<m_name<<"\n\t\t工资:"<<m_laborage<<"本月的销售额:}{}{}#includevoidJobber::get_workTime(int{}int{return}voidJobber::get_laborage(int{}int{return}{}string{return}string{return}string{return}void{ "<<m_name<<"\n\t\t工资:"<<m

温馨提示

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

评论

0/150

提交评论