C语言的产生学习课件_第1页
C语言的产生学习课件_第2页
C语言的产生学习课件_第3页
C语言的产生学习课件_第4页
C语言的产生学习课件_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

1C++的特点全面兼容C它保持了C的简洁、高效和接近汇编语言等特点对C的类型系统进行了改革和扩充C++也支持面向过程的程序设计,不是一个纯正的面向对象的语言支持面向对象的方法C++语言概述2变量的存储类型(一)从变量的作用域角度,分为全局变量和局部变量。从变量值存在时间角度分为静态存储变量和动态存储变量。内存中供用户使用的存储空间分为:程序区静态存储区动态存储区(栈区和堆区(malloc(),free()))全局变量存放在静态存储区,局部变量存放在动态存储区中。基本数据类型和表达式3变量的存储类型(二)auto存储类属于一时性存储,其存储空间可以被若干变量多次覆盖使用。函数内定义的变量(自动变量)register存储类存放在通用寄存器中。函数内定义寄存器变量extern存储类在所有函数和程序段中都可引用。static存储类在内存中是以固定地址存放的,在整个程序运行期间都有效。基本数据类型和表达式4逗号运算和逗号表达式格式:表达式1,表达式2求解顺序及结果:先求解1,再求解2,最终结果为表达式2的值例a=3*5,a*4

最终结果为60Page4基本数据类型和表达式5逻辑运算与逻辑表达式逻辑运算符:

!(非)&&(与)||(或)

优先次序:高→低逻辑表达式

例如:(a>b)&&(x>y)

其结果类型为

bool,值只能为true或false。基本数据类型和表达式6条件运算符与条件表达式一般形式:表达式1?表达式2:表达式3表达式1必须是bool

类型执行顺序:先求解表达式1,若表达式1的值为true,则求解表达式2,表达式2的值为最终结果若表达式1的值为false,则求解表达式3,表达式3的值为最终结果基本数据类型和表达式7条件运算符与条件表达式注意:条件运算符优级高于赋值运算符,低于逻辑运算符、关系运算符和算术运算符结合方向为自右至左表达式2、3的类型可以不同,条件表达式的最终类型为2和3中较高的类型。例max=a>b?a:b

a>b?a:c>d?c:d等价于a>b?a:(c>d?c:d)

x>y?1:1.5

若x≤y,值为1.5。若x>y,值为1.0实型比整型高,将1转换成实型值。基本数据类型和表达式8sizeof操作符用于计算某种类型的对象在内存中所占的字节数。语法形式:sizeof(类型名)

sizeof(表达式)结果值:“类型名”所指定的类型或“表达式”的结果类型所占的字节数注意:并不对括号中的表达式本身求值.例sizeof(int)sizeof(double)sizeof(structstudent)基本数据类型和表达式9位运算——按位与(&)运算规则将两个运算量的每一个位进行逻辑与操作举例:计算3&53:000000115:(&)000001013&5:00000001用途:将某一位置0,其它位不变。例如:

将char

型变量

a

的最低位置

0:

a=a&0376;取指定位。

例如:有charc;inta;

取出a的低字节,置于

c中:c=a&0377;基本数据类型和表达式10位运算——按位或(|)运算规则将两个运算量的每一个位进行逻辑或操作举例:计算3|53:000000115:(|)000001013|5:00000111用途:将某些位置1,其它位不变。

例如:将

int

型变量a

的低字节置

1

a=a|0xff;基本数据类型和表达式11位运算——按位异或(^)运算规则两个操作数进行异或:

若对应位相同,则结果该位为0,

若对应位不同,则结果该位为1,举例:计算071^052071: 00111001052:(^)00101010071^052: 00010011基本数据类型和表达式12位运算——按位异或(^)用途:使特定位翻转(与0异或保持原值,与1异或取反)例如:要使01111010

低四位翻转:

01111010(^) 00001111 01110101基本数据类型和表达式13位运算——取反(~)单目运算符:对一个二进制数按位取反。例:025:0000000000010101

~025:1111111111101010基本数据类型和表达式14位运算——移位左移运算(<<)左移后,低位补0,高位舍弃。右移运算(>>)右移后,低位:舍弃

高位:无符号数:补0

有符号数:补“符号位”例a=-8求a>>2的值基本数据类型和表达式15运算符优先级括号++,--,sizeof*,/,%+,-==,!=位运算&&||?:赋值运算逗号运算低高基本数据类型和表达式16混合运算时数据类型的转换

