c语言 常量和变量 ppt,C语言(常量、变量及表达式).ppt

253b171540df25e1b84436cbe50dfc72.gifC语言(常量、变量及表达式).ppt

C语言程序设计,数据类型、运算符、表达式及简单的输入输出函数,第四章,第四章 数据类型、运算符、表达式及简单的输入输出函数,数据类型 常量 变量 运算和运算符 运算表达式 简单的输入输出函数 字符集编程可使用的字符C语言程序的基本标识符,英文字母 a z,A Z; 阿拉伯数字 0 9; 特殊符号 (*;/以及空格、换行等),12cd, 123,11, M.D.Ritchie。 这里所表示的标识符都是错误的。,标识符,标识符规定,例sun,day,month,student_name, c1string_2。,1. 标识符由字母、下划线、数字三种字符组成,且第一个字符必须是字母或者下划线。 * . 汉字等均不能出现。 2. 字母区分大小写; 3. 标识符不能是关键字。,用来标明变量名、函数名、数组名、结构体名、文件名、类型名等的符识。标识符就是有效字符的序列,一个名字。用英文,保留字(关键字)(见书P43 表4-1 C语言的保留字) 预定义标识符库函数名,如stdio;预编译命令,如include 用户定义标识符,4.2 数据类型,整型 实型(浮点型) 字符型(字符串) 枚举型,单精度型 双精度型,数组类型 结构体类型 共同体类型基本类型,构造类型,指针类型数组 类型相同的数据集合,常量形式 变量形式,结构体 类型不同的数据集合,按进制分类 十进制。例10 , 35, -1289。 八进制,以 0 开头。 例010o是字母。对应十进制 8 十六进制,以 0 x 开头。例0 x10。 对应十进制 16 按字节长度分类 短型 2个字节。 长型 4个字节。长型常量后加字母L。 例15L , 0 x10, 010。,程序运行中数值不改变的量,十进制数形式,由数字和小数点组成。 例1. 3415926 指数形式, 由尾数、字母e或E和指数组成。 例1E3 表示 1乘10的三次方(1103)。,4.3 常量,返回,1、整型数,2、实型浮点数数,字符常量,3、字符型数据,字符串常量,转义字符,即普通字符用单引号括起来。在C语言中,字符型数据是用ASCII码来表示储存)的。 例A 65,a 97。 在C语言中,字符型数据与整型数据可通用10R,即一串普通字符用双引号括起来。 例“ Turbo C ”,“ China ”。,以“ ”开头的字符表示特定的含义。 此时字符转变为另外的意义。 例 n 表示回车换行 , r 表示回车。,(1)数,(2)字符常量,(3)字符串常量,A和 “A”不相同,小 结,注意,用“”包围的一个或多个字符 ,如 “ hello”,单一字符,用 包围, 如A,8,类 型 进 制 表 示 范 围 整型数 八、 十、十六 015, 15, 0 x15 -215 215-1 长整型数 八、 十、十六 015L, 15L, 0 x15L -231 231-1 实型数 十 123.5, 1.235e2 10-381038(4)特殊的字符常量(转义字符), 后跟一个字符或一个数字,表示控制代码和用于功能定义的字符 如,字符 功能 n 回车换行 r 回车 t 水平制表 b 退格 v 垂直制表 f 换页 a 响铃警报 “ 双引号字符 101 A x41 A,符号常量,对常量命名,即用符号代替常量; 先定义后使用; 格式 define 符号常量 常量 例 define PI 3.1415926 宏定义,不用分号; 好处1. 增强可读性 2. 可维护性,避免多处修改(如求周长,体积)。,常量与变量,常量的本质 不占据任何存储空间 属于指令的一部分,编译后不再更改 变量程序运行时可以随时改变 定义变量时,给变量分配存储单元(如一个字节),如宿舍号码对应一个房间,变量名对应一段存储空间。 通过变量对内存修改、存取;对变量的存取就是对存储单元的存取。 要先定义变量的类型,决定占用的内存空间,才能存取。,2.3.1 变量的数据类型 2.3.2 变量的使用 2.3.3 变量数据的存储与读取 2.3.4 其它变量,2.3 变量,返回,12cd, 123,11, M.D.Ritchie。 这里所表示的标识符都是错误的。,变量,变量名,标识符,标识符规定,例sun,day,month,student_name, c1string_2。,用来标明变量名、函数名、数组名、结构体名、文件名、类型名等的符识。名字。英文,变量的名字。用标识符标识变量名。,程序运行中其值改变的量。,标识符由字母(区分大小写)、下划线、数字三种字符组成,且第一个字符必须是字母或者下划线。 书P5,表1-2,C语言的31个保留字。,1、整型变量表示整型数据(整数)的变量。,2、实型变量,2.3.1 变量的数据类型,1)按照存储空间分三种(限制了表达范围) 基本型 int 变量名 2个字节。 短整型 short int 变量名 2个字节。 长整型 long int 变量名 4个字节。 2)符号(正负号) int变量名 无符号型 unsigned short int 变量名 long int 变量名,表示实型数据(实数)的变量。 单精度型float 变量名 4个字节。 双精度型double 变量名 8个字节。,3、字符型变量,4、字符串数组,表示字符型数据的变量。 char 变量名 1个字节 。,表示字符串型数据的数组。 char 变量名 下标 字符串数组是一个地址量。字符串数组表示字符串的第一个字符的地址。,2.3.1 变量的数据类型,5、表 变量的数据类型、字节长度、位数、数据范围,1、变量的定义(声明),例 int a; float b, c, d; char c1,string;,变量定义的格式,存储类型 数据类型标识符 变量1,变量2, 变量n;,2.3.2 变量的使用,在C语言中,所使用的每一个变量在引用前都须先定义,否则在程序编译时会发生错误。变量的定义就是按一定的方式为其使用的变量指定数据类型(标识符 、变量名(标识符)。在程序编译时,为其分配存储空间。,变量的定义意义在于,计算机在编译时,对每一个变量分配对应和固定的存储单元(地址),为其程序的使用创造必要条件 。int i, j number ; float x, y ; char name ; static double u, v ; int a; int a1; extern float a2; extern char str;,变量定义举例,例 int a 3; int b0,c0; float f 5.8; char c1e; char string 10“Beijing”;,2、变量的初始化,给变量赋初值的过程叫变量的初始化。 C 语言允许在定义变量的同时对变量赋值。,注意没有赋初值的变量,并不意味着该变量中没有数值。此时,对于静态型static变量中的值是0,其它存储类型变量一个随机数。 变量初始化的意义程序编译完成后,变量已被赋值。1 初始化定义的同时赋值 int i5, j6; float x10.1 ; char nameA;,2 先定义,后赋值。 int i; float x10.1; char name; i5; x20.5; nameA; id;,变量的赋值的方法在程序中使用变量,称为变量的引用。如进行数值计算、数据处理等。使用变量时,先定义,后引用。,3、变量的引用2.3.3 变量数据的存储与读取,变量所代表的数据是存储在(计算机)内存中。在使用中往往希望数据的存储应灵活、多样,以便于编程。,变量数据的存储形式有 静态存储 static 静态型 extern 外部型 动态存储 auto 自动型 register 寄存器型 这部分的内容在第五章函数中详细介绍。,1、变量数据的存储,变量 内存,a,b,变量 地址 内 存,a 2000,b 2002,直接读取,间接读取,2、变量数据的读取,变量名实际代表一个确定的存储单元。程序编译完成后,变量就与数据存储单元一一对应。对变量读取操作,就是到对应的存储单元中读取数据。,(指针)变量中存放的是数据内存的地址,在这种情况下,首先拿存放数据的地址,然后,再到对应的地址中读取数据。,2.3.4 其它变量,指针变量(第六章),数组变量(第四章) ,结构体变量(第八章) ,联合体变量(第八章) ,类型标识符 *变量名;,类型标识符 数组名下标;,struct 结构体名 结构体成员表 结构体变量;,union 联合体名 联合体成员表列 ;变量的存储类型, 存储类型 数据类型 变量名,auto 自动型,使用最多,可缺省不写。 static 静态型。 register寄存器型, 少用。 extern 外部型。,变量说明格式 ,英文字母、数字、下划线; 首字符必须是字母; 中间不能有空格,一般用小写; 不要和关键字重名。,变量名,小 结2.4 运算和运算符,2.4.1 运算 2.4.2 运算符,返回,2.4 运算和运算符,2.4.1 运算,运算,运算符,运算量,运算表达式,对数据进行处理的过程,表示各种数据处理的符识,被处理的数据,运算符 运算量,1 算术运算符 2 关系运算符 3 逻辑运算符 4 赋值运算符 5 自反赋值运算符 6 自增自减运算符 7 逗号运算符 8 条件运算符 9 指针运算符 10 地址运算符 11 结构体成员运算符 12 指向结构体成员运算符 13 下标运算符 14 圆括号运算符 15 大括号运算符 16 长度运算符 17 数据类型转换运算符 18位运算运算符,2.4.2 运算符,、-、*、/、 、、 、 、、 、-、*、/、 、- - , * 没有乘方运算符。 除法不能写成m n),注避免除数为0关系运算符对两个操作量进行大小比较的运算符,名 称 运算符 小于 大于等于 等于 不等于 ,注意C 语言中小于等于 、大于等于、等于、不等于运算符的表示与数学中的表示 不同。3 逻辑运算符,1. 逻辑运算把一切“非 0” 的数作为真用1表示,把“0” 数作为假用0表示。 逻辑运算是“非 0”和“0”两类数据或真和假两类种状态的运算。,2. 名 称 运算符 非 单目运算符 与 双目运算符 或 双目运算符, 非, 或,3. 真值表决定逻辑运算结果, 与,有假则假,全真则真。,有真则真,全假则假。,4 赋值运算符,5 自反赋值运算符,名 称 运算符 赋 值 格式 变量 表达式 ; 先计算等号右边的表达式,然后将其值赋给等号左边的变量。,名 称 运算符 加赋值 减赋值 - 乘赋值 * 除赋值 / 模赋值 ,例,a b aa b a -b aa b a*b aa*b a/b aa/b ab aab,例,x x10 ; y x*xx ;,C语言赋值运算符与数学中的等号其含义有着本质的不同。赋值表示操作,有结果。,6 自增自减运算符让变量自己加1或者减1,名 称 运算符 说 明 例 增 1(前缀) 先加1,后使用。 i 增 1(后缀) 先使用,后加1。 i 减 1(前缀) - - 先减1,后使用。 - - i 减 1(后缀) - - 先使用,后减1。 i - -,例,int j; i3; ji; 结果 j的值为4。 i的值为4。,而,int j; i3; ji; 结果变量j的值为3, 变量i将3赋给j后自加1变为4。,自增自减运算仅限用于变量。 自增自减运算不能用于常量或表达式。 单目运算符,结合性为自右向左。,8 条件运算符,9 指针运算符,10 地址运算符,11 结构体成员运算符,12 指向结构体成员运算符,7 逗号运算符,,,,*, 结果等于2。,sizeof 数据类型标识符 或表达式 ;,18 位运算运算符,17 数据类型转换运算符,,条件表达式格式,2.5.5 赋值表达式,由赋值运算符连接常量、变量或表达式构成。,例,赋值表达式格式,变量 常量、变量、表达式;,例,例,int x,y; x5; y10; x10*y5;,char c1; c1a;,char str20“Microsoft”;,自反赋值表达式格式,变量 表达式;,变量 - 表达式;,变量 * 表达式;,变量 / 表达式;,变量 表达式;,例,int a1,b1,c3; a5; b*5; c1; c/1;,aa5; bb*5; cc1; cc/1;注意左端只能为变量,赋值运算与自反赋值运算的结合性是自右至左。 例已知 x10, 则xx-20的值为,(1) x-20 xx-20 x-10,2 x-10 xx-10 x-20,-20例int x,y,a; xy10; ya20;,错,逗号表达式,1. 由逗号运算符连接常量、变量或表达式构成。,3. 逗号表达式求解过程,顺序求表达式的值(先求表达式1,再求表达式2,再求,直到求表达式n ),整个表达式的值是最后一个表达式的值。 4. 优先级最低,自左向右结合。,2. 逗号表达式格式,表达式 1 ,表达式 2 , 表达式 n;,例,例,例,例,35, 68; 结果 14。,a 3*5, a*4; 结果 60。,x a 3,6*3; 结果 x18。,x a 3,6*3; 结果 18。,注意在逗号表达式中,前后表达式使用同一个变量时,前一变量的计算结果会影响后面表达式的计算结果。而不能简单将表达式的值等于最后一个表达式的值。,高 double float long unsigned 低 int char, short,2.5.7 混合表达式,由各种运算符连接常量、变量或表达式构成。,数据类型的转换规则,由低(字节长度短)向高(字节长度长)转换。,混合运算应注意三个问题, 优先级 结合性 数据类型的转换,能被4整除而不能被100整除或能被400整除(判断闰年的条件)。,例, 隐式转换,例, 显式转换,(数据类型标识符)表达式;,显式转换格式,例,例,例, int 1.5; 结果1。,float 1; 结果1.0 。,a*b/c1.5-a;,ch A ch Z ch32 ch;,year 4 0year 100 0 year 400 0;,例,2/10*a*a*a,数据类型转换的两种形式,计算综合表达式时,要注意优先顺序及类型转换。 已知 x5,y67,a7, 则下列表达式的值为 1)xy10ya2 1 运算符优先次序为 (1) (2)(3) (4) ,2)xyA xy651 a2 xy6511 11 1,简单的输入输出函数,字符输入输出函数 字符串输入输出函数 格式化输入输出函数,返回,理解、使用C 库函数的几个要点,函数的功能,函数的引用格式,函数要使用的头文件(包含文件) *.h,在使用函数前应首先了解清楚函数的功能。,调用(使用)函数的格式。 函数名(实参表),4.10.1 字符输入函数getchar和字符输出函数putchar,1、字符输入函数 getchar,include main int c; cgetchar ; ,include main char c; cgetchar ; ,例,功能,要求,从键盘上读取一个(键的)字符。,程序开始要使用预编辑命令 include 。,例,函数引用格式,getchar ,2、字符输出函数 putchar,include “stdio.h” main int c97; putchar c ; ,include main char c; ca; putchar c ; ,例,函数引用格式,功能,要求,向显示终端输出一个字符。,程序开始使用预编辑命令 include “stdio.h”。,例,putchar ch ;,例用getchar、putchar函数编一个程序。要求从键盘输入一个字符,并将其显示在显示器上。,B B,运行程序, include main char c; cgetchar ; putchar c ; ,例用putchar函数输出BOY字母。,BOY,include “stdio.h” main char a,b,c; aB;bO;cY; putchara; putcharb; putcharc; 运行程序,1、字符串输入函数 gets,P72页字符串输入函数gets和字符串输出函数puts,include main char filename 30; gets filename ; ,函数引用格式,功能,要求,gets str ;,从键盘读取一串字符,用回车键结束字符串的输入,并将其赋给字符串数组str, 即存入str所指向的存储区。,程序开始要使用预编辑命令 include 。,例,2、字符串输出函数 puts,include main char str10“abc”; puts str ; puts “ABC” ; ,函数引用格式,功能,要求,将字符串常量或字符串数组str指向的字符串输出到显示器上。字符数组str指向要输出的字符串。,程序开始要使用预编辑命令 include 。,puts str ;,例,运行结果abc ABC,例用gets、 puts函数编一个程序。要求从键盘输入 一个字符串,并将其显示在显示器上。,Test string I/O ABCDEFG ABCDEFG,include main char str20; puts“Test string I/O”; gets str; puts str; ,运行程序,4.10.2 格式化输入、输出函数scanf “输入格式”,输入项地址表列;,scanf “df ”, ,2、格式化输入函数,printf “输出格式”,输出项表列;,输出格式 d 十进制整数 x 十六进制整数 f 浮点小数 c 单一字符 s 字符串,printf “ad, xf ”, a, x;,1、格式化输出函数,格式化输入输出函数可以将各种类型的数据从计算机中输出到显示器上、从键盘上将数据输入到计算机中。,引用格式,1、格式化输出函数 printf,功能,要求,printf( “输出格式”,输出项表列 );,按照指定的格式,将输出项表列的各项,输出到显示器上。,程序开始要使用预编辑命令 include 。,常量、变量、 表达式,格式符输出格式,输出项表列,用于规定相应输出项的格式。输出格式用格式符来说明。 是由一系列格式转换说明符简称格式符组成。 用双引号括起来的字符串,包含两种信息 格式说明。用于规定相应输出项的格式,用格式符来说明,如上面printf函数双引号中的d、f等。 普通字符。即需要原样输出的字符。如上面printf函数双引号中的a、b、逗号。, 是指定要输出的数据, 可以是变量、常量或表达式。 多个变量、常量或表达式时,用逗号“ ,”分隔。 输出变量、常量或表达式的个数要与格式符个数相同、 前后顺序一一对应。,printf “ad, xf ”, a, x;,格式符 - 0 m .n l , 是格式符的开始标识记号。, 数据类型说明字母 指定输出项输出数据的数据类型和格式。,d 带符号十进制整数输出。 f 以小数形式输出,含6位小数。 e 以指数形式输出,其中尾数部分6位小数,指数3位,正负号1位,e1位。 s 以字符串输出。 c 以单个字符输出。 x 以十六进制整数输出。 o 以八进制整数输出。 u 无符号十进制整数输出。 g 以e f 格式中输出长度较短的一种格式输出,不输出无意义的0。,例 main float a111111.111; float b222222.222; printf “fn ”,ab; 6 位小数 运行结果333333.328125 有效位7 位 无效位,数据类型说明字母2-008,f,以小数形式输出,含6位小数。 单精度输出数据有效位7位。 双精度输出数据有效位16位。,2-007,例 main int a123, b12345; printf “d, dn”, a,b; 程序结果123, 12345,d,带符号十进制整数输出,例 main char ca, ; int i97; printf “c, dn”,c,c; printf “c, dn”,i,i ; 运行结果a, 97 a, 97,2-011,2-010,数据类型说明字母,s,例 main printf “sn”, “Beijing”; 运行结果Beijing,c,以单个字符输出,以字符串输出,例 main printf “e”,123.456; 运行结果1.234560e002 6 位小数 3位指数,2-009,e,以指数形式输出, 其中尾数部分6位小数,指数3位,正负号1位,e1位,m表示输出项输出数据(字符)的总长度。 无 .n 部分,格式符 - 0 m .n l ,输出整数,输出实数,输出字符,例,例,例,m表示输出项输出数据(字符)的总长度。 n 表示输出项输出数据的小数部分数据字符的长度。,m表示输出项输出数据字符的总长度。 n表示输出项输出数据字符的实际个数。,m . n 指定输出数据的长度,main int x123; printf “ 3d ”,x; 123,运行结果,main char str20 “Beijing”; printf “ 5.3s ”,str; Bei,运行结果,main float pi3.14159; printf “7.5f”, pi; 3.1416,运行结果,7.4表示输出的数据共占7个字符位置 ,其中小数占4个字符位置。,2-005,2-004,格式符 - 0m .n l , - 指定输出项输出数据的输出位置。, 0 对输出项数据空位置填数字0或空白(空格)。,例,例,main int x456; printf “05dn”, x ; printf “5dn” ,x ; 00456 456,运行结果,指定0,输出显示时填0。 不指定0,输出显示时填空白(空格)。,指定“”或缺省时,输出项输出数据(字符)的输出位置右边靠齐。 指定“-”时,输出项输出数据(字符)的输出位置左边靠齐。,main char str10“ABCD”; printf “5sn”,str; printf “-5sn”,“ABCD”; ABCD ABCD,运行结果,2-006,格式符 - 0m .n l , l 对输出项输出数据的数值, 指定输出的精度和类型。,对整型数,对实型数,例,如果不指定 l 输出产生错误。,d 十进制, x 十六进制, o 八进制, u 无符号十进制。 l long 型精度。 h short 型精度。 缺省时, int 型精度。,e 指数形式, f 小数形式, g。 l double 精度。 缺省时, float 精度。,main long x12345678; printf “ldn”,x; 12345678,运行结果,引用格式,2、格式化输入函数 scanf,功能,要求,scanf “输入格式”, 输入项地址表列);,从标准文件,即键盘上,按输入格式为指定的输入项变量输入数据。,程序开始要使用预编辑命令 include 。,输入格式,输入项表列,格式符,用于规定输入项输入数据的格式。输入格式用格式符来说明。,是由若干个变量的地址组成。一般情况下,在每个变量前加地址运算符 40 scanf“ddd”, 60 行号为40的语句要求为变量a、b、c输入数据。 前面我们说了,输入多个数据时,可以用空格键、回车键或TAB键 作分隔符进行分隔,故 5 6 7 或者5 6 7 或者5 6 7 这三种输入方法都可以,输出结果是a5,b6,c7,2但是如果scanf的双引号里有“,”、“”、“;”、“ ”(空格)、“a”等等的普通字符, 我们在输入的时候一定要原样输入,否则可能会发生严重的错误。 include main int a,b,c; scanf“ad;bd;cd”,c7,运行程序,例题,543 543,a a,main int a ; scanf“d”, ,main char c; scanf“c”, ,例,例,运行程序,main int a,b,c; scanf“ddd”, ,例,运行程序,运行程序,5 6 7 或5 6 7 567,35,45,2.5 35 45 2.500000,例,main int x, y; float z; scanf“d,d,f”, ,scanf“xd,yd”, 则输入形式为 x10,y29,include main

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值