版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C程序设计(第三版)谭浩强C程序设计(第三版)谭浩强C程序设计(第三版)谭浩强C程序设计(第三版)谭浩强C程序设计(第三版)谭浩强Ken Thompson 以以BCPL语言为基础,语言为基础, C程序设计(第三版)谭浩强19721972年至年至19731973年间,贝尔实验室的年间,贝尔实验室的D.M.Ritchie D.M.Ritchie 在在B B语言的基础上设计出了语言的基础上设计出了C C语言语言( (取取BCPLBCPL的第的第二个字母二个字母) )。C C语言既保持了语言既保持了BCPLBCPL和和B B语言的语言的优点优点( (精练,接近硬件精练,接近硬件) ),又克服了它们的,
2、又克服了它们的缺点缺点( (过于简单,数据无类型等过于简单,数据无类型等) )。最初的。最初的C C语言只是为描述和实现语言只是为描述和实现UNIXUNIX操作系统提供操作系统提供一种工作语言而设计的。一种工作语言而设计的。19731973年,年,K.ThompsonK.Thompson和和D.M.RitchieD.M.Ritchie两人合作把两人合作把UNIXUNIX的的90%90%以上用以上用C C改写,即改写,即UNIXUNIX第第5 5版。版。C程序设计(第三版)谭浩强C程序设计(第三版)谭浩强C程序设计(第三版)谭浩强C程序设计(第三版)谭浩强总结:总结:1、该程序完成的功能是求两个
3、给定数的和,并输出值。、该程序完成的功能是求两个给定数的和,并输出值。2、/*/之间的是注释部分,不影响程序的执行之间的是注释部分,不影响程序的执行3、C语言中使用变量必须语言中使用变量必须先定义先定义,后使用后使用4、%后面的是格式字符串,指定输入输出的格式后面的是格式字符串,指定输入输出的格式C程序设计(第三版)谭浩强总结:总结:1、本程序包括两个函数,、本程序包括两个函数,主调函数和被调函数。主调函数和被调函数。2、scanf( )为输入函数为输入函数3、&为取地址运算符为取地址运算符4、return( )函数为返回语函数为返回语句,将被调函数计算出来句,将被调函数计算出来的值带
4、回主调函数。的值带回主调函数。C程序设计(第三版)谭浩强C程序设计(第三版)谭浩强函数类型函数类型 函数名函数名(函数形参函数形参)形参类型定义形参类型定义 数据定义部分数据定义部分 函数执行部分函数执行部分 函数体函数体函数的说明部分函数的说明部分(首部)(首部) 如:如:int max(int x,int y) 或或 int max(x,y) int x,y; 如:如:limit() C程序设计(第三版)谭浩强C程序设计(第三版)谭浩强C程序设计(第三版)谭浩强C程序设计(第三版)谭浩强C程序设计(第三版)谭浩强C程序设计(第三版)谭浩强C程序设计(第三版)谭浩强 第一步:输入第一步:输入
5、a,b,c 三个数三个数 第二步:将第二步:将a和和b比较,较大者放在比较,较大者放在a中,小者放在中,小者放在b中中 第三步:将第三步:将a和和c比较,较大者放在比较,较大者放在a中,小者放在中,小者放在c中中 第四步:将第四步:将b和和c比较,较大者放在比较,较大者放在b中,小者放在中,小者放在c中中 第五步:输出排列好的第五步:输出排列好的a,b,c三个数三个数C程序设计(第三版)谭浩强算法设计:算法设计:S1:使:使P=1S2:使:使i=2S3:使:使P*I,乘积仍放在,乘积仍放在P变量中,表示为变量中,表示为p*I=pS4:使:使i的值加的值加1,即,即i+1=iS5:如果:如果i不
6、大于不大于5,返回重新执行步骤,返回重新执行步骤S3及其后的及其后的S4、S5; 否则算法结束。否则算法结束。C程序设计(第三版)谭浩强C程序设计(第三版)谭浩强C程序设计(第三版)谭浩强C程序设计(第三版)谭浩强算法:算法:S1:输入:输入n的值的值S2:i=2(i作为除数)作为除数)S3:n被被i除,得余数除,得余数rS4:如果:如果r=0,表示表示n能被能被i整除,则打印整除,则打印n“不是素数不是素数”,算法结束;,算法结束; 否则执行否则执行S5S5:i=i+1S6:如果:如果ib?Max=aMax=bmaxc?输出输出max输出输出c结束结束YYNNC程序设计(第三版)谭浩强C程序
7、设计(第三版)谭浩强第三章第三章 数据类型、运算符与表达式数据类型、运算符与表达式本章要点:(本章内容全部要求掌握)本章要点:(本章内容全部要求掌握)1、常量与变量、常量与变量2、整型、实型、字符型数据、整型、实型、字符型数据3、变量赋初值的几种方法、变量赋初值的几种方法4、不同类型的数值型数据的混合运算、不同类型的数值型数据的混合运算5、算术运算符和算术表达式、算术运算符和算术表达式6、赋值运算符和赋值表达式、赋值运算符和赋值表达式7、逗号运算符和逗号表达式、逗号运算符和逗号表达式C程序设计(第三版)谭浩强考考 试试 内内 容容二、数据类型及其运算二、数据类型及其运算 1. C的数据类型(基
8、本类型、构造类型、指针类型、的数据类型(基本类型、构造类型、指针类型、空类型)及其定义方法。空类型)及其定义方法。 2. C运算符的种类、运算优先级和结合性。运算符的种类、运算优先级和结合性。 3. 不同类型数据间的转换与运算。不同类型数据间的转换与运算。 4. C表达式类型(表达式类型(赋值表达式,算术表达式,关系表达式,赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式逻辑表达式,条件表达式,逗号表达式)和求值规则。)和求值规则。 分析:这部分考试形式主要是选择题,分析:这部分考试形式主要是选择题,一般会出一般会出4-5个选择题和个选择题和2-3个填空题个填空题。变量主
9、要搞清楚全局变量。变量主要搞清楚全局变量(extern)和局部变量(在一个函数中或在一个模块)和局部变量(在一个函数中或在一个模块中)。运算符要注意是中)。运算符要注意是左结合左结合或或右结合右结合,3种逻辑种逻辑运算符:!(逻辑非)、运算符:!(逻辑非)、&(逻辑与)和(逻辑与)和|(逻辑或),(逻辑或),位运算:位运算:&、|和和的运算。另外,条件表达式和逗号表的运算。另外,条件表达式和逗号表达式也是常考题型。达式也是常考题型。C程序设计(第三版)谭浩强第一节第一节 C的数据类型的数据类型数据类型数据类型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型 void
10、整型整型 int字符型字符型 char实型(浮点型)实型(浮点型)枚举类型枚举类型 enum单精度型单精度型float双精度型双精度型double数组类型数组类型结构体类型结构体类型 struct共用体类型共用体类型 unionC语言提供的数据结构是以数据类型出现的,如下:C语言数据有常量和变量之分,它们都属于以上数据类型。语言数据有常量和变量之分,它们都属于以上数据类型。C程序设计(第三版)谭浩强一、常量:在程序运行过程中,值不变的量。一、常量:在程序运行过程中,值不变的量。1、直接常量:即常数。如、直接常量:即常数。如 1、2、3.5、a。可以分为实。可以分为实 型、整型、字符型。其特点是
11、从字面上即可判定它型、整型、字符型。其特点是从字面上即可判定它 们是某一们是某一 类型的常量。也称类型的常量。也称“字面常量字面常量”2、符号常量:在一个程序中指定用一个符号代表一个、符号常量:在一个程序中指定用一个符号代表一个 常量。符号常量用常量。符号常量用#define命令定义。符号常量一经命令定义。符号常量一经 定义其值在其作用域内不能改变。习惯上用大写。定义其值在其作用域内不能改变。习惯上用大写。 如在程序的开头有如下定义:如在程序的开头有如下定义: #define PI 3.1415926 则在整个程序中可用则在整个程序中可用“PI”代替代替3.1415926进行运算进行运算第二节
12、第二节 常量与变量常量与变量C程序设计(第三版)谭浩强例:符号常量的使用例:符号常量的使用#define PI 3.1415926#define R 2.0main ( )double ar (double r), cir (double r); printf(“area=%f”,ar (R); printf(“tcircum=%f”,cir (R);double ar(double r)return(PI*r*r)double cir (double r)return(2.0*PI*r)同是常量,符号常量比一般常量同是常量,符号常量比一般常量在程序设计中有何优势:在程序设计中有何优势:#de
13、fine PRICE 30main ( ) int num, t; num=10; t=num*PRICE; printf(“total=%d”,t);(1)含义清楚)含义清楚(2)一改全改)一改全改C程序设计(第三版)谭浩强二、变量:在程序运行的过程中,值可以改变的量。二、变量:在程序运行的过程中,值可以改变的量。 标识符:某种对象的名字或标记。标识符:某种对象的名字或标记。1、变量名:、变量名:变量名只能由字母、数字和下划线组成,且第一个字变量名只能由字母、数字和下划线组成,且第一个字 符必须为字母和下划线。符必须为字母和下划线。 如下是合法的变量名:如下是合法的变量名: sum 、i、s
14、tudent_name、_1_2_3、_above、DAY 如下是不合法的变量名:如下是不合法的变量名: M.D.john,$123,#33,3d64,ab注意:注意:1.大写字母和小写字母被认为是两种不同的字符。大写字母和小写字母被认为是两种不同的字符。 2.标识符的长度为标识符的长度为8位位,超过超过8位只有前位只有前8位有效(位有效(Turbo C 则允许则允许32个字符)。个字符)。 3.尽量做到见名知意;尽量做到见名知意;如:如:SUM和和sum为两个不同的变量。为两个不同的变量。 student_name和和student_number为两个相同的变量。为两个相同的变量。 C程序设
15、计(第三版)谭浩强3、变量值:变量定义后,为其分配存储空间,存放的是、变量值:变量定义后,为其分配存储空间,存放的是变量的值。变量的值。 int a; a=56;56a变量名变量名变量值变量值存储单元存储单元2、变量定义:、变量定义: 变量声明的一般形式:变量声明的一般形式: ;如:如: int sum,i;C程序设计(第三版)谭浩强4、变量的使用:先定义,后使用。、变量的使用:先定义,后使用。原因:原因: (1)保证变量正确使用:未被定义的变量不能使用)保证变量正确使用:未被定义的变量不能使用 (2)不同类型的变量占用的内存)不同类型的变量占用的内存空间空间不同不同 (3)不同类型的变量对应
16、取值的)不同类型的变量对应取值的范围范围不同不同 (4)不同类型的变量对应不同的一组)不同类型的变量对应不同的一组操作操作如:定义变量如:定义变量“student”,如果在使用时,误写为如果在使用时,误写为“stdent”,不能使不能使用;用; 整数占两个字节,实数占四个字节,字符占一个字节;整数占两个字节,实数占四个字节,字符占一个字节; 整数范围为整数范围为-3276832767之间;实数为之间;实数为10-381038;字符为;字符为0255; 整数有整数有“求余求余”(%)运算)运算,实型数据没有。实型数据没有。C程序设计(第三版)谭浩强第三节第三节 整型数据整型数据一、整型常量:有三
17、种表示形式一、整型常量:有三种表示形式1、十进制数形式:、十进制数形式:1、98、3452、八进制数形式:以、八进制数形式:以0 开头的数字。开头的数字。01、076 7*81+6*80=(62)103、十六进制数形式:以、十六进制数形式:以0 x开头的数字。开头的数字。0 x3F、0 x765 7*162+6*161+5*160二、整型变量:二、整型变量:1、存储形式:数值以补码形式表示,占两个字节、存储形式:数值以补码形式表示,占两个字节 见教材见教材P41图图3.2、3.3所示所示C程序设计(第三版)谭浩强位(位(bit)字,字长字,字长字节(1 Byte=8bit)位、字节、字及字长位
18、、字节、字及字长数据存储的组织形式数据存储的组织形式C程序设计(第三版)谭浩强存储单元地址存储单元地址0000H0001H0002HFFFFH存储位存储位存储单元存储单元(字节)(字节)存储体存储体存储体结构图存储体结构图C程序设计(第三版)谭浩强2、整型变量的分类、整型变量的分类1)有符号基本整型:以)有符号基本整型:以signed int表示,表示, 占两个字节,占两个字节, 表示范围表示范围-32768327672)无符号基本整型:以)无符号基本整型:以unsigned int 表示,表示范围表示,表示范围0655353)有符号短整型:以)有符号短整型:以signed short int
19、 表示,表示, 一般也占一般也占2个字节,要求不长于个字节,要求不长于int型,表示范围型,表示范围-3276832767 。4)无符号短整型:以无符号短整型:以 unsigned short int表示,表示, 表示范围表示范围0655355)有符号长整型:以)有符号长整型:以 signed long int 表示,表示, 一般占一般占4个字节,要求不小于个字节,要求不小于int型,表示范围:型,表示范围:-231( 231 1)6)无符号长整型:以)无符号长整型:以unsigned long int表示表示 表示范围:表示范围:0( 232 1)C程序设计(第三版)谭浩强3、整型变量的定义
20、:、整型变量的定义: 1、在程序中引用一个变量,实际上是对指定的存储空在程序中引用一个变量,实际上是对指定的存储空间的引用。因此必须先开辟存储空间才能引用它,间的引用。因此必须先开辟存储空间才能引用它,即在引用变量之前必须先定义变量的类型,在编译即在引用变量之前必须先定义变量的类型,在编译时就会根据指定的类型为其分配一定的存储空间,时就会根据指定的类型为其分配一定的存储空间,并决定数据的存储方式和允许操作的方式并决定数据的存储方式和允许操作的方式 2、变量的定义一般在函数的开头部分;也可以在其它变量的定义一般在函数的开头部分;也可以在其它位置,但定义的位置影响变量的作用范围。位置,但定义的位置
21、影响变量的作用范围。C程序设计(第三版)谭浩强例例1:int a,b unsigned short c,d; long e,f;例例2: main( )int a,b,c,d; unsigned int u; a=12;b=-24;u=10; c=a+u;d=b+u; printf(“a+u=%d,b+u=%d”,c,d); 运行结果:运行结果: a+u=22,b+u=-14不同种类的整型数据不同种类的整型数据可以进行算术运算可以进行算术运算C程序设计(第三版)谭浩强4、整型数据的溢出例:例:main() int a,b; a=32767; b=a+1; printf(“%d,%d”,a,b)
22、;a 0 1111111111111 + 1b 100032767,-32768例:例:main() int a,b; a=-32768; b=a-1; printf(“%d,%d”,a,b);a 10000 + 1111111111111111b 111111-32768 , 32767C程序设计(第三版)谭浩强整型常量的类型:整型常量赋值给整型变量时的注意事项整型常量的类型:整型常量赋值给整型变量时的注意事项 1、如果一个整型常量在、如果一个整型常量在-3276832767之间,可以赋给之间,可以赋给int 型型 和变量和变量long int型变量。型变量。 2、如果一个整型常量在、如果一
23、个整型常量在- 2 31231-1之间,可以赋给之间,可以赋给long int型变量型变量 3、常量中没有无符号型,但非负常量可以赋给无符号变量、常量中没有无符号型,但非负常量可以赋给无符号变量 如:如: int unsigned int 123 unsigned int 65330 long int long intC程序设计(第三版)谭浩强第四节第四节 实型数据实型数据一、实型常量:实数又称为浮点数,有两种表示形式一、实型常量:实数又称为浮点数,有两种表示形式 1、十进制小数形式:由数字和小数点组成(必须有小数点)、十进制小数形式:由数字和小数点组成(必须有小数点) 如:如:89.0、45
24、6.、0.456、0.0、 2、指数形式:即科学计数法。如:、指数形式:即科学计数法。如:45e2相当于相当于45*102、 34e-5相当于相当于34*10-5。字母。字母e(E)前必须有数字,前必须有数字, 字母字母e后必须是整数。后必须是整数。 规范化的指数形式:小数点左边有且只有规范化的指数形式:小数点左边有且只有1位非位非0的数字。的数字。 3.46e+5 3.46e-5二、存储方式:以指数方式存储。(二、存储方式:以指数方式存储。(P46图图3.7) *小数小数位数越多,精度越高;位数越多,精度越高;指数指数部分越多,数据范围愈大。部分越多,数据范围愈大。C程序设计(第三版)谭浩强
25、三、实型变量类型:分为三种类型三、实型变量类型:分为三种类型1、单精度型(、单精度型(float): 一般占一般占4个字节,有效数位为个字节,有效数位为67位位2、双精度型(、双精度型(double):一般占:一般占8个字节,有效数位为个字节,有效数位为1516位位3、长双精度型(、长双精度型(long double):占占16字节,有效数位为字节,有效数位为1819位位实型常量不分单、双精度。可任意赋值,但有效数位不同。实型常量不分单、双精度。可任意赋值,但有效数位不同。四、实型数据的舍入误差四、实型数据的舍入误差 *系统存储实型数据时,由于数位有限,有效数位以外的数字将系统存储实型数据时,
26、由于数位有限,有效数位以外的数字将 被舍去,产生误差。被舍去,产生误差。 C程序设计(第三版)谭浩强例:例: main()float a,b; a=123456.789e5; b=a+20; printf(“%f,%f”,a,b);848.000000注:应避免将一个很大的数与一个很小的数直接相加减。注:应避免将一个很大的数与一个很小的数直接相加减。C程序设计(第三版)谭浩强五、实型常量的类型五、实型常量的类型1、C编译系统将实型常量作为双精度处理,提高运算精度。编译系统将实型常量作为双精度处理,提高运算精度。2、一个实型常量可以赋给一个、一个实型常量可以赋给一个float型,型,double
27、 型、型、long double型,型, 系统会根据具体类型保留相应有效数位。系统会根据具体类型保留相应有效数位。例:例:1) f =2.45678 *4523.65 2) float a; a=111111.111; printf(“a=%f”,a);ffC程序设计(第三版)谭浩强第五节第五节 字符型数据字符型数据一、字符型常量:用一对一、字符型常量:用一对单引号单引号括起来的括起来的一个一个字符。字符。 说明说明: 单引号不是字符常量的一部分,只是一种界定符。单引号不是字符常量的一部分,只是一种界定符。 单引号内不能是单撇号单引号内不能是单撇号()或反斜杠或反斜杠();如果反斜如果反斜 杠
28、或单引号本身作为字符常量,必须使用转义字符:杠或单引号本身作为字符常量,必须使用转义字符: 、。分为两种:分为两种: 1、普通字符:、普通字符: 如:如:1、a、A、* 2、转义字符:、转义字符: 也称控制字符。也称控制字符。 说明:说明: 用反斜杠开头后面跟一个字母代表用反斜杠开头后面跟一个字母代表 一个控制字符。一个控制字符。 代表字符反斜杠;代表字符反斜杠;代表撇号字符代表撇号字符 反斜杠后面的字符失去原来的含义反斜杠后面的字符失去原来的含义 C程序设计(第三版)谭浩强字符形式字符形式功能功能ntbrf(”)dddxhh回车回车,换行换行横向跳格(即到下一个输出区横向跳格(即到下一个输出
29、区tab列)列)退格退格回车回车,不换行不换行走纸换页走纸换页反斜线字符反斜线字符单单(双双)引号字符引号字符1到到3位位8进制数所代表的字符进制数所代表的字符1到到2位位16进制数所代表的字符进制数所代表的字符C程序设计(第三版)谭浩强*例例3:转义字符的使用:转义字符的使用(P49) main() printf(“ ab ct derftgn”); printf(“htibbj k”);*由此例,输出结果在打印机和显示器可能不同,由此例,输出结果在打印机和显示器可能不同, 但实际在计算机系统内部是一致的。但实际在计算机系统内部是一致的。例例1:打印人民币符号:打印人民币符号“” main(
30、) printf(“Yb=n”); 例例2:用转义字符输出可打:用转义字符输出可打印字符和不可打印字符印字符和不可打印字符main() printf(“x4Fx4Bx21n”); printf(“012”); printf(“x15 xABn”); 程序运行结果如下:程序运行结果如下: ! C程序设计(第三版)谭浩强二、字符变量:用来存放字符常量。二、字符变量:用来存放字符常量。 说明:说明: 一个字符变量占一个字节一个字符变量占一个字节 一个字符变量只能存放一个字符一个字符变量只能存放一个字符 字符变量的定义用字符变量的定义用char三、字符数据在内存中的存储形式及其使用方法三、字符数据在内
31、存中的存储形式及其使用方法1、字符常量与整型常量存储时都以、字符常量与整型常量存储时都以ASCII码形式存放;码形式存放;2、字符常量可以赋值给整型变量,反之亦可;、字符常量可以赋值给整型变量,反之亦可;3、字符常量可以以整型常量形式输出,反之亦可;、字符常量可以以整型常量形式输出,反之亦可;4、字符常量可表示、字符常量可表示0255之间的数值;之间的数值;5、有些系统将字符变量的最高位作为符号位,则取值范围为、有些系统将字符变量的最高位作为符号位,则取值范围为 -128127,对于,对于ASCII 码为码为0127的整数,用的整数,用%d格式输出格式输出 时,为正数;如果时,为正数;如果AS
32、CII码超过码超过127的字符,用的字符,用%d格式输格式输出出 时,为负数;时,为负数;(如如(127)10=(01111111)2 (128)10=(10000000)2)6、字符型可以定义为、字符型可以定义为unsigned char型,就可以不输出负数了。型,就可以不输出负数了。 C程序设计(第三版)谭浩强char c=a;c例1:int c=97;c高高8位位低低8位位C程序设计(第三版)谭浩强例例2:向字符变量赋以整数和向整型变量赋以字符常量。:向字符变量赋以整数和向整型变量赋以字符常量。 main( ) char c1,c2; /*定义两个字符型变量定义两个字符型变量*/ int
33、 a,b; /*定义两个整型变量定义两个整型变量*/ c1=97; c2=98; /*分别给两个变量赋整型常量的值分别给两个变量赋整型常量的值*/ a=a; b=b; /*分别给两个变量赋字符型常量的值分别给两个变量赋字符型常量的值*/ printf( “%c %cn”,c1,c2); /*以字符格式输出两个字符型数据以字符格式输出两个字符型数据*/ printf( “%c %cn”,a,b); /*以字符格式输出两个整型数据以字符格式输出两个整型数据*/ printf(“%d %dn”,c1,c2); /*以十进制格式输出两个字符型数据以十进制格式输出两个字符型数据*/ printf(“%d
34、 %dn”,a,b); /*以十进制格式输出两个整数型数据以十进制格式输出两个整数型数据*/ 输出结果:输出结果: a b a b 97 98 97 98C程序设计(第三版)谭浩强*例例3:大小字母的转换:大小字母的转换main( ) char c1,c2; /*定义两个字符型变量定义两个字符型变量*/c1=a; c2=b; /*赋字符型常量赋字符型常量*/c1=c1-32; c2=c2-32; /*分别减去分别减去32*/printf(“%c %cn”,c1,c2); /*输出两个字符型数据输出两个字符型数据*/printf(“%d %dn”,c1,c2); /*输出两个整数型数据输出两个整
35、数型数据*/输出结果:输出结果:A B65 66C程序设计(第三版)谭浩强例例4:字符型定义为:字符型定义为unsigned型,溢出时就可不输出负数。型,溢出时就可不输出负数。(0255) main() char c=199; printf(“c=%d,c=%cn”,c,c); return 0; c= -57,c=|- main() unsigned char c=199; printf(“c=%d,c=%cn”,c,c); return 0; c=199,c=|-C程序设计(第三版)谭浩强四、字符串常量:四、字符串常量:1、概念:由一对双撇号括起来的零个或多个字符序列、概念:由一对双撇号括
36、起来的零个或多个字符序列 如:如:“hello”、“programming”、“A”等。等。2、说明:、说明: 双撇号是界定符,不属于字符串内容双撇号是界定符,不属于字符串内容 “”表示一个空字符串,在内存中占一个字节表示一个空字符串,在内存中占一个字节 0 “A”表示一个字符串,表示一个字符串,A表示一个字符表示一个字符思考:思考:“”在内存中占几个字节?在内存中占几个字节?C程序设计(第三版)谭浩强3、字符串常量与字符常量的区别:、字符串常量与字符常量的区别: 一个字符常量可以赋值给一个字符变量,而字符串不可以;一个字符常量可以赋值给一个字符变量,而字符串不可以; 二者界定符不同;二者界定
37、符不同; 二者的存储方式不同:存储字符串时,在其末尾加一个二者的存储方式不同:存储字符串时,在其末尾加一个0作为作为 结束标志。但不输出。即存储字符串时,所需字节数比结束标志。但不输出。即存储字符串时,所需字节数比字符串字符串 长度长度多一个;多一个; A: “A”: “0”的含义是的含义是“空操作空操作”,不产生任何作用,只起标志作用;,不产生任何作用,只起标志作用; 无字符串变量,但可用字符型数组进行存储。无字符串变量,但可用字符型数组进行存储。 A 0 AC程序设计(第三版)谭浩强例:例: printf(“I am a student”); char c=a; char c=“a”; c
38、har c=“CHINA”;例:例: main() printf(“%d”,sizeof(Im a student!); C程序设计(第三版)谭浩强一、赋值:向变量所代表的存储单元传送数据的操作,用一、赋值:向变量所代表的存储单元传送数据的操作,用“=”表表示示二、赋值的一般形式:变量二、赋值的一般形式:变量=表达式表达式 三、可以先定义变量,后赋值;也可以在定义变量时直接赋值三、可以先定义变量,后赋值;也可以在定义变量时直接赋值四、对几个变量同时赋值:四、对几个变量同时赋值: 1、int a, b, c=5; 2、int a=3,b=3,c=3; int a,b,c; a=b=c=3; in
39、t a=b=c=3; 3、int a; a=3; 4、int a, b,c; c=5;第六节第六节 变量赋初值变量赋初值C程序设计(第三版)谭浩强第七节 各类型数值数据间的混合运算一、转换原因:不同类型之间进行运算,必须先转换为同一类型一、转换原因:不同类型之间进行运算,必须先转换为同一类型二、转换的类型:实型、整型、字符型二、转换的类型:实型、整型、字符型三、转换规则:三、转换规则:doublefloatlongunsignedintChar,short 1、按、按“向高看齐向高看齐”的原则,将的原则,将“较低较低” 的类型进行提升的类型进行提升 2、所有、所有char 或或short型型
40、全部自动转换全部自动转换 为为int型型 3、float转换成转换成double型型图形注解:纵向箭头表示转换方向图形注解:纵向箭头表示转换方向 横向箭头表示必然转换横向箭头表示必然转换 P54例子例子低高C程序设计(第三版)谭浩强例:例:i为为int,f为为float,d为为double,e为为long,下试的运算顺序:,下试的运算顺序:int+intdoubledouble*doubledoubledouble/doubledouble+doubledouble10 + a + i * f d / eC程序设计(第三版)谭浩强第八节第八节 算术运算符和算术表达式算术运算符和算术表达式C运算
41、符分类运算符分类1、算术运算符:、算术运算符:+、-、*、/、%2、关系运算符:、关系运算符:、=、 =、 !=3、逻辑运算符:!、逻辑运算符:!、& 、|4、位运算符:、位运算符:、|、&5、赋值运算符:、赋值运算符:=、+=、-=、*=、/=6、条件运算符:(?、条件运算符:(? :):)7、逗号运算符:,、逗号运算符:,8、指针运算符:、指针运算符:*、&9、求字节数运算符:、求字节数运算符: sizeof10、强制类型转换运算符:、强制类型转换运算符:(类型名类型名)11、分量运算符:、分量运算符: 12、下标运算符:、下标运算符: 13、其它:函数运算符、其它
42、:函数运算符()C程序设计(第三版)谭浩强一、算术运算符和算术表达式一、算术运算符和算术表达式1、基本的算术运算符:、基本的算术运算符:+、-、*、/、% %:模运算符,求余运算符;要求运算两侧为整型数据;:模运算符,求余运算符;要求运算两侧为整型数据; 例:例:7%3=1;-5%2=-1;-5/2=-2;2、算术表达式和算术运算、算术表达式和算术运算 的优先级与结合性的优先级与结合性(1)算术表达式:用)算术表达式:用算术运算符算术运算符和和括号括号将将运算对象运算对象连接起来的连接起来的 符合符合C语法规则的式子。语法规则的式子。 运算对象:常量、变量、函数运算对象:常量、变量、函数(2)
43、算术运算符的优先级:()算术运算符的优先级:(*、/、%) (+、-)(3)算术运算符的结合性:)算术运算符的结合性:自左至右自左至右C程序设计(第三版)谭浩强计算表达式值时,先按运算符优先级高低进行计算,如果计算表达式值时,先按运算符优先级高低进行计算,如果 优先级相同,则按结合方向计算。优先级相同,则按结合方向计算。3、强制类型转换符、强制类型转换符如果运算符两侧的数据类型不同,先要进行类型转换,使具有如果运算符两侧的数据类型不同,先要进行类型转换,使具有 同一类型。同一类型。 (1)系统自动转换:)系统自动转换:5+8.7 (2)强制类型转换:)强制类型转换:8%2.5 8%(int)(
44、2.5) 强制类型转换的规则:强制类型转换的规则: (1)一般形式:)一般形式:(类型名)(表达式)(类型名)(表达式) 如:(如:(int) a ; (float) (x+y); (double) (4%3); (2)注意:表达式应用括号括起来;)注意:表达式应用括号括起来; 强制类型转换时,得到一个所需类型的中间变量,强制类型转换时,得到一个所需类型的中间变量, 原来变量的类型并未发生变化。原来变量的类型并未发生变化。C程序设计(第三版)谭浩强例:例:(int) x+y :将将x 转换成整转换成整 型数据后与型数据后与y 相加相加 (int) (x+y) : 将将x+y的值转换成整型的值转
45、换成整型 (int) x 与与 int (x)、(int) (x)例:已知例:已知x 为一个实型变量,经过强制类型转换为一个实型变量,经过强制类型转换 (int) x后,后,x 的的 数据类型是怎样的。数据类型是怎样的。 进行强制类型转换,只是生成一个进行强制类型转换,只是生成一个int型的中间变量,而型的中间变量,而x原来的原来的 类型并没改变;所以类型并没改变;所以x仍是实型数据。仍是实型数据。例:例: main( ) float x; int i; x=3.6; i=(int) x; printf(“x=%f,i=%d”,x, i);运行结果如下:运行结果如下:x=3.600000, i
46、=3C程序设计(第三版)谭浩强4、自增、自减算术运算符、自增、自减算术运算符 i= i+1 ; i+=1; 用用 i+ +、+ +i 来表示来表示 i=i-1; i-=1 用用 i- -、- - i 来表示来表示i + +、i - - 为为后缀后缀形式,形式,“先引用后增(减)值先引用后增(减)值”+ + i、 - - i为为前缀前缀形式,形式,“先增(减)值后引用先增(减)值后引用”例:例:int i=3; i - -; y=i;结果:结果:y=2 ,i=2int i=3;- - i;y=i;结果:y=2; i=2 int i=3; y= i - - ;结果:y=3 ,i=2int i=3;
47、y= - - i ;C程序设计(第三版)谭浩强自增、自减运算只能用于自增、自减运算只能用于变量变量,不能用于常量或表达式,不能用于常量或表达式 如:如:a + + 合法。而合法。而 5 + +或或 (x+y) + + 不合法不合法自增、自减运算的结合方向是自增、自减运算的结合方向是“自右至左自右至左”。 如:如:- a + + 相当于相当于 - (a + +); 问:如果问:如果 a 的值为的值为3,输出结果为多少?,输出结果为多少?例:设例:设 a 的值为的值为 3。求以下表达式的值。求以下表达式的值1、(、(a + +)+ (a + +)+(a + +)2、 (+ +a)+(+ + a)+
48、 (+ + a) 例:设例:设a的值为的值为3,b的值为的值为 4,求下面表达式的值,求下面表达式的值 a+ + +b;考虑:(考虑:(a+ +)+b a+(+ +b)结论:尽可能多地自左而右将若干个字符组合。结论:尽可能多地自左而右将若干个字符组合。表达式表达式1的值为的值为9,表达式表达式2的值为的值为18C程序设计(第三版)谭浩强例例:/*程序功能:自增、自减运算符的用法与运算规则示例程序功能:自增、自减运算符的用法与运算规则示例main() int x=6, y; printf(x=%dn,x); /*输出输出x的初值的初值*/ y = +x; /*前置运算前置运算*/ printf(
49、y=+x: x=%d,y=%dn,x,y); y = x-; /*后置运算后置运算*/ printf(y=x-: x=%d,y=%dn,x,y); 程序运行结果:程序运行结果:x=6y=+x: x=7,y=7y=x-: x=6,y=7 C程序设计(第三版)谭浩强例:例:int i=3; printf(“ %d,%d”, i, i + +); 此问题涉及不同的计算机系统对函数求值方向不同。此问题涉及不同的计算机系统对函数求值方向不同。 如果自左向右求值,则输出如果自左向右求值,则输出 3和和3。 如果自右向左求值,则输出如果自右向左求值,则输出4和和3。5、正、负号运算符、正、负号运算符 1)一
50、元运算符;)一元运算符;2)结合方向是自右向左的)结合方向是自右向左的3)优先级和自增、自减相同,高于)优先级和自增、自减相同,高于*、/运算符运算符4)相当于一次算术运算)相当于一次算术运算例:例:- a*b=(-a)*b -a=0-aC程序设计(第三版)谭浩强第九节第九节 赋值运算符和赋值表达式赋值运算符和赋值表达式1、赋值运算符:、赋值运算符:“=”,将赋值号右边的常量或表达式的值赋给,将赋值号右边的常量或表达式的值赋给 赋值号左边的变量。赋值号左边的变量。2、类型转换:、类型转换:(1)实型数据赋给整型变量时,截取整数部分。)实型数据赋给整型变量时,截取整数部分。 如:如:int i;
51、 i=3.7; 3(2)整型数据赋给实型变量时,以浮点数形式存储。)整型数据赋给实型变量时,以浮点数形式存储。 如:如:float i; i=12; 12.000000(3)将)将double型数据赋给型数据赋给float型变量,截取前型变量,截取前7位有效数据,但位有效数据,但 不能溢出。不能溢出。(4)将)将float型数据赋给型数据赋给double型变量,数值不变,有效数位扩展型变量,数值不变,有效数位扩展(5)字符型数据赋给整型变量时,将字符型数据放入整型数据)字符型数据赋给整型变量时,将字符型数据放入整型数据 低八位中。低八位中。Turbo C将字符型数据默认为有符号型。将字符型数据
52、默认为有符号型。(6)将整形数据赋给字符型变量时,将其低八位放入字符变量)将整形数据赋给字符型变量时,将其低八位放入字符变量 其余部分截断其余部分截断C程序设计(第三版)谭浩强例:例:int i=289; char c=a; c=i; printf(“%c,%d”,c,c); !,33(7)将)将unsigned型数据赋给占相同字节的整型变量,原样型数据赋给占相同字节的整型变量,原样 存入,高位补存入,高位补0,但不能出现溢出。,但不能出现溢出。 例:例:unsigned int a=65535; int b; b=a; printf(“b=%d”,b); b=-1 例:例:unsigned
53、a; int b=-1; a=b; printf(“a=%u”,a); a=65535(8)将)将unsigned型数据赋给长度相同的型数据赋给长度相同的unsigned型变量,型变量,原原 样照赋。样照赋。 总结:按存储单元中的存储形式直接传送。总结:按存储单元中的存储形式直接传送。11111111111111111111111111111111ab1111111111111111a符号位C程序设计(第三版)谭浩强3、复合的赋值运算符、复合的赋值运算符复合赋值运算的一般格式为:复合赋值运算的一般格式为: 变量变量 双目运算符双目运算符 = 表达式表达式 复合赋值运算符复合赋值运算符它它等价于
54、等价于:变量:变量 = 变量变量 双目运算符双目运算符 (表达式表达式)。类型:类型:+=,-=,*=,/=,%=; /*复合算术运算符(复合算术运算符(5个)个)*/&=,=,|=,=; /*复合位运算符(复合位运算符(5个)个)*/C程序设计(第三版)谭浩强含义:含义:例:例:a+=3 a=a+3 a-=3 a=a-3 a*=3 a=a*3 a/=3 a=a/3 a+=b a=a+b a+=b+3 a=a+(b+3)C程序设计(第三版)谭浩强4、赋值表达式、赋值表达式一般形式:一般形式: 说明:说明:(1)一般形式中的)一般形式中的也可以是一个赋值表达式也可以是一个赋值表达式 如如
55、a=b=c=5相当于相当于a=(b=(c=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2)C程序设计(第三版)谭浩强(2)赋值表达式也可以包含复合的赋值)赋值表达式也可以包含复合的赋值运算符运算符 int a=8; a+=a-=a*a; a+=a-=64 a+=(a=a-64) a+=(a=8-64) a+=a a=a+a= -48 / -112(3)赋值表达可以出现在其它语句中)赋值表达可以出现在其它语句中 如如printf(“%d”,a=b) ;= -56C程序设计(第三版)谭浩强第十节第十节 逗号运算符和逗号表达式逗号运算符和逗号表达式一、一般形式:一、
56、一般形式:表达式表达式1,表达式,表达式2,表达式表达式n二、求解过程:按顺序求解。二、求解过程:按顺序求解。三、表达式的值:最后一个表达式的值三、表达式的值:最后一个表达式的值四、优先级:最低四、优先级:最低五、不是所有的逗号都是逗号运算符五、不是所有的逗号都是逗号运算符C程序设计(第三版)谭浩强例:例:(1) a=5+4,6*a (2)(a=5+4,6*a),a-2 (3)b=(a=4,a*5) (4)b=a=4,5*aprintf(“%d,%d”,a,b)printf(“%d,%d,%d”,(a,b,c),b,c);答案:答案:(1) 54(2) 7(3) b=20 (4) 20C程序设
57、计(第三版)谭浩强思考思考1:假设所有变量均为整型,则表达式:假设所有变量均为整型,则表达式 (a=2,b=5,a+,b+,a+b)的)的 值为值为_9_。思考思考2:已知:已知A的的ASCII码的十进制表示为码的十进制表示为65, 下面程序的输出是什么?下面程序的输出是什么? main() char c1=B,c2=y; printf(“%d,%dn”,+c1,-c2); 67,120C程序设计(第三版)谭浩强第四章第四章 顺序程序设计顺序程序设计本章要点:本章要点:第一节:第一节:C语句概述语句概述 (了解)(了解)第二节:程序的三种基本结构第二节:程序的三种基本结构 (理解)(理解)第三
58、节:赋值语句(掌握)第三节:赋值语句(掌握)第四节:数据输出(掌握)第四节:数据输出(掌握)第五节:数据输入(掌握)第五节:数据输入(掌握)C程序设计(第三版)谭浩强顺序程序设计顺序程序设计 数据的输入与输出,输入输出函数的调用。数据的输入与输出,输入输出函数的调用。分析分析:数据的输入与输出和函数的调用。因为这些都是很基数据的输入与输出和函数的调用。因为这些都是很基础的事情。础的事情。 C程序设计(第三版)谭浩强第一节语句概述第一节语句概述语语句句分分类类控制控制语句语句函数调用:由一次函数调用加一个分号构成一个语句函数调用:由一次函数调用加一个分号构成一个语句 表达式语句:由一个表达式加一
59、个分号构成一个语句表达式语句:由一个表达式加一个分号构成一个语句空语句:无任何动作;可作为转向点;空语句:无任何动作;可作为转向点;复合语句:由括起来的语句(分程序)复合语句:由括起来的语句(分程序)条件语句条件语句 if( ) else 循环语句循环语句 for( ) while( ) do while( )转向语句转向语句 goto 中止循环语句中止循环语句 continue break 多分支选择语句多分支选择语句 switch返回语句返回语句 returnC程序设计(第三版)谭浩强例:例:(1)if (xy) z=x; else z=y;(2) printf (“I am a stud
60、ent”);(3) a=6 a=6;(4) ;(5) a=a*3; b=a; printf( “a=%d b=%d”,a,b); 注:注:()每一个语句都有一个分号。()每一个语句都有一个分号。()复合语句的花括号外面()复合语句的花括号外面无分号。无分号。()函数调用可以是库函数,()函数调用可以是库函数,也可以是用户自定义函也可以是用户自定义函数。数。C程序设计(第三版)谭浩强第二节程序的三种基本结构第二节程序的三种基本结构程序的三种结构即:顺序结构、选择结构、循环结构。程序的三种结构即:顺序结构、选择结构、循环结构。先执行操作先执行操作后执行操作后执行操作例:例: a=3; b=4; c=a*b; printf(“c=%d”,c);一、顺
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年安徽审计职业学院单招综合素质笔试备考试题带答案解析
- 2026年浙江经贸职业技术学院单招综合素质考试备考试题附答案详解
- 2026年广东女子职业技术学院单招职业技能笔试参考题库带答案解析
- 货代员基本知识培训课件
- 2026年蚌埠学院高职单招职业适应性测试模拟试题有答案解析
- 财险服务课件
- 2026年阳泉师范高等专科学校单招职业技能考试参考题库附答案详解
- 医疗市场分析与营销策略汇报
- 医疗大数据在疾病预防与控制中的应用
- 智能化医院管理平台
- 2026北京大学餐饮中心招聘劳动合同制人员1人笔试参考题库及答案解析
- 2025年安吉县辅警招聘考试真题汇编附答案
- 货运代理公司操作总监年度工作汇报
- 物业管理条例实施细则全文
- 电化学储能技术发展与多元应用
- 2026年安全员之C证(专职安全员)考试题库500道及完整答案【夺冠系列】
- 掩体构筑与伪装课件
- 2025年福建省高二学业水平考试信息技术试题(含答案详解)
- 部编本语文三年级上册词语表
- 林业地类代码表
- 辅导员工作谈心谈话分析-辅导员谈心谈话案例
评论
0/150
提交评论