——隐含转换一些二元运算符(算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符)要求两个操作数的类型一致。在算术运算和关系运算中如果参与运算的操作数类型不一致,编译系统会自动对数据进行转换(即隐含转换),基本原则是将低类型数据转换为高类型数据。

charshortintunsignedlongunsignedlongfloatdouble

低高基本数据类型和表达式17混合运算时数据类型的转换

——隐含转换逻辑运算符要求参与运算的操作数必须是bool型,如果操作数是其它类型,编译系统会自动将非0数据转换为true,0转换为false。位运算的操作数必须是整数,当二元位运算的操作数是不同类型的整数时,也会自动进行类型转换,赋值运算要求左值与右值的类型相同,若类型不同,编译系统会自动地将右值转换为左值的类型。基本数据类型和表达式18混合运算时数据类型的转换

——强制类型转换语法形式:类型说明符(表达式)或(类型说明符)表达式强制类型转换的作用是将表达式的结果类型转换为类型说明符所指定的类型。见书上例子P35基本数据类型和表达式19赋值语句格式:赋值表达式;赋值语句与赋值表达式的区别:赋值表达式可以包含在其它表达式中,

而赋值语句不可。例:if((a=b)>0)t=a;不可写为:if((a=b;)>0)t=a;20if(表达式)语句例:if(x>y)cout<<x;if(表达式)语句1else语句2例:if(x>y)cout<<x;elsecout<<y;if(表达式1)语句1

elseif(表达式2)语句2

elseif(表达式3)语句3

else语句

nif语句

——三种形式算法的基本控制结构21一般形式if()if()语句1else语句2elseif()语句3else语句4注意语句1、2、3、4可以是复合语句,每层的if与else配对,或用{}来确定层次关系。if语句

——嵌套算法的基本控制结构22一般形式switch(表达式){case常量表达式1:语句1case常量表达式2:语句2┆case常量表达式n:语句ndefault:语句n+1}多分支选择语句

——switch语句执行顺序以case中的常量表达式值为入口标号,由此开始顺序执行。因此,每个case分支最后应该加break语句。每个常量表达式的值不能相同,次序不影响执行结果。可以是多个语句,但不必用{}。可以是整型、字符型、枚举型算法的基本控制结构23使用switch语句应注意的问题case分支可包含多个语句,且不用{}。表达式、判断值都是int型、char型或枚举型。若干分支执行内容相同可共用一组语句。switch语句只对等式进行测试,若测试值包含一个较大范围,需关系表达式比较,用if语句较好算法的基本控制结构例case‘A’:case’B’:case’C’:cout<<“>60\n”;当grade的值为‘A’,’B’和’C’时,都输出“>60”。24while语句形式while(表达式)语句

可以是复合语句,其中必须含有改变条件表达式值的语句。执行顺序先判断表达式的值,为true时,再执行语句。算法的基本控制结构25do-while语句一般形式do语句while(表达式)可以是复合语句,其中必须含有改变条件表达式值的语句。执行顺序先执行循环体语句,后判断条件。

表达式为true时,继续执行循环体与while语句的比较:While语句执行顺序

先判断表达式的值,为true时,再执行语句算法的基本控制结构对比下列程序:程序1:#include<iostream.h>voidmain(){inti,sum(0);cin>>i;while(i<=10){sum+=i;i++;}cout<<"sum="<<sum<<endl;}算法的基本控制结构程序2:#include<iostream.h>voidmain(){inti,sum(0);cin>>i;do{sum+=i;i++;}while(i<=10);

cout<<"sum="<<sum<<endl;}27对比以上两程序的输出结果当输入11时程序1的运行结果:sum=0当输入5时程序1的运行结果:sum=45当输入11时程序2的运行结果:sum=11当输入5时程序2的运行结果:sum=4528for语句语法形式for(表达式1;表达式2;表达式3)语句先求解表达式1;求解表达式2,若其值为真,则执行for语句中指定的内嵌语句,然后执行下面第3步。若为假,则循环结束,转到第5步。若表达式为真,在执行指定语句后,求解表达式3。转回上面第2步继续执行。执行for语句下面的一个语句。

