C语言试题、学习、考试大全34课件

PPT
  • 阅读 35 次
  • 下载 0 次
  • 页数 55 页
  • 大小 309.512 KB
  • 2022-11-13 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
C语言试题、学习、考试大全34课件
可在后台配置第一页与第二页中间广告代码
C语言试题、学习、考试大全34课件
可在后台配置第二页与第三页中间广告代码
C语言试题、学习、考试大全34课件
可在后台配置第三页与第四页中间广告代码
C语言试题、学习、考试大全34课件
C语言试题、学习、考试大全34课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 55
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】C语言试题、学习、考试大全34课件.ppt,共(55)页,309.512 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-7159.html

以下为本文档部分文字说明:

C++程序设计基础福州大学数学与计算机科学学院吴英杰2022/11/13福州大学数学与计算机科学学院2C++语言概述——面向对象的程序设计语言•C++支持数据封装•C++类中包含私有、公有和保护成员•C++通过发送消息来处理对象•C+

+中允许友元破坏封装性•C++允许函数名和运算符重载•C++支持继承性•C++支持动态联编在C++中,结构可作为一种特殊的类,它虽然可以包含函数,但它没有私有或保护的成员。在C++中,类是支持数据封装的工具,对象则是数据封装的实现。类

是类型,是对象的抽象,对象是类的具体实例。一个类可以有多个对象,每个对象都有自己的存储单元,而类不占存储单元。C++中类是数据和函数的封装体,它提供一种数据访问严格控制的机制,数据被隐藏在封装体中,该封装体通过操作接口与外界交换信息。友元可以是在类外定义的函数,也可以

是在类外定义的整个类。友元可以访问类的私有成员。面向对象的程序设计的四大特征:抽象、封装、继承、多态。2022/11/13福州大学数学与计算机科学学院3C++与C语言的关系:C语言是C++的一个子集,C++包含了C语言的全部内容。•C++保持与C语言的兼容•C++对C语言作了

很多改进•C++与C语言的本质差别在于C++是面向对象的,而C语言是面向过程的。(1)增加了一些新的运算符,如::,new,delete,->*等;(2)改进了类型系统,增加了安全性;(3)引进了引用的概念,使用引用作函数参数带来了很大方便;(4)允许函数重载,允许

设置缺省参数,提高了编程的灵活性;(5)引进内联函数,提高了程序效率;(6)可根据需要随时对变量进行说明。面向过程的程序设计将数据和对数据的操作分离,程序是由一个个的函数组成的,面向对象的程序设计将数据和操作封装在一起,程序是由一个个对象组成的,对象之间通过接口进行通信,它能够较

好地支持程序代码的复用。2022/11/13福州大学数学与计算机科学学院4C++数据操作基础2.1C++程序进行输入和输出的操作方法#include<iostream.h>intmain(){intx,y;/

/定义两个整型变量cin>>x>>y;//键盘输入变量值cout<<“x=”<<x<<endl<<“y=”<<y<<endl;//按格式屏幕return0;输出变量值}2022/11/13福州大学数学与计算机科学学院5cin是一个代表标准输入设备(一般代表键盘设备)的对象,co

ut是一个代表标准输出设备(一般代表显示设备)的对象,它们都是C++系统预定义的对象。它们以及输入操作符“>>”和输出操作符“<<”都在头文件iostream.h中被声明。2022/11/13福州大学数学与计算机科学学院62.2控制结构条件语句,循环语句,转移语句2.2.1条件语句if语句

if…else语句if…elseif语句?条件操作符switch语句2022/11/13福州大学数学与计算机科学学院7if(条件表达式){语句序列}if(条件表达式){语句序列1}else{语句序列2}if(条件表达式1){语句序列1}else

if(条件表达式2){语句序列2}elseif(条件表达式3){语句序列3}else{语句序列4}2022/11/13福州大学数学与计算机科学学院8?是一个三元操作符,被称为条件操作符。使用语法是:表达式1?表达

式2:表达式3等价于:if(表达式1)表达式2;else表达式3;例:result=(a>=0)?a:-a注意:表达式1、2、3的数据类型不能是void类型。2022/11/13福州大学数学与计算机科学学院9switch(变

量名){case值1:语句序列1;break;case值2:语句序列2;break;……default:语句序列n;}2022/11/13福州大学数学与计算机科学学院102.2.2循环语句for循环:for(exp1;exp2;

exp3){statement;….}while循环:while(expression){……}do…while循环:do{statement;…...}while(expression);三种循环都

