C程序设计的初步认识实用教案

上传人:莉**** 文档编号:73082291 上传时间:2022-04-10 格式:PPT 页数:46 大小:5.10MB
收藏 版权申诉 举报 下载
C程序设计的初步认识实用教案_第1页
第1页 / 共46页
C程序设计的初步认识实用教案_第2页
第2页 / 共46页
C程序设计的初步认识实用教案_第3页
第3页 / 共46页
资源描述:

《C程序设计的初步认识实用教案》由会员分享,可在线阅读,更多相关《C程序设计的初步认识实用教案(46页珍藏版)》请在装配图网上搜索。

1、 2.2 常量与变量(binling) 常量和符号常量 常量:在程序运行过程中,其值不能改变的量 如;12,0,-3,4.6,-1.23,a,c 符号常量:用一个标识符代表一个常量 例2.1 符号常量的使用 #define PRICE 30 main() int num,total; num=10; total=num* PRICE; printf(“total=%d”,total); 运行(ynxng)结果:total=300第1页/共45页第一页,共46页。 符号常量的好处 含义清楚 如 PRICE 代表价格 能做到一改全改 如 #define PRICE 35 程序中所有(suyu)以P

2、RICE代表的价格自动改为35变量(binling)在程序运行过程中,其值可以改变的量变量(binling)有一个名字变量(binling)在内存中占一定的存储单元 3 a 变量值变量名存储单元第2页/共45页第二页,共46页。 标识符 定义:用来标识变量、常量、函数等的有效字符序列 组成: 只能由字母、数字(shz)、下划线组成,且第一个字符必须是字母或下划线 大小写敏感 命名原则: 见名知意 变量名尽量用小写,符号常量用大写 长度尽量不要超过8个字符 尽量不使用下划线开头 不能用关键字作标识符 避免使用容易认错的字符例: 0 o O 1 l I Z z 2例:判断(pndun)下列标识符号

3、合法性sum Sum M.D.John day Date 3days student_name #33 lotus_1_2_3 char ab _above $123M.D.John3days#33char$123ab第3页/共45页第三页,共46页。变量的使用应“先定义,后使用”未被事先定义的不作为变量名 例:如果在定义部分写了 int student ; 而在执行(zhxng)语句中错写成stadent. 如:stadent =30; 则输出错误“变量stadent未定义”编译时根据变量的类型为其分配相应的存储单元 如 int为两个字节 float为四个字节编译时根据变量的类型检查运算是否

4、合法 如 % 运算只能在整型数据之间进行 如果a,b为两个实型变量,则a%b是错误的第4页/共45页第四页,共46页。 2.3 整型数据 整型常量(chngling)的表示方法 十进制整数 如;123,-456,0 八进制整数 以0开头的数 如:0123即(123)8 其值为1*82+2*81+3*80=83 十六进制整数 以0 x开头的数 如:0 x123即(123)16 其值为1*162+2*161+3*160=291要注意各种( zhn)进制数字的组成注第5页/共45页第五页,共46页。 各种( zhn)进制之间的转换 二进制、八进制、十六进制转换成十进制 方法:按权相加10012345