循环前先求解非0时执行循环体每次执行完循环体后求解算法的基本控制结构29例2-8输入一个整数,求出它的所有因子。算法的基本控制结构#include<iostream.h>voidmain(void){ intn,k; cout<<"Enterapositiveinteger:"; cin>>n; cout<<"Number"<<n<<"Factors"; for(k=1;k<=n;k++) if(n%k==0) cout<<k<<"";cout<<endl;}运行结果1:Enterapositiveinteger:36Number36Factors123469121836运行结果2:Enterapositiveinteger:7Number7Factors1732循环结构的嵌套#include<iostream.h>voidmain(){ inti(1),a(0); for(;i<=5;i++) { do{ i++; a++; }while(i<3); i++; } cout<<a<<”,”<<i<<endl;}算法的基本控制结构运行结果:3,8见循环嵌套.cpp程序33break和continue语句break语句使程序从循环体和switch语句内跳出,继续执行逻辑上的下一条语句。不宜用在别处。continue语句结束本次循环,接着判断是否执行下一次循环。算法的基本控制结构34break和continue语句下面代码在执行了break之后,继续执行“a=1;”处的语句,而不是跳出所有循环。for(;;){for(;;){if(i==1)break;}a=1;//break跳至此处}

输出100~200之间不能被3整除的数。for(intn=100;n<=200;n++){if(n%3==0)continue;cout<<n<<endl;}//当n被3整除时,执行continue结束本次循环。35typedef语句为一个已有的数据类型另外命名语法形式typedef已有类型名新类型名表;例如typedefdoublearea,volume;typedefint

natural;naturali1,i2;areaa;volumev;自定义数据类型36枚举类型—enum只要将需要的变量值一一列举出来,便构成了一个枚举类型。枚举类型的声明形式如下:enum枚举类型名{变量值列表};例如:enum

weekday{sun,mon,tue,wed,thu,fri,sat};定义了一个枚举类型enumweekday,可以用此类型定义变量。如:enumweekdayworkday,week_end;//workday和week_end被定义为枚举变量,它们的值只能是sun到sat之一。自定义数据类型37枚举类型—enum枚举类型应用说明:对枚举元素按常量处理,不能对它们赋值。例如,不能写:sun=0;

枚举元素具有缺省值,它们依次为:0,1,2,。也可以在声明时另行指定枚举元素的值,如:enumweekday{sun=7,mon=1,tue,wed,thu,fri,sat};枚举值可以进行关系运算。如:if(workday==mon)…if(workday>sun)…比较规则按其在定义时的顺序号比较自定义数据类型38枚举类型—enum枚举类型应用说明:整数值不能直接赋给枚举变量,如需要将整数赋值给枚举变量,应进行强制类型转换。例:workday=2;//是不对的,它们属于不同类型,应先进行强制类型转换才能赋值。workday=(enumweekday)2;//相当于将顺序号为2的枚举元素赋给workday,相当于workday=tue;例:在下面的枚举类型中,BLUE的值是多少?enumCOLOR{WHITE,BLACK=100,RED,BLUE,GREEN=300};BLUE=102,WHITE=039控制格式输出宽度为了调整输出,可以通过在流中放入setw操纵符或调用width成员函数为每个项指定输出宽度:cout.width(10);cout<<values;cout<<setw(10)<<values;见程序:控制格式.cpp40结构体——结构的声明结构的概念结构是由不同数据类型的数据组成的集合体。声明结构类型

struct结构名

{

数据类型成员名1;数据类型成员名2;:数据类型成员名

n;

};自定义数据类型41结构体——结构的声明声明一个结构并不分配内存,内存分配发生在定义这种结构类型的变量中。举例:

structstudent//学生信息结构体

{

intnum;//学号

charname[20];//姓名

charsex;//性别

intage;//年龄

floatscore;//成绩

charaddr[30];//住址

};自定义数据类型42结构体——结构变量说明变量说明形式结构名结构变量名;注意:结构变量的存储类型概念、它的寿命、可见性及使用范围与普通变量完全一致。结构变量说明在结构类型声明之后,二者也可同时进行。结构变量占内存大小可用

sizeof运算求出:

sizeof(运算量)自定义数据类型43结构体

——结构变量的初始化和使用初始化说明结构变量的同时可以直接设置初值。使用结构体成员的引用形式:

结构变量名.成员名自定义数据类型44例2-14有三只动物,都具有重量和身长两个属性,现在需要对它们的重量和身长赋值,并且输出它们的重量。#include<iostream.h>structanimal{intweight;intfeet;};intmain(){animaldog1,dog2,chicken;自定义数据类型dog1.weight=15;dog2.weight=37;chicken.weight=3;dog1.feet=4;dog2.feet=4;chicken.feet=2;cout<<"Theweigh

温馨提示

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

评论

0/150

提交评论