可以嵌套。2022/11/13福州大学数学与计算机科学学院11for(exp1;exp2;exp3){statement;….}等价于:exp1;while(exp2){statement;……exp3;}例:in

tsum=0;for(inti=1;i<=10;i++)sum+=i;2022/11/13福州大学数学与计算机科学学院122.2.3转移语句break语句:强制退出循环及中断case语句,直接执行循环体后的语句。continue语句:不完全退出循环,而是使循

环重新回到测试位置,并忽略此语句至循环结束前的语句序列。goto语句:无条件转移,只限在同一程序段内转换,不能跳到另一函数或程序内。2022/11/13福州大学数学与计算机科学学院132.3指针1.定义:包含另一

变量内存地址的变量。3.指针与数组的关系数组是指针的另一种表示法。数组的名字实际就是数组的起始地址。intarr[2]={0,1};arr[1]和*(arr+1)是完全一致的。2.声明指针在使用前需进行

声明,声明格式为:数据类型*变量;或数据类型*变量;2022/11/13福州大学数学与计算机科学学院144.“&”与“*”“&”是一个一元操作符,它操作一个对象,得到该对象的存储单元的地址值;例:inti;int*p;p=&i;*p=*p+5

;“*”也是一个一元操作符,用于表达被指针指向的对象。2022/11/13福州大学数学与计算机科学学院155.new与deletenew用于为指针分配内存空间;delete用于释放指针所占有的内存空间。标准C用malloc和free函数分配内存块和释放内存块。

2022/11/13福州大学数学与计算机科学学院16(5.1)运算符new:运算符new用于动态存储分配。new返回一个指向所分配空间的指针。例:inty;y=newint;y=10;也可将上述各语句作适当合并如下:inty=newint;y=10;或inty=ne

wint(10);或inty;y=newint(10);2022/11/13福州大学数学与计算机科学学院17(5.2)一维数组:为了在运行时创建一个大小可动态变化的一维浮点数组x,可先将x声明为一个float类型的指针。然后用

new为数组动态地分配存储空间。例:floatx=newfloat[n];创建一个大小为n的一维浮点数组。运算符new分配n个浮点数所需的空间,并返回指向第一个浮点数的指针。然后可用x[0],x[1],…,x[n-1]来访问每个数组元素。2022/11/1

3福州大学数学与计算机科学学院18(5.3)运算符delete:当动态分配的存储空间已不再需要时应及时释放所占用的空间。用运算符delete来释放由new分配的空间。例:deletey;delete[]x;分别释放分配给y的空间和分配给一维数组x的空间。2022

/11/13福州大学数学与计算机科学学院19(5.4)动态二维数组:创建类型为Type的动态工作数组,这个数组有rows行和cols列。template<classType>voidMake2DArra

y(Type**&x,introws,intcols){x=newType*[rows];for(inti=0;i<rows;i++)x[i]=newType[cols];}2022/11/13福州大学数学与计算机科学学院20当不再需要一个动态

分配的二维数组时,可按以下步骤释放它所占用的空间。首先释放在for循环中为每一行所分配的空间。然后释放为行指针分配的空间。释放空间后将x置为0,以防继续访问已被释放的空间。template<classType>voidDelete2

DArray(Type**&x,introws){for(inti=0;i<rows;i++)delete[]x[i];delete[]x;x=0;}2022/11/13福州大学数学与计算机科学学院212.4函数与参数传递当

一个函数定义有形参时,在进行函数调用时,必须提供与形参个数、类型相同的实参。在C++中,有两种参数传递机制将实参的值传递给形参:值传递(值调用)和引用传递(引用调用)。1.值传递在这种机制中,实参的值

被拷贝到由相应形参名字所标识的对象中。在函数内部对形参的访问或更新都是是对这个对象的访问或更新。实参本身的值在调用前后和调用过程中都不发生变化。2022/11/13福州大学数学与计算机科学学院22intdouble(inta){a*=2;cout<<“a=“<<a<<endl;ret

urna;}#include<iostream.h>voidmain(){intb=10;double(b);cout<<“b=“<<b;}运行结果:a=20b=102022/11/13福州大学数学与计算机科学学院232.引用传递若希望通过函数调用改变实参的值,就必须采用引用传递机制。关于引

