第2讲语言语法入门PPT讲稿.ppt
第2讲语言语法入门第1页,共31页,编辑于2022年,星期一第一章 C语言程序入门目录:目录:1.1 程序程序1.2 程序操作的对象程序操作的对象-数据数据1.3 C程序的基本操作程序的基本操作1.4 顺序结构的程序顺序结构的程序第2页,共31页,编辑于2022年,星期一1.2 程序操作的对象-数据第3页,共31页,编辑于2022年,星期一思考题有哪些数据?如何分类?有哪些数据?如何分类?如何表示、标识、存储数据?如何表示、标识、存储数据?如何输入、输出数据?如何输入、输出数据?第4页,共31页,编辑于2022年,星期一1.2 数据1.2.1 数据的类型1.2.2 几个重要的概念1.2.3 常量1.2.4 变量及其定义方法第5页,共31页,编辑于2022年,星期一1.2.1 数据的类型 基本数据类型与数据的表示 1、整型:整型指不带小数点的数据类型。例如,123、-89、0。常用的整型有基本整型和长整型,分别用intint和longlong表示。在Turbo C环境中,int类型的数据用2个字节(16位二进制位)表示,取值范围是-3276832767;long类型的数据用4个字节(32位二进制位)表示,取值范围是-2147483648 2147483647。第6页,共31页,编辑于2022年,星期一01 11 11 11 11 11 11 11int型:型:最大最大:3276710 00 00 00 00 00 00 00最小最小:-3276811 11 11 11 11 11 11 11unsigned int型:型:最大最大:6553500 00 00 00 00 00 00 00最小最小:0第7页,共31页,编辑于2022年,星期一2、实型 实型是指带小数点的数据类型。例如,78.34、0.0、-765.2、76.0。在C语言中,实型有单精度和双精度两种形式,分别用floatfloat和doubledouble表示。单精度的有效位数较双精度的有效位数少。在Turbo C环境中,float类型的数据用4个字节(32位二进制位)表示,有效位数为7位,;double类型的数据用8个字节(64位二进制位)表示,有效位数为15位。第8页,共31页,编辑于2022年,星期一3、字符型字符型是指其值仅含有一个字符一个字符的数据类型。在C语言中,字符类型的名称是charchar,字符值用一对单引号单引号括起来,并且每个字符对应一个ASCII编码,用1个字节(8位二进制位)表示。例如,0、B、#对应的ASCII编码分别为48、66和35。第9页,共31页,编辑于2022年,星期一数据类型总表C C数数据据类类型型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型void定义类型定义类型typedef字符类型字符类型char、枚举类型枚举类型enum整整 型型实型实型单精度型单精度型float双精度型双精度型double数组数组结构体结构体struct共用体共用体union短整型短整型short长整型长整型long整型整型int 整型分有无符号整型分有无符号数据类型决定:1.数据占内存字节数2.数据取值范围3.其上可进行的操作第10页,共31页,编辑于2022年,星期一基本数据类型总结基本数据类型总结类型类型 符号符号关键字关键字数的表示范围数的表示范围所占位数所占位数整型字符型实型有无(signed)int16-3276832767(signed)short16-3276832767(signed)long32-2147483648214748364716unsigned int0655353204294967295unsigned longunsigned short16065535有有float323.4e-383.4e38有有double641.7e-3081.7e308有有signed char8-128127无无char80255说明:数据类型所占字节数随机器硬件不同而不同,上表以IBM PC机为例:第11页,共31页,编辑于2022年,星期一1.2.2 重要的几个概念1、关键字(系统固有的保留字):、关键字(系统固有的保留字):C语言中预先规定的语言中预先规定的具有固定含义的一些单词具有固定含义的一些单词,用户只,用户只能安规定的含义使用它们,不能擅自改变其含义。能安规定的含义使用它们,不能擅自改变其含义。auto break case char constcontinue default do double elseenum extern float for gotoif int long register returnshort signed sizeof static structswitch typedef unsigned union voidvolatile while第12页,共31页,编辑于2022年,星期一2、标识符(用户定义的)、标识符(用户定义的)定义:用来标识变量、常量、函数等的字符序列定义:用来标识变量、常量、函数等的字符序列组成:组成:只能由只能由字母字母、数字数字、下划线下划线组成,且组成,且第一第一个字符必须个字符必须是字母或下划线是字母或下划线大小写敏感大小写敏感不能使用关键字不能使用关键字长度:最长长度:最长32个字符个字符分类:系统预定义和用户自定义二类分类:系统预定义和用户自定义二类命名原则:命名原则:见名知意见名知意不宜混淆不宜混淆 如如l与与I,o与与0例例:判断下列标识符号合法性判断下列标识符号合法性sum Sum M.D.John day Date 3days student_name#33 lotus_1_2_3 char ab _above$123第13页,共31页,编辑于2022年,星期一一般用大写字母一般用大写字母是宏定义预处理命令,不是是宏定义预处理命令,不是C语句语句直接常量直接常量:整型常量整型常量 实型常量实型常量 字符常量字符常量 字符串常量字符串常量枚举常量枚举常量如#define PRICE 30定义:程序运行时其值不能改变的量(即常数)定义:程序运行时其值不能改变的量(即常数)分类分类:符号常量符号常量:用标识符代表常量用标识符代表常量定义格式:定义格式:#define#define 符号常量符号常量 常量常量案例1.5 符号常量举例#define PRICE 30main()int num,total;num=10;total=num*PRICE;printf(total=%d,total);运行结果:total=3001.2.3 常量第14页,共31页,编辑于2022年,星期一整型常量(整常数)整型常量(整常数)三种表示形式:三种表示形式:十进制整数:由数字十进制整数:由数字0 09 9和正负号表示和正负号表示.如如 123,-456,0123,-456,0八进制整数:由数字八进制整数:由数字0 0开头开头,后跟数字后跟数字0 07 7表示表示.如如0 0123,123,0 01111十六进制整数:由十六进制整数:由0 x0 x开头开头,后跟后跟0 09,a9,af,Af,AF F表示表示.如如0 x0 x123,123,0X0Xffff例 12 与 12L例例 30000 为为int型型 65536 为为long int 型型整型常量的类型整型常量的类型根据其值所在范围确定其数据类型根据其值所在范围确定其数据类型在整常量后加字母在整常量后加字母l l或或L L,认为它是,认为它是long int 型常量型常量对无符号长整型常量由常量值后跟对无符号长整型常量由常量值后跟LULU、lulu、lUlU或或LuLu问题:0123 =()100 x123=()100Xff =()1083291255问题:问题:0123 =()100 x123=()100Xff =()10第15页,共31页,编辑于2022年,星期一实型常量(实数或浮点数)实型常量(实数或浮点数)表示形式:表示形式:十进制小数形式:(必须有小数点)十进制小数形式:(必须有小数点)如如0.123,.123,123.0,0.123,.123,123.0,0.0,123.0.0,123.指数形式:(指数形式:(e e或或E E之前必须有数字;指数必须为整数)如之前必须有数字;指数必须为整数)如12.3e3 12.3e3,123E2,1.23e4,123E2,1.23e4,e-5e-5 ,1.2E-3.51.2E-3.5 实型常量的类型实型常量的类型默认默认doubledouble型型在实型常量后加字母在实型常量后加字母f f或或F F,认为它是,认为它是float float 型型长双精度型常量由常量值后跟长双精度型常量由常量值后跟L L或或l l来表示来表示第16页,共31页,编辑于2022年,星期一aaa17字符常量字符常量定义定义:用用单引号单引号括起来的单个括起来的单个普通字符普通字符或或转义字符转义字符.字符常量的字符常量的值值:该字符的:该字符的ASCIIASCII码值码值转义字符及其含义:转义字符及其含义:转义字符转义字符含义含义nvradddtbf“xhh转义字符转义字符含义含义换行换行垂直制表垂直制表回车回车响铃响铃单引号单引号3位位8进制数代表的字符进制数代表的字符水平制表水平制表退格退格换页换页反斜线反斜线双引号双引号2位位16进制数代表的字符进制数代表的字符如 101 -A 012 -n 376 -x61 -a 60 -0 483 -()例:A-101-x41-65如 A65,a97,048,n10如 a A?n 101转义字符转义字符:反斜线后面跟一个字符或一个代码值表示反斜线后面跟一个字符或一个代码值表示例 转义字符举例(ch2_001.c,ch2_004.c)main()printf(101 x42 Cn);printf(I say:How are you?n);printf(C Programn);printf(Turbo C);运行结果:(屏幕显示)A B CIsay:”How are you?”C ProgramTurbo C例 main()printf(“Yb=n”);运行结果:屏幕显示:=打印机输出:第17页,共31页,编辑于2022年,星期一字符常量与字符串常量不同字符串常量定义:用双引号(“”)括起来的字符序列存储:每个字符串尾自动加一个 00 作为字符串结束标志h e l l o 0例例 字符串字符串“hellohello”在内存中在内存中a a 0例 a“a”例例 空串空串 “”0例:char ch;ch=“A”;例:char ch;ch=A;第18页,共31页,编辑于2022年,星期一枚举常量枚举数据类型描述的是一种枚举数据类型描述的是一种整型值整型值的集合。的集合。当某些量仅由有限个数据值组成时,通常用枚举类型表示。当某些量仅由有限个数据值组成时,通常用枚举类型表示。枚举类型定义如下:枚举类型定义如下:enum responseno,yes,none;枚举常量表第一个枚举常量的默认值为第一个枚举常量的默认值为0,以后依次递增,以后依次递增1也可以在定义时明确设置某一个或几个或全部枚举常量也可以在定义时明确设置某一个或几个或全部枚举常量的值(整数)的值(整数)枚举类型名枚举类型名枚举变量名enum response answer;response 可省略可省略 enum no,yes,none answer;第19页,共31页,编辑于2022年,星期一复习与归纳复习与归纳为什么要学习计算机语言?为什么要学习计算机语言?C程序的结构?程序的结构?编程解决问题要明白的几件事?编程解决问题要明白的几件事?数据有哪些类型,如何表达,如何存储?数据有哪些类型,如何表达,如何存储?如何实现输入、计算和输出?如何实现输入、计算和输出?若问题中有条件限制该如何解决?若问题中有条件限制该如何解决?若问题是复杂重复计算问题,如何解决?若问题是复杂重复计算问题,如何解决?若有大量的数据要处理,如何解决?若有大量的数据要处理,如何解决?第20页,共31页,编辑于2022年,星期一编译程序根据变量定义为其编译程序根据变量定义为其分配指定字节的内存单元分配指定字节的内存单元.地址地址int a=1,b=-3,c;abc2字节字节2字节字节2字节字节地址地址地址地址.内存内存1-3随机数随机数1.2.4 变量变量概念:其值可以改变的量概念:其值可以改变的量变量名变量名与与变量值变量值变量定义的一般格式:变量定义的一般格式:数据类型数据类型 变量变量1,变量,变量2,变量,变量n;变量初始化:定义时赋初值 例:int a,b,c;float data;决定分配字节数和数的表示范围合法标识符例:int a=2,b,c=4;float data=3.67;char ch=A;int x=1,y=1,z=1;int x=y=z=1;变量的使用:变量的使用:先定义,后使用先定义,后使用例1 int student;stadent=19;/Undefined symbol statent in function main 例例2 float a,b,c;c=a%b;/Illegal use of floating point in function main 变量定义位置:变量定义位置:一般一般放在函数开头放在函数开头main()int a,b=2;float data;a=1;data=(a+b)*1.2;printf(“data=%fn”,data);变量定义变量定义可执行语句可执行语句main()int a,b=2;a=1;float data;data=(a+b)*1.2;printf(“data=%fn”,data);第21页,共31页,编辑于2022年,星期一&整型变量整型变量占字节数随机器不同而不同占字节数随机器不同而不同,一般占一个机器字一般占一个机器字shortintlongshortintlong可用可用sizeofsizeof(类型标识符)测量类型标识符)测量实型变量实型变量floatfloat:占:占4 4字节,提供字节,提供7 7位有效数字位有效数字doubledouble:占:占8 8字节,提供字节,提供15151616位有效数字位有效数字字符型变量字符型变量字符变量存放字符字符变量存放字符ASCIIASCII码码charchar与与intint数据间可进行算术运算数据间可进行算术运算例例 float a;a=111111.111;/*a=111111.1*/double b;b=111111.111;/*b=111111.111*/例例 a=a=D D;/*a=68;*/;/*a=68;*/x=x=A A+5;/*x=65+5;*/+5;/*x=65+5;*/s=s=!+G G /*s=33+71;*/*s=33+71;*/没有没有字符串变量字符串变量,用字符数组存放,用字符数组存放第22页,共31页,编辑于2022年,星期一变量的存储从变量定义中可以得知每个变量的名称和所属类型。变量名是引用变量的依据;变量的所属类型决定了变量的取值范围、存储方式和能够实施的操作类别。例如:int count;定义了一个名为count的int类型变量。系统将为这个变量分配2个字节的存储空间。第23页,共31页,编辑于2022年,星期一变量的赋值l变量定义之后并没有一个确切的初始值,变量赋值就是将变量所属数据类型的某个数值(介于取值范围之中)放入系统为这个变量分配的存储空间中的操作。1)在定义变量的同时为变量赋予一个初始值。=;例如:int data=100;l通过赋值操作为变量赋值。=例如:x=64;第24页,共31页,编辑于2022年,星期一案例案例1.6#define PRICE 12.5 main()int num=3;float total;char ch1,ch2=D;total=num*PRICE;ch1=ch2-A+a;printf(“total=%f,ch1=%cn”,total,ch1);宏定义变量定义输出结果运行结果:total=37.500000,ch1=d第25页,共31页,编辑于2022年,星期一不同类型数据间的转换不同类型数据间的转换隐式转换隐式转换什么情况下发生什么情况下发生运算转换运算转换-不同类型数据混合运算时不同类型数据混合运算时赋值转换赋值转换-把一个值赋给与其类型不同的变量时把一个值赋给与其类型不同的变量时输出转换输出转换-输出时转换成指定的输出格式输出时转换成指定的输出格式函数调用转换函数调用转换-实参与形参类型不一致时转换实参与形参类型不一致时转换运算转换规则运算转换规则:不同类型数据运算时先不同类型数据运算时先自动自动转换转换成同一类型成同一类型第26页,共31页,编辑于2022年,星期一doublefloatlongunsignedintchar,short低低高高说明说明:必定的转换必定的转换运算对象类型不同时转换运算对象类型不同时转换例例 char ch;int i;float f;double d;ch/i +f*d -(f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble10+a +i*f -d/l例例 int i;float f;double d;long l;第27页,共31页,编辑于2022年,星期一显式转换(强制转换)显式转换(强制转换)一般形式:一般形式:(类型名)(表达式)(类型名)(表达式)例例 (int)(x+y)(int)(x+y)(int)x+y (int)x+y (double)(3/2)(double)(3/2)(int)3.6 (int)3.6 说明:强制转换得到所需类型的中间变量,原变说明:强制转换得到所需类型的中间变量,原变量类型不变量类型不变 例例 main()float x;int i;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);结果:结果:x=3.600000,i=3精度损失问题较高类型向较低类型转换时可能发生较高类型向较低类型转换时可能发生第28页,共31页,编辑于2022年,星期一思考小结如何理解关键字、标识符?有哪些常量,如何表示?程序中一般数据如何存储?注意什么?如何理解数据类型?运算中类型转换的方法?第29页,共31页,编辑于2022年,星期一课后练习与作业练习:19-21页1.5语法练习部分;作业:21页1.6编程练习的2、3、4题。要求每组交一份,下次课讲台上讲解。第30页,共31页,编辑于2022年,星期一复习与预习复习:3-8页预习:8-19页第31页,共31页,编辑于2022年,星期一