5、259212120212121111011)()(例10012894868381136)()(例1001231679781610162161516121)()(例AF第6页/共45页第六页,共46页。v各种进制之间的转换(整数)v二进制、八进制、十六进制(sh li jn zh)转换成十进制v方法:按权相加l 十进制转换成二进制、八进制、十六进制(sh li jn zh)u方法:连续除以基,从低到高记录(jl)余数,直至商为0例 把十进制数59转换成二进制数5922921427232120(59)10=(111011)21101111 1 1 0 1 1余余余余余余例 把十进制数159转换成八

6、进制数1598198280(159)10=(237)82 3 7 余 7余 3余 2例 把十进制数459转换成十六进制数4591628161160(459)10=(1CB)161 C B 余11余12余 1第7页/共45页第七页,共46页。l二进制与八进制之间的转换(zhunhun)l二进制转换(zhunhun)成八进制:从右向左,每3位一组(不足3位左补0),转换(zhunhun)成八进制l八进制转换(zhunhun)成二进制:用3位二进制数代替每一位八进制数例 (1101001)2=(001,101,001)2=(151)8例 (246)8=(010,100,110)2=(10100110

7、)2000 0001 1010 2011 3100 4101 5110 6111 7第8页/共45页第八页,共46页。l 二进制与十六进制之间的转换(zhunhun)l 二进制转换(zhunhun)成十六进制:从右向左,每4位一组(不足4位左补0),转换(zhunhun)成十六进制l 十六进制转换(zhunhun)成二进制:用4位二进制数代替每一位十六进制数例 (11010101111101)2=(0011,0101,0111,1101)2=(357D)16例 (4B9E)16=(0100,1011,1001,1110)2=(100101110011110)20000 00001 10010

8、20011 30100 40101 50110 60111 71000 81001 91010 A1011 B1100 C1101 D1110 E1111 F第9页/共45页第九页,共46页。 字节和位 内存(ni cn)以字节为单元组成 每个字节有一个地址 一个字节一般由8个二进制位组成 每个二进位的值是0或101234567012345678910.第10页/共45页第十页,共46页。 整型变量 整型数据在内存中的存放 在内存中以二进制形式存放 一个整型变量在内存中占两个字节 如:int i ;i=10;数据在内存中的实际存放情况 补码 正数的补码和其原码形式相同(xin tn) 负数的补

9、码 取-10的绝对值 按位取反 加1 00 1 00 0 0 0 0 0 0 0 10 0 000 1 00 0 0 0 0 0 0 0 10 0 011 0 11 1 1 1 1 1 1 1 01 1 111 1 01 1 1 1 1 1 1 1 01 1 1第11页/共45页第十一页,共46页。整型变量(binling)的分类有符号基本整型 signed int无符号基本整型 unsigned int有符号短整型 signed short int 无符号短整型 unsigned short int 有符号长整型 signed long int无符号长整型 unsigned long int

10、 =3276701 1 11 1 1 1 1 1 1 1 11 1 1符号位11 1 11 1 1 1 1 1 1 1 11 1 1=65535数据的第一位有符号(fho)整型变量无符号(fho)整型变量第12页/共45页第十二页,共46页。ANSI标准(biozhn)定义的整数类型类型比特数取值范围sigend int16-3276832767unsigned int16065535sigend short int16-3276832767unsigned short int 16065535sigend long int32-231(231-1)unsigned long int320 (

11、232-1)第13页/共45页第十三页,共46页。 整型变量(binling)的定义 int a,b; unsigned short c,d; long e,f 例2.2 整型变量的定义(dngy)与使用main() int a,b,c,d; unsigned u; a=12;b=-24;u=10; c=a+u;d=b+u; printf(“a+u=%d,b+u=%dn”,c,d); 运行(ynxng)结果:a+u=22,b+u=-14第14页/共45页第十四页,共46页。 整型数据(shj)的溢出例2.3 整型数据(shj)的溢出main() int a,b; a=32767; b=a+1;

12、 printf(“%d,%dn”,a,b); 运行(ynxng)结果:32767,-3276801 1 11 1 1 1 1 1 1 1 11 1 1a:3276710 0 00 0 0 0 0 0 0 0 00 0 0b:-32768第15页/共45页第十五页,共46页。整型常量的类型(lixng)其值在-32768+32767范围内的整数认为它是int 型其值超出上述范围,在-2147483648+2147483647范 围内,则认为是长整型一个整型常量后加一个字母u,认为是unsigned int 型 如12345u。如果是-12345u,则先将-12345转换成补码 53191,然后按

13、无符号数存储。一个整型常量后面加一个字母l或L,认为是long int 型 312691245781011第16页/共45页第十六页,共46页。 思考题 请写出下列(xili)程序的运行结果main() long int a; a=32767+1; printf(“a=%ldn”,a);main() long int a; a=32768; printf(“a=%ldn”,a);第17页/共45页第十七页,共46页。 2.4 实型数据 实型常量的表示方法 十进制小数形式 由数字和小数点组成(必须有小数点) 如;.123、123.、123.0、0.0 指数形式 如:123e3或123E3 都代表

14、123*103 字母e之前必须有数字,e后面的指数必须为整数(zhngsh) 规范化的指数表示形式 一个实数可以有多种指数表示形式 如123.456可表示为123.456e0、12.3456e1、 1.23456e2、0.123456e3等 字母e之前的小数部分中,小数点左边有且只能有一位 非零的数字 第18页/共45页第十八页,共46页。 实型变量(binling) 实型数据在内存中的存放 实型变量(binling)的分类 +.3141591数符 小数部分指数类型比特数有效数字数值范围float326710-371038double64151610-30710308long double80

15、181910-4931104932第19页/共45页第十九页,共46页。 实型数据(shj)的舍入误差 例2.4 实型数据(shj)的舍入误差 main() float a,b; a=123456.789e5; b=a+20; printf(“%fn”,b); 运行(ynxng)结果:12345678848.000000实型常量的类型 系统将实型常量作为双精度来处理(chl) 可在数的后面加字母f或F,按单精度处理(chl)第20页/共45页第二十页,共46页。2.5 字符(z f)常量定义:用单引号括起来的单个普通字符(z f)或转义字符(z f). 如 101 -A 012 -n 376

16、- x61 -a 60 -0 483 -()例:A-101-x41-65如 a A ? n 101v转义字符:反斜线后面跟一个字符或一个代码(di m)值表示例 转义字符举例(j l)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”); 运行结果:屏幕显示:=打印机输出:字符形式含义ASCII代码n换行,将当前位置移