用的具体含义及使用要点将在3.7节中讲解。voidswap(int&x,int&y){inttemp;temp=x;x=y;y=temp;}2022/11/13福州大学数学与计算机科学学院24第三章类与对象本章主要内容:类的成员构

造函数与析构函数;数据成员和成员函数;内联函数;类和对象的定义this指针,const关键字友元函数引用2022/11/13福州大学数学与计算机科学学院253.1类的定义类是对一组客观对象的抽象,它将该组对象所具有的共同特征(包括结构特征和行为特征)集中起

来,以说明该组对象的能力和性质。类(class)是一种用户自定义的数据类型。class类名称{typevars;memberfunctions;public:typevars;memberfunctions;};2022/11/13福州大学数学与计算机科学学院26cla

ssCPerson{charname;public:intage;floatheight;voidPrintAge();voidPrintHeight();};2022/11/13福州大学数学与计算机科学学院27注意:1.类名称一般以

“C”开头,以区别于其他标识符。如classCPen{……}2.定义类,除了给出操作名和数据结构外,还必须给出各个成员函数的实现。CPen::MemberFunction(……){……}由于不同的类允许有相同名称的成员函数,因此,在类外定义成员函数的

实现时,必须在成员函数名前加上所属类名和作用域操作符“::”。2022/11/13福州大学数学与计算机科学学院283.类中的数据(又称数据成员)和函数(又称成员函数)分为三种类型,分别由三种访问控制修饰符public,private,protected加以修饰。public:指定其

后的成员是公有的。它们是类与外部的接口,任何外部函数都可以访问公有数据成员和成员函数。这三种修饰符在类中可以任何次序出现,用于修饰在它们之后列出的成员名字能被程序的其它部分访问的权限。2022/11/13福州大学数学与计算机科学

学院29private:这一部分称为私有部分。若省略关键字private,则必须紧跟在类名称后声明。类中的数据和函数若不特别声明,都被视为私有类型。这种类型的数据只允许类本身声明的成员函数对其进行存取,且不能被继承。classCPerson{charname;public:intage;flo

atheight;voidPrintAge();voidPrintHeight();};2022/11/13福州大学数学与计算机科学学院303.2对象的定义对象是类的实例。对象可以在声明类时直接定义,也可以在声明类之后单独定义。classCPerson{……}zhang;或classCPers

on{……};CPersonzhang;protected:保护类型,这种类型的数据也只能被类本身的成员函数访问,但可以被派生类继承。2022/11/13福州大学数学与计算机科学学院31通过对象可以访问类中的公有类型数据和成员函数,其使用方式为:对象名.成员函数名对象名.数据成员例:zhang.

age=20;zhang.PrintAge();zhang.name=“zhanglei“;//error2022/11/13福州大学数学与计算机科学学院32通过指向类类型对象的指针访问类的公有数据成员和成员函数

时,其使用方式为:指针名->数据成员指针名->成员函数例:CPerson*pWang;pWang->age=30;pWang->PrintAge();类和对象的关系就如同整型int与整型变量i之间的关系。2022/11/13福州

大学数学与计算机科学学院333.3类的成员3.3.1构造函数构造函数是一个特殊的类成员函数,用于初始化类变量或分配内存空间。当用类定义一个对象时,自动调用构造函数,使对象保持一个确定的状态。1.构造函数的声明classC

Example{intI;public:CExample();……};2022/11/13福州大学数学与计算机科学学院342.构造函数的特点(1)构造函数与类必须具有相同的名字。例:classCExample{CExample();CExample(int

i);CExample(intx,inty);private:intmember1,member2;};(2)创建对象时自动执行构造函数,构造函数不能在程序中被显式调用。(3)构造函数不需要函数类型,不能被继承。(4)构造函数可以接受参数并能够重载。2022/11/13福州大学数学与

计算机科学学院35CExample::CExample(inti){member1=i;member2=0;}intmain(){CExampleex1;CExampleex2(1);CExampleex3(2,3);……}CExample::CExampl

