已阅读5页,还剩85页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C+语言基础,C+程序实例 1,#include using namespace std; int main() cout“Hello!n“; cout“Welcome to C+!n“; return 0; 运行结果: Hello! Welcome to C+!,C+字符集,C+字符集是C+程序中可以使用的基本符号 大小写的英文字母:AZ,az 数字字符:09 特殊字符:例如 空格 ! # % . , () ,C+词法记号(类似单词),关键字 C+预定义的单词 标识符 程序员声明的单词,它命名程序正文中的一些实体 文字 在程序中直接使用符号表示的数据 操作符 用于实现各种运算的符号 分隔符 如 ; 用于分隔各个词法记号或程序正文 空白符 空格、制表符(TAB键产生的字符)、 换行符(Enter键所产生的字符)和注释的总称,C+字符集类似英语的字母或者汉语的笔画。 C+的词法符号类似英语的单词或汉语的字。 C+程序类似英语的十四行诗或者汉语的诗词歌赋。,C+字符集、词法符号、程序关系,C+词法记号关键字,关键字又称保留字,是C+预定义的单词 关键字是C+中具有固定意义的一批英文单词或其缩写,有专门的用途,用在固定的位置,不能移作它用。C+中共有74个关键字/保留字,每一个都有自己的故事。,C+常用关键字及分类,C+词法记号标识符,构成规则: 以大写字母、小写字母或下划线(_)开始,由大写字母、小写字母、下划线(_)或数字09组成。 注意事项 标识符区分大小写 标识符长度任意(取决于操作系统) 提倡使用“见名知义”的标识符 避免使用系统已定义的标识符(系统保留字),例: 判断下面哪些是合法的标识符:,MyFile,94Salary,Salary94,Salary 94,amount,$amount,void,f3.5,Num_of_Student,C+程序实例 2,#include using namespace std; int main() const int PRICE=30; int num,total; float v ,r,h; num=10; total=num*PRICE; couttotalendl; r=2.5; h=3.2; v=3.14159*r*r*h; coutvendl; return 0; ,数据类型,数据类型告诉我们存储单元中的数据的形式,及可以对存储单元中的数据执行哪些操作。 C+的数据类型可以分为基本类型、构造类型、指针类型、 空类型(void)四个大类。,基本数据类型,类型修饰符,C+还允许在基本数据类型前加上类型修饰符,来更具体地表示数据类型。C+的类型修饰符包括: signed 有符号 unsigned 无符号 short 短型 long 长型,说明: (1)表中带 的部分表示是可以省略的,如short int可以写为short int 或简写为short,二者的含义是相同的。 (2)四种修饰符都可以用来修饰整型。用signed修饰的类型的值可以为正数或负数,用unsigned修饰的类型的值只能为正数。 (3)用short修饰的类型,其值一定不大于对应的整数,用long修饰的类型,其值一定不小于对应的整数。,C+的构造类型是基本类型的组合,包括数组、结构体和联合体等 指针类型是对基本类型或构造类型的地址进行操作的一种数据类型。 空类型(void)是什么 也没有的一种特殊数据类型,仅用在有限的一些情况下,通常用作无返回值函数的返回类型。 有时也被归类到基本类型,常量,在C+语言中,数据分为常量和变量两大类。 由于程序中的数据是有类型的,所以常量和变量都是有类型之分的。 常量按照不同的数据类型可以分为: 字符型常量、整型常量、浮点型常量,以及字符串常量等。 程序是根据程序中常量的书写格式来区分它是哪种类型常量的。,整型常量,在程序中书写整型常量时,没有小数部分。用户可根据需要分别可以用十进制、八进制和十六进制的形式书写: 十进制格式 :由数字0至9和正、负号组成,书写时直接写出数字,如:123,-516,+1000等。 八进制格式 :以数字0开头的数字(0至7)序列,0111,010007,0177777等。 十六进制格式 :以0x或0X开头的数字(数字0至9、字母A至Z)序列,如0x78AC,0xFFFF等。,浮点型常量,只能用十进制来表示。可以用小数或指数形式表示,不分单精度和双精度类型。如:34.5 , .345, 1.5e-3,字符型常量,(1)用一对单引号括起来的一个字符,单引号只是字符与其他部分的分割符,不是字符的一部分,并且,不能用双引号代替单引号。在单引号中的字符不能是单引号或反斜杠。如: a , A, # 合法的字符常量 , 非法的字符常量 “A” 不代表字符常量 (2)另一种表示字符常量的方法是使用转义字符。C+规定,采用反斜杠后跟一个字母来代表一个控制字符,具有新的含义 。,C+中常用的转义字符,字符串常量,用一对双引号括起来的一个或多个字符的序列称为字符串常量或字符串。字符串以双引号为定界符,双引号不作为字符串的一部分。如: “Hello”, “Good Morning!” ,“I say: “ Goodbye!” 字符串中的字符数称为该字符串的长度,在存储时,系统自动在字符串的末尾加以字符串结束标志,即转义字符 0。,符号常量,常量也可用一个标识符来代表,称为符号常量。如: #define PRICE 30 int main() cout PRICEendl; return 0; 使用符号常量应注意以下几个方面: (1)它不同于变量,在作用域内其值不能改变和赋值。 如:在上例中如再用PRICE=40;这一语句进行赋值则是错误的。 (2)符号常量名一般用大写,而变量名用小写,以示区别。,在程序中的常量有以下三种表示方法: (1)在程序中直接写入常量(词法记号中的文字) 如:-200,3.4E-10,A,1,0x120,045,5.35,1000l (2)利用#define定义宏常量(符号常量) 一般格式: #define 宏名 常数 如:#define PI 3.14 s=2*PI*r; ,程序中常量的表示方法,(3)利用const定义正规常数(常变量) 格式:const 数据类型标识符 常量名=常量值; 说明: const必须放在被修饰类型符和类型名前面 数据类型是一个可选项,用来指定常数值的数据类型,如果省略了该数据类型,那么编译程序认为它是 int 类型 如:const int a=10; 表示定义了一个初始值为10的整型常量,它在程序中不可改变,但可用于表达式的计算中,1变量的概念及特点 程序中的变量是用于保存程序运算过程中所需要的原始数据、中间运算结果和最终结果的,因此,每一变量就相当于一个容器,对应着计算机内存中的某一块存储单元。变量的值具有以下两个特点: (1)“一充即无”:即将一个新数据存放到一个变量中时,该变量中原来的值消失,变量的值变成了新值。 如:执行完语句int i; i=10; i=20;后i的值为20,而不是10。,变 量,(2)“取之不尽”: 可将某个变量的值与程序中的其它数据进行各种运算,在运算过程中,如果没有改变该变量的值时,那么,不管用该变量的值进行多少次运算,其值始终保持不变。 如:语句int i,j,k; i=10; j=i+10; k=i+j*5;其中,i的值可无限制地多次使用,但它的值始终保持值10,因为在程序中没有改变变量i的值。,2定义变量(变量声明) 程序中的每一变量,都要先定义,后使用。 定义变量一般有以下三种格式: 数据类型标识符 变量名; 数据类型标识符 变量名=初始化值; 数据类型标识符 变量名1=初始值1,变量名2=初始值2,;,如: char a; /定义字符型变量a int i=1000; /定义整型变量i,i的初始值为1000; float a=2,b=3,c; /*定义浮点型变量 a、b、c,且a、 b的初始值分别为2、3。*/,3定义变量的位置 在程序中的不同位置采用不同的变量定义方式,决定了该变量具有不同的特点。变量的定义一般可有以下三种位置: (1)在函数体内部 在函数体内部定义的变量称为局部变量,这种局部变量只在进入定义它的函数体时起作用,离开该函数体后该变量就消失(被释放),即不再起作用。因此,不同函数体内部可以定义相同名称的变量,而互不干扰。如:,void func1() int y; y=2; void func2() int y; y=-100; ,(2)形式参数 当定义一个有参函数时,函数名后面括号内的变量,统称为形式参数。如: int is_in(char *a, char b) while(*a) if (*a=b) return 1; else a+; return 0; ,(3)全局变量:在所有函数体外部定义的变量,其作用范围是整个程序,并在整个程序运行期间有效。如: int count; /定义count变量是全局变量 void func1(); void func2(); int main() count=10; func1(); ,void func1() int temp; temp=count; func2(); printf(“count is %d”, count); / /输出10 void func2() int count; for(count=1;count5;count+) putchar(.); ,变量小结,变量有“三要素”: 变量名:标识符,要正确、有意义; 变量的类型:C+支持的数据类型 变量的值:可变,在某一时刻是一个确定值; 变量要“先说明后使用” 变量在一个函数中不能被定义两次 程序中的变量一定要赋初值(初始化) int a=3; a =3 ; cina 变量名一般要以小写字母开头,且见名知义。,算术运算符和算术表达式 算术运算符就是对数据进行算术运算,如:加、减、乘、除等,是在程序中使用最多的一种运算符,C+的算术运算符如表所示。,运算符和表达式,C+的算术运算符,(1+x)/(3*x) (2*x-3)*x+2)*x)-5 3.14*sqrt(r) b*b-4.0*a*c,算术运算符注意事项,算术运算符 / 有整除和一般除法两种功能。如果两个操作数都是整数,/ 的功能就是整除,否则就是一般除法。例如: 3 / 2 =1 3 / 2.0 =1.5 3.0 / 2 =1.5 a+与+a(a-与-a) a+的功能是:a的值增1,a+的值是a增加前的值; +a的功能是: a的值增1,+a的值是a增加后的值; +a可以用作左值,即能放在赋值号的左边。,赋值运算符和赋值表达式 赋值运算符的功能将某个数据的值赋给某个变量。 格式:变量名 赋值运算符 表达式 说明: (1)被赋值的目标,即赋值运算符左边的量必须是变量,而不能是常量或表达式。,(2)C+中的赋值运算符表 (3)要注意区分赋值运算符“=”与数学上的“等号”间的区别,关系运算符和关系表达式 关系运算符就是对两个量之间进行比较的运算符。,由关系运算符将两个表达式连接形成的运算式子是关系表达式,一个关系表达式的值是一个逻辑值,当为真时,值为1,为假时,值为0。 如:假设a=1,b=20,c=3,则 ab 表达式成立,其值为1 b= =c 表达式不成立,其值为0 (a+b)!=c 表达式成立,其值为1,逻辑运算符和逻辑表达式 逻辑运算符是对两个逻辑量间进行运算的运算符。,注意: (1)C或C+中在给出一个逻辑表达式的最终计算结果值时,用1表示真,用0表示假。但在进行逻辑运算的过程中,凡是遇到非零值时就当真值参加运算,遇到0值时就当假值参加运算。 如:int a=10,b=15,c=14; 则(a+6)& (bc)的值为1(真)。,(2)在逻辑表达式的求值过程中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的值时,才执行该运算符。 a 则表达式i & (i=0) & (+i)的值为0(假),该表达式运算结束后,变量i的值为0,而不是1。, a | b|c 只要a为真,就不必须判断b和c;只有a为假,才判别b;a和b 都为假才判别c。如:int i=1,j; 则表达式i+|i+|i+的值为1(真),运算结束后,变量i的值为2,而不是4。,int n=3,m=6; if (n4) , 对于数学上的表示多个数据间进行比较的表达式,在C+中要拆写成多个条件并用逻辑运算符连接形成一个逻辑表达式。如:在数学上,要表示一个变量a的值处于-1和-9之间时,可以用-9-9) & (a-9) & (a-1)的形式。,条件运算符 在C+中只提供了一个三目运算符即条件运算符“?:”,其一般形式为: 表达式1?表达式2:表达式3 条件运算的规则是:首先判断表达式1的值,若其值为真(非0),则取表达式2的值为整个表达式的值;若其值为假(0),则取表达式3的值为整个表达式的值。 如:若a=3,b=4,则条件表达式ab?a:b的值为4,条件表达式可以嵌套: xy?”great than”:x= =y?”equal to”:”less than” 它等价于: (xy)?”great than”:(x= =y)?”equal to”:”less than”),在条件表达式中,如果后面两个表达式的值类型相同,均为左值,则该条件表达式的值为左值表达式。 int x=5; long a,b; (x?a:b)=1; (x?x:a)=2; /error:x和a不同类型 (x= =2?1:a)=3; /error:1非左值,位运算符 1位运算符及其运算规则 所谓位运算符是指能进行二进制位运算的运算符。C+提供的位运算符:,位运算的运算规则为: (1)按位与&:两个运算量相应的位都是1,则该位的结果值为1,否则为0; (2)按位或|:两个运算量相应的位只要有一个是1,则该位的结果值为1,否则为0; (3)按位异或:两个运算量相应的位不同,则该位的结果值为1,否则为0; (4)按位取反:将运算量的每一位取反。,(5)按位左移:将操作数中的每一位向右移动指定的位数,移出的位被舍弃,空出的位补0或补符号位。,例子,如:a=5,b=6,则: a 00000101 00000101 00000101 b &00000110 00000110 00000110 00000110 00000100 00000111 00000011 11111001 即:a&b=4,a|b=7,ab=3,b=249。,2复合位运算符 位运算符与赋值运算符结合可以形成复合位运算符。,逗号运算符,逗号运算符的运算优先级是最低的。一般形式为:表达式1,表达式2,表达式N 在计算逗号表达式的值时,按从左至右的顺序依次分别计算各个表达式的值,而整个逗号表达式的值和类型是由最右边的表达式决定。 如:有语句int a=3,b=4;则表达式a+,b+,a+b的值为9。 再如:设有int i;则表达式i=1,i+=2?i+1:i+4的值为6。,该运算符的功能是将某一数据从一种数据类型向另一种数据类型进行转换。其使用的一般形式: 数据类型标识符 (表达式) (数据类型标识符)表达式 如:int i=2; float a,b; a=float(i); /将变量i的类型强制转换为浮点型, 并将其值赋给变量a b=(float)i; /将变量i的类型强制转换为浮点型, 并将其值赋给变量b,强制类型转换运算符,每个运算符都有自己优先级和结合性。当一个表达式中包含多个运算符时,要确定运算的结果,必须首先确定运算的先后顺序,即运算符的优先级和结合性。C+中运算符的优先级和结合性如表2.11所示。,运算符的优先级与结合性,C+中运算符的优先级和结合性,输出流对象输出数据的语句格式为: cout数据1数据2数据n; 说明: (1)cout是系统预定义的一个标准输出设备(一般代表显示器);“”是输出操作符,用于向cout输出流中插入数据。 (2)cout的作用是向标准输出设备上输出数据,被输出的数据可以是常量、已有值的变量或是一个表达式。,数据的输出cout,(3)可以在cout输出流中插入C+中的转义字符。如: cout “Input the value of a:n“; couta; 表示输出完字符串Input the value of a:后,在下一行输出变量a的值。 (4)可以将多个被输出的数据写在一个cout中,各输出项间用“”操作符隔开即可,但要注意cout首先按从右向左的顺序计算出各输出项的值,然后再输出各项的值。,如:cout“ value of a:“a“ value of b:“b“ The result is :“ sqrt(a*a+b*b); 再如:设变量i的值为10,则couti“,“i+“,“i+;的输出结果为:12,11,10 (5)一个cout语句也可拆成若干行书写,但注意语句结束符“;”只能写在最后一行上。如:对于上面的语句也可写成如下形式:,cout“ value of a:“ /注意行末无分号 a “ value of b:“ b “ The result is :“ sqrt(a*a+b*b); /在此处书写分号,(6)在cout中,实现输出数据换行功能的方法:既可使用转义字符“n”,也可使用表示行结束的流操作endl。 如: cout“This is first Line.n“This is second line. “; 上面语句可等价地写为: cout“This is first Line.“endl“This is second line. “;,(7)在cout中还可以使用流控制符控制数据的输出格式。 I/O流的常用控制符, 设置域宽:所谓域宽就是被输出数据所占的输出宽度(单位是字符数)。设置域宽可以使用流控制符setw(n)和cout的方法cout.width(n) 其中n为正整数,表示域宽。但是, cout.width(n)和setw(n)二者都只对下一个被输出的数据有作用,若一个输出语句内有多个被输出的数据,而要保持一定格式域宽时,需要在每一输出数据前加上cout.width(n)或setw(n)。,此外,当参数n的值比实际被输出数据的宽度大时,则在给定的域宽内,数据靠右输出,不足部分自动填充空格符;若被输出数据的实际宽度比n值大时,则数据所占的实际位数输出数据,设置域宽的参数n不再起作用。,例 cout流控制符setw的使用。 #include using namespace std; int main() int a=21,b=999; coutsetw(3)asetw(4)asetw(5)aendl; cout.width(3); coutb; cout.width(4); coutb; return 0; ,其输出结果是: 21 21 21 /程序中第一个cout的输 出结果 999999, 设置域内填充字符:在默认情况下,当被输出的数据未占满域宽时,会自动在域内靠左边填充相应个数的空格符。但我们也可以设置在域内填充其他的字符,方法是利用cout的fill方法cout.fill(c)或setfill(c)。 cout.fill(c)上和 setfill(c)可以对所有被输出的数据起作用。,例 在例2-2的基础上增加域内填充字符的功能。 #include using namespace std; int main() int a=21,b=999; cout.fill(#);/设置域内填充字符为#字符 coutsetw(3)asetw(4)a setw(5)aendl;,coutsetw(3)bsetw(4) bsetw(5)bendl; cout.fill(%);/将域内填充字符改为%字符coutsetw(3)a+bsetw(4) a+bsetw(5)a+bendl; return 0; ,其输出结果是: #21#21#21 /程序中第一个cout的输出结果, 未占满域宽的部分填充#字符。 999#999#999 /程序中第二个cout的输出结果 10201020%1020 /程序中第三个cout的输出结果, 未占满域宽的部分填充%字符。, 设置输出数据的进位计数制:在默认情况下,被输出的数据按十进制格式输出。但可以使用流控制符hex和oct控制数据的输出格式为十六进制和八进制,一旦设置成某种进位计数制后,数据的输出就以该种数制为主,可利用流控制符dec将数制重新成十进制。,int a=21,b=999; coutsetw(3)setfill(#)hexaendl; coutsetw(3)bendl; coutsetw(3)setfill(#)octbendl; coutsetw(3)bsetw(4) bsetw(5)bendl; coutsetw(3)setfill(#)decaendl; coutsetw(3)bsetw(4) bsetw(5)bendl;,程序的输出结果为: #15 /以十六进制格式输出数据 3e7 #25 /以八进制格式输出数据 1747 #21 /以十进制格式输出数据 999, 设置浮点数的输出格式:对于浮点数,既可以用小数格式输出,也可以用指数格式输出。这可以分别通过setiosflags(ios:fixed)和setiosflags(ios:scientific)来控制。,例 已知圆的半径r=6.779,计算并输出圆的周长和面积,要求分别用指数和小数两种格式输出。 #include using namespace std; const double pi=3.14159; int main() double r=6.779,c,s; c=2.0*pi*r; /计算圆的周长 s=pi*r*r; /计算圆的面积,/以指数格式输出圆的面积和周长 cout“圆周长(指数)为:” setiosflags(ios:scientific)cendl; cout“圆的面积(指数)为:”sendl; /以小数输出圆的面积和周长 cout“圆的周长(小数)为:” setiosflags(io
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理服务:护理服务与患者生命安全
- 法律意见书销售合同
- 进口酒水销售合同
- 螺杆空压机销售合同
- 护理法律与伦理的和谐统一
- 2026年AI维护云资源租赁合同
- 2026年包装服务供应合同书
- 护理诊断的国际标准
- 高边坡开挖专项施工方案
- 井下防水闸门安装专项方案
- MES系统开发合同
- 2025年宝山区社区工作者招聘考试真题(附含答案)
- 高速公路改扩建交通导改方案
- 2025年全国初级导游人员资格考试(政策与法律法规、导游业务)历年参考题库含答案详解(5卷)
- 【MOOC答案】《人力资源管理》(南京邮电大学)章节作业慕课答案
- 如何书包班会课件
- 服装公司资产管理制度
- 冬病夏治及中医夏季养生课件
- 园区污水接纳协议书
- 《现代农业技术与装备》课件
- 综治中心规范化建设授课
评论
0/150
提交评论