C语言试题学习考试大全.pptx

上传人:莉*** 文档编号:73646731 上传时间:2023-02-21 格式:PPTX 页数:54 大小:295.78KB
返回 下载 相关 举报
C语言试题学习考试大全.pptx_第1页
第1页 / 共54页
C语言试题学习考试大全.pptx_第2页
第2页 / 共54页
点击查看更多>>
资源描述

《C语言试题学习考试大全.pptx》由会员分享,可在线阅读,更多相关《C语言试题学习考试大全.pptx(54页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、2023/2/211C+与C语言的关系:C语言是C+的一个子集,C+包含了C语言的全部内容。C+保持与C语言的兼容 C+对C语言作了很多改进 C+与C语言的本质差别在于C+是面向对象的,而C语言是面向过程的。(1)增加了一些新的运算符,如:,new,delete,-*等;(2)改进了类型系统,增加了安全性;(3)引进了引用的概念,使用引用作函数参数带来了很大方便;(4)允许函数重载,允许设置缺省参数,提高了编程的灵活性;(5)引进内联函数,提高了程序效率;(6)可根据需要随时对变量进行说明。面向过程的程序设计将数据和对数据的操作分离,程序是由一个个的函数组成的,面向对象的程序设计将数据和操作封

2、装在一起,程序是由一个个对象组成的,对象之间通过接口进行通信,它能够较好地支持程序代码的复用。第1页/共54页2023/2/212C+数据操作基础2.1 C+程序进行输入和输出的操作方法#include int main()int x,y;/定义两个整型变量 cin x y;/键盘输入变量值 cout“x=”x endl “y=”y”和输出操作符“=0)?a:-a 注意:表达式1、2、3的数据类型不能是 void 类型。第6页/共54页2023/2/217switch(变量名)case 值1:语句序列1;break;case 值 2:语句序列2;break;default:语句序列 n;第7页

3、/共54页2023/2/2182.2.2 循环语句for 循环:for(exp1;exp2;exp3)statement;.while 循环:while(expression)do while 循环:do statement;.while(expression);三种循环都可以嵌套。第8页/共54页2023/2/219 for(exp1;exp2;exp3)statement;.等价于:exp1;while(exp2)statement;exp3;例:int sum=0;for(int i=1;i=10;i+)sum+=i;第9页/共54页2023/2/21102.2.3 转移语句break

4、语句:强制退出循环及中断case语句,直接执行循环体后的语句。continue 语句:不完全退出循环,而是使循环重新回到测试位置,并忽略此语句至循环结束前的语句序列。goto 语句:无条件转移,只限在同一程序段内转换,不能跳到另一函数或程序内。第10页/共54页2023/2/21112.3 指针 1.定义:包含另一变量内存地址的变量。3.指针与数组的关系 数组是指针的另一种表示法。数组的名字实际就是数组的起始地址。int arr2=0,1;arr1 和*(arr+1)是完全一致的。2.声明 指针在使用前需进行声明,声明格式为:数据类型 *变量;或 数据类型*变量;第11页/共54页2023/2

5、/21124.“&”与 “*”“&”是一个一元操作符,它操作一个对象,得到该对象的存储单元的地址值;例:int i;int *p;p=&i;*p=*p+5;“*”也是一个一元操作符,用于表达被指针指向的对象。第12页/共54页2023/2/21135.new 与 delete new 用于为指针分配内存空间;delete 用于释放指针所占有的内存空间。标准C用malloc 和 free 函数分配内存块和释放内存块。第13页/共54页2023/2/2114(5.1)运算符new:运算符new用于动态存储分配。new返回一个指向所分配空间的指针。例:int y;y=new int;y=10;也可将

6、上述各语句作适当合并如下:int y=new int;y=10;或 int y=new int(10);或 int y;y=new int(10);第14页/共54页2023/2/2115(5.2)一维数组:为了在运行时创建一个大小可动态变化的一维浮点数组x,可先将x声明为一个float类型的指针。然后用new为数组动态地分配存储空间。例:float x=new floatn;创建一个大小为n的一维浮点数组。运算符new分配n个浮点数所需的空间,并返回指向第一个浮点数的指针。然后可用x0,x1,xn-1来访问每个数组元素。第15页/共54页2023/2/2116(5.3)运算符delete:当

7、动态分配的存储空间已不再需要时应及时释放所占用的空间。用运算符delete来释放由new分配的空间。例:delete y;delete x;分别释放分配给 y的空间和分配给一维数组x的空间。第16页/共54页2023/2/2117(5.4)动态二维数组:创建类型为Type的动态工作数组,这个数组有rows行和cols列。template void Make2DArray(Type*&x,int rows,int cols)x=new Type*rows;for(int i=0;irows;i+)xi=new Typecols;第17页/共54页2023/2/2118当不再需要一个动态分配的二维

8、数组时,可按以下步骤释放它所占用的空间。首先释放在for循环中为每一行所分配的空间。然后释放为行指针分配的空间。释放空间后将x置为0,以防继续访问已被释放的空间。template void Delete2DArray(Type*&x,int rows)for(int i=0;irows;i+)delete xi;delete x;x=0;第18页/共54页2023/2/21192.4 函数与参数传递 当一个函数定义有形参时,在进行函数调用时,必须提供与形参个数、类型相同的实参。在C+中,有两种参数传递机制将实参的值传递给形参:值传递(值调用)和引用传递(引用调用)。1.值传递 在这种机制中,实

9、参的值被拷贝到由相应形参名字所标识的对象中。在函数内部对形参的访问或更新都是是对这个对象的访问或更新。实参本身的值在调用前后和调用过程中都不发生变化。第19页/共54页2023/2/2120int double(int a)a*=2;cout“a=“aendl;return a;#include void main()int b=10;double(b);cout“b=“数据成员 指针名 -成员函数例:CPerson *pWang;pWang-age=30;pWang-PrintAge();类和对象的关系就如同整型 int 与整型变量 i 之间的关系。第30页/共54页2023/2/21313

10、.3 类的成员3.3.1 构造函数 构造函数是一个特殊的类成员函数,用于初始化类变量或分配内存空间。当用类定义一个对象时,自动调用构造函数,使对象保持一个确定的状态。1.构造函数的声明 class CExample int I;public:CExample();;第31页/共54页2023/2/21322.构造函数的特点 (1)构造函数与类必须具有相同的名字。例:class CExample CExample();CExample(int i);CExample(int x,int y);private:int member1,member2;(2)创建对象时自动执行构造函数,构造函数不能在

11、程 序中被显式调用。(3)构造函数不需要函数类型,不能被继承。(4)构造函数可以接受参数并能够重载。第32页/共54页2023/2/2133CExample:CExample(int i)member1=i;member2=0;int main()CExample ex1;CExample ex2(1);CExample ex3(2,3);CExample:CExample()member1=0;member2=0;CExample:CExample(int x,int y)member1=x;member2=y;第33页/共54页2023/2/2134 (5)若程序没有为一个类定义任何构造函

12、数,则编译器 生成一个不带参数的公有构造函数,这个构造函数 什么也不做,称为缺省构造函数。例:CExample:CExample3.3.2 析构函数 析构函数与构造函数功能相反,也是类成员函数,通常用于释放已分配的内存空间或完成对象被清除前的一些清理工作。第34页/共54页2023/2/2135 class CExample public:CExample();void Print();CExample();析构函数的特点:1.与构造函数具有相同的名字,前面必须加上“”符号。2.析构函数没有函数类型,不能被继承。第35页/共54页2023/2/21363.3.3 内联函数 在函数定义前加上一个

13、inline前缀,该函数就被定义成一个内联函数。3.析构函数不能带有参数,而且不可以重载。4.析构函数在 结束时被自动调用。对于内联函数,编译时在所有调用该函数的地方将装入实际的函数代码。内联函数的声明必须出现在对它的每个调用之前。第36页/共54页2023/2/21373.3.5 对象与成员函数成员函数的参数和返回值不仅可以是整型、字符型、指针类型等,也可以把对象作为参数和返回值。class CPoint float x,y;public:CPoint(float a,float b);CPoint Add(CPoint A);第37页/共54页2023/2/2138CPoint :CPoi

14、nt(float a,float b)x=a;y=b;CPoint CPoint:Add(CPoint A)CPoint B;B.x=x+A.x;B.y=y+A.y;return B;第38页/共54页2023/2/21393.4 this指针 this指针是一个隐含于每个类的成员函数中的特殊指针。this用于指向以该成员函数所属类定义的对象。当某个对象调用成员函数时,成员函数的this指针便指向该对象。因此,当不同的对象引用同一个成员函数时,编译器就依据成员函数 this 指针指向的不同对象来确定引用哪一个对象的数据成员。第39页/共54页2023/2/2140例:#include clas

15、s A public:A()a=b=0;A(int i,int j)a=i;b=j;void copy(A&aa);void print()couta“,”bendl;private:int a,b;void A:copy(A&aa)if(this=&aa)return;*this=aa;void main()A a1,a2(3,4);a1.copy(a2);a1.print();第40页/共54页2023/2/21413.5 const关键字3.5.2 const 的特点及使用注意事项 3.5.1 声明语法 const 是一个类型修饰符,语法是:T const 其中,T是一个类型表达式。co

16、nst 与 T 之间的关系是左结合的。1.使用const 声明的对象不能被更新。2.由于这种对象不能被更新,因此必须进行初始化。int const a=2;a=1;/error第41页/共54页2023/2/21423.const 常被用于声明函数的形参。指针类型或引用类型的形参使函数可以更新调用者中的对象,但若函数并不更新指针所指向的对象或引用所引用的对象,那么最好将这样的参数使用 const 关键字进行声明。4.当T是一个简单的类型名时,习惯上写作 const T。例:const int x=0;void Print()const;/类的常成员函数 5.对于类中不更新对象的数据成员的成员函

17、数,可以将其使用const进行声明。当一个成员函数使用const进行声明后,就表明这个函数可以操作常对象。没有使用const关键字进行声明的成员函数则不能操作常对象。第42页/共54页2023/2/21436.由于const对象必须初始化且不能被更新,因此,当类中声明了const数据成员时,只能通过成员初始化列表来构造该数据成员。例:class CExample public:CExample(int x);private:const int a;CExample:CExample(int x):a(x);在类中声明静态的const数据成员时,class A private:static co

18、nst int SIZE;const int A:SIZE =10;第43页/共54页2023/2/21443.6 友元函数3.6.1 定义 友元函数是一种特殊的函数,它不是类的成员函数,但允许它访问类的私有类型数据和保护类型数据。3.6.2 声明方式class 类名称/相关的类 type vars;public:friend 函数类型 函数名称();/声明友元 函数类型 函数名称()/定义友元 第44页/共54页2023/2/21453.6.3 特点1.友元可以是一个一般的函数(友元函数),也可以是另一个类的成员函数(友元成员),还可以是整个的一个类(友元类,这时类中的所有成员函数都是友元函

19、数)。2.友元函数须在私有成员可被它访问的类中声明,而函数体则在类外声明。3.友元函数虽然在类中声明,但它不是该类的成员函数,而是独立于任何类的一般的外界函数,它被允许访问该类的所有对象的私有成员。4.C+中使用友元是为了提高程序的运行效率。但为了确保数据的完整性及数据封装与隐藏的原则,应尽可能不使用或少使用友元函数。第45页/共54页2023/2/21463.7 引用 引用是给对象取一个别名,它引入了对象的一个同义词。error3.7.1 定义 定义引用的关键字:T&例:int i;int&j;int&j=i;j=i;j=6;注意:(1)引用不产生对象的副本,而是对象的同义词,它们表示同一个

20、对象。(2)定义引用时,必须马上对它进行初始化,不能定义完后再赋值。第46页/共54页2023/2/2147(3)对对象或对引用的任何操作都会影响到它们共同的对象。3.7.2 引用的使用引用参数引用可以用在需要改变实参变量的函数中;#include void swap(int x,int y)int temp;temp=x;x=y;y=temp;(4)引用一旦被初始化,就不能被改变,也不能更新引用,使其标识另一个对象。第47页/共54页2023/2/2148运行结果:a=1 b=2 a=1 b=2 main()int a=1,b=2;cout“a=”a“b=”b endl;swap(a,b);

21、cout“a=”a“b=”b y?x:y;double max(double x,double y)return xy?x:y;template T max(T x,T y)return xy?x:y;int i=max(1,2);double x=max(1.0,2.0);第49页/共54页2023/2/21503.9 运算符重载为用户定义的数据类型重载运算符。bool Rectangle:operator=(const Rectangle&s)if(this=&s)return true;if(x1=s.x1)&(y1=s.y1)&(h=s.h)&(w=s.w)return true;el

22、se return false;经重载运算符=后,即可用运算符=来判定2个Rectangle对象是否相同。第50页/共54页2023/2/21513.10 继承通过继承机制,可以利用已有的数据类型来定义新的数据类型。所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员。我们称已存在的用来派生新类的类为基类,又称为父类。由已存在的类派生出的新类称为派生类,又称为子类。在C+语言中,一个派生类可以从一个基类派生,也可以从多个基类派生。从一个基类派生的继承称为单继承;从多个基类派生的继承称为多继承。派生类的定义格式单继承的定义格式如下:class:;多继承的定义格式如下:class:,;

23、第51页/共54页2023/2/2152派生类的三种继承方式公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。1.公有继承(public)公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的。2.私有继承(private)私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问。3.保护继承(protected)保护继承的特点是基类的所有公有成员和保护成员都成为派生类的保护成员,并且只能被它的派生类成员函数或友元访问,基类的私有成员仍然是私有

24、的。第52页/共54页2023/2/2153#includeusing namespace std;class Apublic:void p1()coutAendl;private:void p2()coutBendl;protected:void p3()coutCendl;class B:public Ab;class C:private Ac;class D:protected Ad;int main()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();return 0;第53页/共54页2023/2/21福州大学数学与计算机科学学院54感谢您的欣赏!第54页/共54页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