e(){member1=0;member2=0;}CExample::CExample(intx,inty){member1=x;member2=y;}2022/11/13福州大学数学与计算机科学学院36(5)若程序没有为一个类定义任何构造函数,则编

译器生成一个不带参数的公有构造函数,这个构造函数什么也不做,称为缺省构造函数。例:CExample::CExample{}3.3.2析构函数析构函数与构造函数功能相反,也是类成员函数,通常用于释放已分配的内存空间或

完成对象被清除前的一些清理工作。2022/11/13福州大学数学与计算机科学学院37classCExample{public:CExample();voidPrint();~CExample();……};析构函数的特点:1.与构造函数具有相同的名字,前面必须加上“~”符号。2.析构函数没有函

数类型,不能被继承。2022/11/13福州大学数学与计算机科学学院383.3.3内联函数在函数定义前加上一个inline前缀,该函数就被定义成一个内联函数。3.析构函数不能带有参数,而且不可以重载。4.析构函数在

结束时被自动调用。对于内联函数,编译时在所有调用该函数的地方将装入实际的函数代码。内联函数的声明必须出现在对它的每个调用之前。2022/11/13福州大学数学与计算机科学学院393.3.5对象与成员函数成员函数的参数和返回值不仅可以是整型、字符型、指针类型等,也可以把

对象作为参数和返回值。classCPoint{floatx,y;public:CPoint(floata,floatb);CPointAdd(CPointA);……}2022/11/13福州大学数学与计算机科学学院40CPoint::

CPoint(floata,floatb){x=a;y=b;}CPointCPoint::Add(CPointA){CPointB;B.x=x+A.x;B.y=y+A.y;returnB;}2022/11/13

福州大学数学与计算机科学学院413.4this指针this指针是一个隐含于每个类的成员函数中的特殊指针。this用于指向以该成员函数所属类定义的对象。当某个对象调用成员函数时,成员函数的this指针便指向该对象。因此,当不同的对象引用同一个成员函数时,编译器就依据成员函数this

指针指向的不同对象来确定引用哪一个对象的数据成员。2022/11/13福州大学数学与计算机科学学院42例:#include<iostream.h>classA{public:A(){a=b=0;}A(inti,intj){a=i;b=j;}voi

dcopy(A&aa);voidprint(){cout<<a<<“,”<<b<<endl;}private:inta,b;};voidA::copy(A&aa){if(this==&aa)return;*this=aa;}v

oidmain(){Aa1,a2(3,4);a1.copy(a2);a1.print();}2022/11/13福州大学数学与计算机科学学院433.5const关键字3.5.2const的特点及使用注意事项3.5.1声明语法const是一个类型修饰符,语法是:Tcon

st其中,T是一个类型表达式。const与T之间的关系是左结合的。1.使用const声明的对象不能被更新。2.由于这种对象不能被更新,因此必须进行初始化。intconsta=2;a=1;//error2022/11/

13福州大学数学与计算机科学学院443.const常被用于声明函数的形参。指针类型或引用类型的形参使函数可以更新调用者中的对象,但若函数并不更新指针所指向的对象或引用所引用的对象,那么最好将这样的参数使用const关键字进行声明。

4.当T是一个简单的类型名时,习惯上写作constT。例:constintx=0;voidPrint()const;//类的常成员函数5.对于类中不更新对象的数据成员的成员函数,可以将其使用const进行声明

。当一个成员函数使用const进行声明后,就表明这个函数可以操作常对象。没有使用const关键字进行声明的成员函数则不能操作常对象。2022/11/13福州大学数学与计算机科学学院456.由于const对象必须初始化且不能被更新,因此,当类

中声明了const数据成员时,只能通过成员初始化列表来构造该数据成员。例:classCExample{public:CExample(intx);private:constinta;};CExample::CExample(intx):a(x){};在类中声明静态的cons

t数据成员时,classA{private:staticconstintSIZE;}constintA::SIZE=10;2022/11/13福州大学数学与计算机科学学院463.6友元函数3.6.1定义友元函数是一种特殊的函数,它不是类的成员函数,但允

许它访问类的私有类型数据和保护类型数据。3.6.2声明方式class类名称//相关的类{typevars;……public:friend函数类型函数名称();//声明友元……}函数类型函数名称()//定义友元{……}2022/11/13福州大学数学与计