17、到下一行开头10t水平制表(跳到下一个制表位)9b退格,将当前位置移到前一列8r回车,将当前位置移到本行开头13f换页,将当前位值移到下页开头12反斜杠字符“”92单引号字符39”双引号字符34ddd1到3位8进制数所代表的字符xhh1到2位16进制数所代表的字符第21页/共45页第二十一页,共46页。例2.5 转义字符的使用(shyng)main() printf(“ ab ct derftgn); printf(“htibbj kn);运行结果(ji gu):屏幕显示:f gde h j k打印机输出:fab c gde h jik 字符变量(binling)定义形式 char c1,c2

18、;赋值 c1=a;c2=b;第22页/共45页第二十二页,共46页。字符(z f)数据在内存中的存储一个字符(z f)在内存中占一个字节字符(z f)数据在内存中以ASCII码存储例2.6 向字符变量(binling)赋以整数main() char c1,c2; c1=97;c2=98; printf(”%c %cn”,c1,c2); printf(”%d %dn”,c1,c2);01100001a在内存中的存储01100010b在内存中的存储字符数据和整型数据存储形式相似,可以(ky)互相转换一个字符型数据既可以以字符形式输出,也可以以整数形式输出ASCII码字符输出ASCII码输出运行结果

19、:a b97 98c1=a;c2=b第23页/共45页第二十三页,共46页。例2.7 大小写字母的转换(zhunhun)main() char c1,c2; c1=a;c2=b; c1=c1-32; c2=c2-32; printf(%c %cn,c1,c2);运行(ynxng)结果:A B字符数据(shj)与整型数据(shj)可以互相赋值 int i;char c; i=a;c=97;字符变量中的最高位为符号位注第24页/共45页第二十四页,共46页。v字符常量(chngling)与字符串常量(chngling)不同&字符串常量&定义:用双引号(“”)括起来(q li)的字符序列&存储:每个

20、字符串尾自动加一个 0 作为字符串结束标志h e l l o 0例 字符串“hello”在内存中a a 0例 a“a”例: char ch; ch=“A”; 例: char ch; ch=A; 如 “how do you do”,“china”,”a”第25页/共45页第二十五页,共46页。ANSI标准(biozhn)定义的数据类型类型 符号关键字数的表示范围所占位数整型字符(z f)型实型有无(signed)int16-3276832767(signed)short16-3276832767(signed)long32-2147483648214748364716unsigned int06

21、55353204294967295unsigned longunsigned short16065535有float3210-371038有double6410-30710308有char8-128127无unsigned char80255第26页/共45页第二十六页,共46页。 2.6 变量赋初值 定义变量的同时使变量初始化 如:int a=3;float f=3.56;char c=a; 也可部分(b fen)赋初值 如:int a,b,c=3; 对几个变量赋初值,可写成 int a=3,b=3,c=3; 不能写成 int a=b=c=3;int a=3;int a;a=3;int a,