算机科学学院473.6.3特点1.友元可以是一个一般的函数(友元函数),也可以是另一个类的成员函数(友元成员),还可以是整个的一个类(友元类,这时类中的所有成员函数都是友元函数)。2.友元函数须在私有成员可被它访问的类中声明,而函数体则在类外声明。3.友元函数虽

然在类中声明,但它不是该类的成员函数,而是独立于任何类的一般的外界函数,它被允许访问该类的所有对象的私有成员。4.C++中使用友元是为了提高程序的运行效率。但为了确保数据的完整性及数据封装与隐藏的原则,应尽可能不使用或少使用友元函数。20

22/11/13福州大学数学与计算机科学学院483.7引用引用是给对象取一个别名,它引入了对象的一个同义词。error3.7.1定义定义引用的关键字:T&例:inti;int&j;int&j=i;j=i;j=6;注意:(1)引用不产生对象的副本,而是对象的同义词,它们表示同一

个对象。(2)定义引用时,必须马上对它进行初始化,不能定义完后再赋值。2022/11/13福州大学数学与计算机科学学院49(3)对对象或对引用的任何操作都会影响到它们共同的对象。3.7.2引用的使用引用参数—引用可以用在需要改变实参变量的函数中;#incl

ude<iostream.h>voidswap(intx,inty){inttemp;temp=x;x=y;y=temp;}(4)引用一旦被初始化,就不能被改变,也不能更新引用,使其标识另一个对象。2022/11/13福州大学数学与计算机科学学院50运行结果

:a=1b=2a=1b=2main(){inta=1,b=2;cout<<“a=”<<a<<“b=”<<b<<endl;swap(a,b);cout<<“a=”<<a<<“b=”<<b<<endl;return1;}若要使a、b的实际值交换,swap函数应定义

为:voidswap(int&x,int&y){……}函数体不变。2022/11/13福州大学数学与计算机科学学院513.8模板——模板用于增强类和函数的可重用性。intmax(intx,inty){returnx>y?x:y;}double

max(doublex,doubley){returnx>y?x:y;}template<classT>Tmax(Tx,Ty){returnx>y?x:y;}inti=max(1,2);doublex=max(1.0,2.0);2022/11/13福州大学数学与

计算机科学学院523.9运算符重载——为用户定义的数据类型重载运算符。boolRectangle::operator==(constRectangle&s){if(this==&s)returntrue;i

f((x1=s.x1)&&(y1=s.y1)&&(h=s.h)&&(w=s.w))returntrue;elsereturnfalse;}经重载运算符==后,即可用运算符==来判定2个Rectangle对象是否相同。2022/11

/13福州大学数学与计算机科学学院533.10继承通过继承机制,可以利用已有的数据类型来定义新的数据类型。所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员。我们称已存在的用来派生新类的类为基类

,又称为父类。由已存在的类派生出的新类称为派生类,又称为子类。在C++语言中,一个派生类可以从一个基类派生,也可以从多个基类派生。从一个基类派生的继承称为单继承;从多个基类派生的继承称为多继承。派生类的定义格式单继承的定义格式如下:class<派生类名>:<继承方式

><基类名>{<派生类新定义成员>};多继承的定义格式如下:class<派生类名>:<继承方式1><基类名1>,<继承方式2><基类名2>,…{<派生类新定义成员>};2022/11/13福州大学数学与计算机科学学

院54派生类的三种继承方式公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。1.公有继承(public)公有继承的特点是基类的公有成员和保

护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的。2.私有继承(private)私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问。3.保护继承(protected)

保护继承的特点是基类的所有公有成员和保护成员都成为派生类的保护成员,并且只能被它的派生类成员函数或友元访问,基类的私有成员仍然是私有的。2022/11/13福州大学数学与计算机科学学院55#include<iostream>usin

gnamespacestd;classA{public:voidp1(){cout<<"A"<<endl;}private:voidp2(){cout<<"B"<<endl;}protected:voidp3(){cout<<"C"

<<endl;}};classB:publicA{}b;classC:privateA{}c;classD:protectedA{}d;intmain(){b.A::p1();//b.A::p2();//b.A:

:p3();//c.A::p1();//c.A::p2();//c.A::p3();//d.A::p1();//d.A::p2();//d.A::p3();return0;}

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?