22、b,c=5;int a,b,c;c=5;第27页/共45页第二十七页,共46页。doublefloatlongunsignedintchar,short低高说明:必定的转换运算对象类型不同时转换 只表示转换方向例 char ch; int i; float f; double d;ch/i + f*d - (f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble10+a +i*f - d/e例 int i; float f; double d; long e;2.7各类数值

23、型数据间的混合(hnh)运算第28页/共45页第二十八页,共46页。 2.8 算术(sunsh)运算符和算术(sunsh)表达式C运算符算术运算符:+ - * / % + -关系运算符: = !=逻辑运算符:! & |位运算符 : | &赋值运算符:= 及其扩展赋值运算符条件运算符:?:逗号运算符:,指针运算符:* &求字节数 :sizeof强制类型转换:(类型)分量运算符:. -下标运算符:其它 :( ) -第29页/共45页第二十九页,共46页。 算术运算符和表达式 基本(jbn)算术运算符: + - * / % 说明: 两整数相除,结果为整数 采取“向零取整”的方法 %要求两侧均为整型数

24、据例 5/2 = 5/2.0 =例 5%2 = -5%2 = 1%10 = 5%1 = 5.5%2例 5/2 = 2 5/2.0 =2.5例 5%2 = 1 -5%2 = -1 1%10 = 1 5%1 = 0 5.5%2 ()第30页/共45页第三十页,共46页。 算术表达式和运算符的优先级与结合性 C算术表达式:用算术运算符和括号将运算对象连接起来的、符合(fh)C语法规则的式子 结合方向为“自左至右”例 a*b/c-1.5+a ab*c/1.5-a+强制类型转换运算符可以将一个(y )表达式转换成所需类型形式 (类型名)(表达式) 类型名与表达式都应用括号括起来例(double)a (i

25、nt)(x+y)说明:强制类型转换时,得到(d do)一个所需类型 的中间变量,原变量的类型未发生变化例2.8 强制类型转换main() float x; int I; x=3.6; i=(int) x; printf(”x=%f,i= %dn”,x,i);运行结果:x=3.600000,i=3第31页/共45页第三十一页,共46页。 自增、自减运算符+ - 作用:使变量值加1或减1 种类: 前置 +i, -i (先执行(zhxng)i+1或i-1,再使用i值) 后置 i+,i- (先使用i值,再执行(zhxng)i+1或i-1)例 j=3; k=+j; j=3; k=j+; j=3; pri

26、ntf(“%d”,+j); j=3; printf(“%d”,j+); a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+)*b; /k=4,j=4/k=3,j=4/4/3/c=20,a=4/c=15,a=4第32页/共45页第三十二页,共46页。v自增、自减运算符+ -v作用:使变量值加1或减1v种类:v前置 +i, -i (先执行(zhxng)i+1或i-1,再使用i值)v后置 i+,i- (先使用i值,再执行(zhxng)i+1或i-1)l说明:l+ - 不能用于常量和表达式,如5+,(a+b)+l+ -结合(jih)方向: 自右向左l优先级:- + - -* / % -+

27、-l 例 -i+ -(i+) i=3; printf(“%d”,-i+); /-3 例 -i+ i=3; printf(“%d”,-i+); 第33页/共45页第三十三页,共46页。v表达式使用中的问题说明v注意编译系统(xtng)的调用顺序v例设i=3;求(i+)+(i+) +(i+)v 有的系统(xtng)值为9,有的为12vturboc系统(xtng)中得到9v(+i)+(+i) +(+i)l运算符的组成(z chn)l 自左至右尽可能多的将若干个字符组成(z chn)一个运算符l实参的求值顺序 l printf(“%d,%d”,i,i+);(i的值为3)l 有的系统值为3,3有的为4,

28、3l turboc系统中得到4,3l 第34页/共45页第三十四页,共46页。 赋值运算符和表达式 赋值运算符 符号: = 格式(g shi): 变量标识符=表达式 作用:将一个数据(常量或表达式)赋给一个变量v类型转换v实型数据赋给整型变量时,舍弃实数的小数部分v int i;i=3.56;i的值为3,以整数形式存储v将整型数据赋给单、双精度变量时,数值不变,补足有效数字(yu xio sh z),以浮点数形式存储到变量中。v float f;f=23;转换成23.00000存储v double f;f=23;转换成23.00000000000000存储v注意:单、双精度变量的有效数字(yu

29、 xio sh z)的位数第35页/共45页第三十五页,共46页。v类型转换v将一个double数据(shj)赋给float变量时,截取其前面7位有效数字,存放到存储单元中。v 注意:数值范围不能溢出v将一个float数据(shj)赋给double变量时,数值不变,有效位数扩展到16位,以64位存储。v字符型数据(shj)赋给整型变量v字符为无符号量时,将字符的8位放到整型变量的低8位,高8位补零。v若为有符号字符,最高位为零,则整型变量的高8位补零11 1 11 1 10c=37601 1 00 0 0 0 1 1 1 1 10 0 0第36页/共45页第三十六页,共46页。v类型转换v若字

30、符最高位为1,则高八位(b wi)全部补1。v 注意:目的是使数值保持不变v将一个int、short、long数据赋给char变量时,只将其低8位原封不动送到char型变量。11 1 11 1 10i=28911 1 01 1 1 1 1 1 1 1 11 1 100 0 10 0 0 1 0 0 1 0 00 0 000 0 00 1 01c=376第37页/共45页第三十七页,共46页。v类型转换v将int型数据赋给long变量时,进行符号扩展,将整型数的16位送到long型低16位中,如果int为正值,则long高16位补零,如果int为负值,则高16位补1。v将一个long数据赋给in

31、t变量时,将其低16位原封不动送到整型变量。v将unsigned int型数据赋给long型变量时,高位补零v将一个unsigned类型数据赋给一个占字节数相同的整型变量,将unsigned型变量的内容(nirng)原样送到非unsigned变量中。若为有符号字符,最高位为零,则整型变量的高8位补零。v 注意:有可能出现数据错误00 0 00 0 0 0 0 0 0 0 10 0 000 1 00 0 0 0 0 0 0 0 00 0 000 0 00 0 0 0 0 0 0 0 10 0 0第38页/共45页第三十八页,共46页。v类型转换vunsigned int a=65535;vint

32、 b;vb=a;v注意:根据补码知识,b的值为-1。v将非unsigned型数据赋给长度相同(xin tn)的unsigned型变量,也是原样照赋。a11 1 11 1 1111 1 11 1 11例2.9 有符号数据(shj)传送给无符号变量 main() unsigned a; int b=-1; a=b; printf(“%u”,a); 运行(ynxng)结果:6553511 1 11 1 1111 1 11 1 11b不同类型的整型数据间的赋值:按存储单元中的存储形式直接传送第39页/共45页第三十九页,共46页。 复合的赋值运算符 在“=”前加上其他(qt)运算符,可构成复合的运算符

33、 a+=3 等价于 a=a+3 x*=y+8 等价于 x=x*(y+8) x%=3 等价于 x=x%3 为便于记忆,可以这样理解 a+=b (a为变量,b为表达式) a+=b (将有下划线的移到“=”右侧) a=a+b (在“=”左侧补上变量名a) 10种复合赋值运算符 +=,-=,*=,/=,%=,=,&=,=,|=第40页/共45页第四十页,共46页。 赋值表达式 由赋值运算符将一个(y )变量和一个(y )表达式连接起来的式子 形式 变量赋值运算符表达式 求解过程 将赋值符右侧的表达式的值赋给左侧的变量 v说明:v结合方向:自右向左v左侧(zu c)必须是变量,不能是常量或表达式例 3=

34、x-2*y; a+b=3;l 赋值表达式的值与变量值相等(xingdng),且可嵌套例: a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2)l 赋值表达式也可以包含复合的赋值运算符例: a=12; a+=a-=a*a例: int a=2; a%=4-1; a+=a*=a-=a*=3; /a=-264 等价于a=a+(a=a-(a*a)/a=0 等价于a=a+(a=a*(a=a-(a=a*3)第41页/共45页第四十一页,共46页。 逗号运算符和表达式 形式:表达式1,表达式2,表达式n 结合(jih)性:从左向右 求值顺序:表达式1,表

35、达式2,表达式n 逗号表达式的值:等于表达式n的值 用途:常用于循环for语句中例 a=3*5,a*4 a=3*5,a*4,a+5例 x=(a=3,6*3) x=a=3,6*a例 a=1;b=2;c=3; printf(“%d,%d,%d”,a,b,c); printf(“%d,%d,%d”,(a,b,c),b,c); /a=15,表达式值60/a=15,表达式值20/赋值表达式,表达式值18,x=18/逗号(duho)表达式,表达式值18,x=3/1,2,3/3,2,3第42页/共45页第四十二页,共46页。逗号(duho)运算符和表达式形式:表达式1,表达式2,表达式n结合性:从左向右求值

36、顺序:表达式1,表达式2,表达式n逗号(duho)表达式的值:等于表达式n的值用途:常用于循环for语句中例:main() int x,y=7; float z=4; x=(y=y+6,y/z); printf(x=%dn,x);运行(ynxng)结果:x=3第43页/共45页第四十三页,共46页。 main()char a=176,b=219;printf(%c%c%c%c%cn,b,a,a,a,b);printf(%c%c%c%c%cn,a,b,a,b,a);printf(%c%c%c%c%cn,a,a,b,a,a);printf(%c%c%c%c%cn,a,b,a,b,a);printf

37、(%c%c%c%c%cn,b,a,a,a,b); 第44页/共45页第四十四页,共46页。感谢您的欣赏(xnshng)!第45页/共45页第四十五页,共46页。NoImage内容(nirng)总结2.2 常量与变量。printf(“total=%d”,total)。变量名尽量用小写,符号常量用大写。M.D.John。变量的使用应“先定义,后使用”。如果a,b为两个实型变量,则a%b是错误(cuw)的。由数字和小数点组成(必须有小数点)。字母e之前必须有数字,e后面的指数必须为整数。c1=a。c2=b。c1=c1-32。c2=c2-32。2.8 算术运算符和算术表达式。两整数相除,结果为整数。ab*c/1.5-a+第四十六页,共46页。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!