第3章最简单的C程序设计.ppt
《第3章最简单的C程序设计.ppt》由会员分享,可在线阅读,更多相关《第3章最简单的C程序设计.ppt(91页珍藏版)》请在三一办公上搜索。
1、1,第3章 最简单的C程序设计,数据的表现形式及其运算C语句数据的输入输出顺序程序设计举例,2,3.1 数据的表现形式及其运算,常量和变量数据类型整型数据字符型数据浮点型数据运算符和表达式,3,3.1.1 常量和变量,1、标识符定义:用来标识变量、常量、函数等的字符序列组成:只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线大小写敏感不能使用关键字长度:最长32个字符命名原则:见名知意不宜混淆 如l与I,o与0,例:判断下列标识符号合法性sum Sum M.D.John day Date 3days student_name#33 lotus_1_2_3 char ab _above
2、$123,M.D.John,3days,#33,char,$123,ab,4,3.1.1 常量和变量,2、常量定义:程序运行时其值不能改变的量(即常数)分类:直接常量和符号常量直接常量:整型常量 实型常量 字符常量 字符串常量符号常量:用标识符代表常量定义格式:#define 符号常量 常量使用符号常量的好处:1)见名知意 2)一改全改注意:1.使用之前必须先定义;2.符号常量名用大写,变量用小写;3.符号常量的值在其作用域内不能改变;4.凡是以“#”开头的都为预处理命令,不是语句,故后面无符号。,如#define PRICE 30,例 符号常量举例#define PRICE 30#inclu
3、de int main()int num,total;num=10;total=num*PRICE;printf(total=%d,total);return 0;,5,3.1.1 常量和变量,3、变量定义:程序运行时其值可以改变的量分类:整型变量、实型变量、字符型变量变量定义的一般格式:数据类型 变量1,变量2,变量n;,例:int a,b,c;float data;,决定分配字节数和数的表示范围,合法标识符,6,变量必须先定义,后使用定义变量时指定该变量的名字和类型大小写字母被认为是两个不同的字符。一般,变量名用小写字母表示。变量名也应当“见名知意”,以增加程序的可读性。变量名和变量值是两
4、个不同的概念变量名实际上是以一个名字代表的一个存储地址。从变量中取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据,注意:,7,3.1.1 常量和变量,4、常变量C99允许使用常变量,如:const int a=3;表示a被定义为一个整形变量,指定其值为3,而且在变量存在期间其值不能改变。常变量与常量的异同:常变量具有变量的基本属性,有类型,占存储单元,只是不许改变其值。可以说,常变量是有名字的不变量,而常量是没有名字的不变量。有名字便于在程序中被引用。常变量与符号常量的不同?,8,PI和pi都代表3.14159,在程序中都能使用。定义符号常量用#define预编译指令,它只是
5、用符号常量代表了一个字符串,在预编译时仅是进行字符替换,在预编译后,符号常量就不存在了(全置换成3.14159了),对符号常量的名字是不分配存储单元的。而常变量是要占存储单元,有变量值,只是该值不改变而已。从使用角度来看,常变量具备了符号变量的优点,且使用更加方便。,常变量与符号常量的不同,#define PI 3.14159,const float pi=3.14159,9,3.1.2 数据类型,所谓类型,就是对数据分配存储单元的安排,包括存储单元的长度(占多少字节)以及数据的存储形式。不同的类型分配不同的长度和存储形式。,10,C语言允许使用的数据类型:,3.1.2 数据类型,基本类型整型
6、类型基本整型短整型长整型双长整型字符型布尔型,浮点类型单精度浮点型双精度浮点型复数浮点型,11,C语言允许使用的数据类型:,3.1.2 数据类型,基本类型枚举类型空类型派生类型 指针类型 数组类型 结构体类型 共用体类型 函数类型,算术类型,纯量类型,12,3.1.3 整型数据,1、整型常量的3种形式十进制整数:由数字09和正负号表示.如 123,-456,0八进制整数:由数字0开头,后跟数字07表示.如0123,011十六进制整数:由0 x开头,后跟09,af,AF表示.如0 x123,0 xff,问题:0123=()100 x123=()100Xff=()10,13,整型数据在内存中是以补
7、码表示的。,整数类型存储方式,14,例如:求-10的补码表示(假设按16位存储)。,-10的原码,1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0,除符号位外各位取反,1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1,末位加1,1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0,则得到-10的二进制补码的表示。,15,3.1.3 整型数据,2、整型变量的分类基本整型(int型):占2个或4个字节,VC+6.0中占4个字节短整型(short int):VC+6.0中占2个字节长整型(long int):VC+6.0中占4个字节双长整型(long long
8、int):C99新增的,一般分配8个字节。,c语言没有具体规定各类数据所占内存字节数,但要求长度必须:短整型 基本整型长整型双长整型,16,3.1.3 整型数据,3、整型变量的符号属性可以将变量定义为“无符号”类型,则上述4类可以扩充为8类。整型变量的值的范围包括负数到正数。(p45 表3.2),有符号基本整型 signed int;无符号基本整型 unsigned int;有符号短整型 signed short int;无符号短整型 unsigned short int;有符号长整型 signed long int;无符号长整型 unsigned long int有符号双长整型 signed
9、 long long int;无符号双长整型 unsigned long long int,17,3.1.4 字符型数据,1、字符型常量单引号括起来的一个单字符。如:A及用“”转义词开头的若干种特殊字符常量,有n,t,b,”,f,r,ddd 3位八进制数代表的字符,xhh 2位16进制数代表的字符(见P40表3.1)。例:101,代表ASCII码值65的字符A,x41也代表ASCII码值65的字符A。而0表示空操作,字符串结束符。,18,3.1.4 字符型数据,2、字符变量用来存放一个字符常量,用char来定义定义形式:char c1,c2;c1=a;c2=A;事实上,字符在内存中以ASCII
10、码码值存放 a97,A65(小写比大写码值大),19,字符数据在内存中以ASCII码存储(整数以二进制数形式存放)。字符存放只占一个字节。C语言中字符数据和整型数据之间可通用,字符数据既可以字符形式输出,也可以整数形式输出。例 int main()char c1,c2;c1=97;c2=98;printf(“%c,%cn”,c1,c2);return 0;输出a,b 字符数据可以进行算术运算,字符数据和整型数据可以互相赋值。,3.1.4 字符型数据,20,例 int main()char c1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;printf(“%c,%c”,c1,c
11、2);return 0;输出A,B 字符数据和整型数据可以互相赋值。,3.1.4 字符型数据,21,3.1.4 字符型数据,字符变量也可以用signed 和unsigned修饰符来表示符号属性。若在定义变量时没加修饰符,C标准未对此进规定,由各编译系统自己决定。,说明:在使用有符号字符型变量时,允许存储的值为-128127,但字符的代码不可能为负值,所以在存储字符时实际上只用到0127这一部分,其第一位都是0。(P49附注1),22,输出:-2,例#include int main()char c=376;printf(“%d”,c);return 0;,在VC环境下编译运行下面程序,23,字
12、符常量与字符串常量不同,例:char ch;ch=“A”;,字符串,字符串常量 定义:用一对双引号括起来的字符序列。存储:每个字符串尾自动加一个 0 作为字符串结束标志。,24,思考?,1、字符串常量How do you do.和Good morning.的长度分别是多少?,2、字符串C:msdosv6.22和I say:Goodbye!在C语言中的字符串常量形式如何表示?,3、字符串CHINA在内存中的实际存储形式是怎样的?占用多少个字节的内存空间?,14和13,C:msdosv6.22和I say:Goodbye!,占用字节而非字节内存空间,空格是字符,如果反斜杠和双引号作为字符串中的有效
13、字符,则必须使用转义字符。,25,注意:1、a是字符,a是字符串。2、不能把一个字符串赋给一个字符变量。如c=a、c=Hello!都是错误的。3、C语言中没有字符串变量,可以用字符数组来表示。,26,总结:字符与字符串的区别有哪些?,定界符不同:字符常量使用单引号,而字符串常量使用双引号;长度不同:字符常量的长度固定为1,而字符串常量的长度,可以是0,也可以是某个整数;存储要求不同:字符常量存储的是字符的ASCII码值,而字符串常量,除了要存储有效的字符外,还要存储一个结束标志0。,27,3.1.5 浮点型数据(实型数据),1、实型常量 表示形式:(1)十进制小数形式:0.12 35.0-34
14、.679 0.0 0.注意:小数点不能省略,不能只有一个小数点(2)指数形式:12.3e3,123E2,1.23e4,e-5,1.2E-3.5 注意:1.E(指数符号)不分大小写;2.E前必须有数字,且后面指数为整数;3.E后正号可不写,负号必须写,28,3.1.5 浮点型数据(实型数据),2、实型变量(见P50表3.4)float型(单精度浮点型)编译系统为float型变量分配4个字节 67位有效数字 double型(双精度浮点型)编译系统为double型变量分配8个字节 15位有效数字 C编译系统把浮点型常量都按双精度处理 long double(长双精度)型 编译系统为long doub
15、le型变量分配8个或16个字节 实数在计算机中是以指数的形式存放的。,29,3.1.6 运算符和表达式,C运算符:,算术运算符+-*/%关系运算符=|&赋值运算符=+=-=*=/=%=条件运算符?:逗号运算符,指针运算符*&求字节数运算符 sizeof 强制类型转换运算符(类型)特殊运算符:有括号(),下标,成员(,.)等几种,30,3.1.6 运算符和表达式,1、基本的算术运算符+:加法或正值运算符-:减法或负值运算符*:乘法运算符/:除法运算符%:求余运算符 运算对象:常量、变量、函数等 运算级别:低*/%高,31,3.1.6 运算符和表达式,说明:两个整数相除,结果为整数;若有一个数为实
16、数,则结果为double型。如5/3的结果值为,舍去小数部分 如果除数或被除数中有一个为负值,舍入方向不固定。例如,-5/3,有的系统中得到的结果为-1,在有的系统中则得到结果为-2 VC+采取“向零取整”的方法 如5/3=1,-5/3=-1,取整后向零靠拢%两边为整数,不能为实数。结果的符号与被除数的符号相同(正负由被除数决定)如:15%43 15%43-15%4=-3,32,3.1.6 运算符和表达式,2、算术表达式和运算符的优先级与结合性 算术表达式:用算术运算符和括号将运算对象(也称操作数,如常量、变量、函数等)连接起来、符合C语法规则的式子。如:a*b/c-1.5+a 运算符的优先级
17、:先乘除、后加减;先括号。运算符的结合性:运算对象两侧的运算符优先级相同时,运算符的结合方向(左、右)。(1)左结合性:结合方向为从左至右(先左后右,简称左结合)。算术运算符为左结合。例:a-b+c(2)右结合性:结合方向为从右至左(先右后左,简称右结合)。赋值运算符=为右结合。例:a=b+c,33,(1)+、-、*、/运算的两个数中有一个数为float或double型,结果是double型。系统将float型数据都先转换为double型,然后进行运算。(2)如果int型与float或double型数据进行运算,先把int型和float型数据转换为double型,然后进行运算,结果是doubl
18、e型。(3)字符型数据与整型数据进行运算,就是把字符的ASCII代码与整型数据进行运算。,不同类型数据间的混合运算,以上类型转换是由系统自动进行的。,34,3.1.6 运算符和表达式,3、强制类型转换运算符 有时为了编程需要,将输出数据的类型强行转换成所需类型。格式:(类型名)(表达式)例:(int)(x+y)(int)x+y(double)(3/2)(int)3.6 说明:强制转换得到所需类型的中间变量,原变量类型不变。强制类型转换运算符优先于,*,/运算。,35,#include int main()float x;int i;x=3.6;i=(int)x;printf(x=%f,i=%d
19、,x,i);return 0;,思考:以下程序的输出结果是什么?,x=3.600000,i=3,程序运行结果:,结论:较高类型向较低类型转换时可能发生精度损失问题,36,举例:已知三角形的边长a、b、c,求三角形周长的一半。,#include int main()float a,b,c,s;a=3;b=4;c=5;s=1/2*(a+b+c);printf(s=%8.2f,s);return 0;,s=0.00,程序运行结果:,?,s=6.00,程序运行结果:,改为:1.0/2(1/2.0)或(float)1/2(1/(float)2),37,3.1.6 运算符和表达式,4、自增、自减运算符 作
20、用:使变量的值增1或减1 格式:前置+i,-i(先执行i+1或i-1,再使用i值)后置 i+,i-(先使用i值,再执行i+1或i-1),例 j=3;k=+j;j=3;k=j+;j=3;printf(“%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,38,3.1.6 运算符和表达式,4、自增、自减运算符 作用:使变量的值增1或减1 格式:前置+i,-i(先执行i+1或i-1,再使用i值)后置 i+,i-(先使用i值,再执行i+1或i
21、-1)说明:+-不能用于常量和表达式,如5+,(a+b)+-结合方向:自右向左 优先级:-+-*/%-+-,例-i+-(i+)i=3;printf(%d,-i+);/-3,例-i+i=3;printf(%d,-i+);,39,书写表达式注意事项 1)乘号不能省。如:ab应写成 a*b 2)表达式中只有圆括号可以嵌套使用,但左、右括号必须配对。3)避免两个运算符并置。如a*b/-c应写为:a*b/(-c)4)由于两个整数相除结果仍为整数,所以要注意转换。如:5/12应该写成5.0/12或5/12.0 5)三角函数的自变量使用弧度。如SIN50 应写成sin(50*3.14/180),40,例(参
22、照P384附录F):(1)3x2+4xysin56o-|x-y|e2.3 的表达式为:3*x*x+4*x*y*sin(56*3.14/180)-fabs(x-y)*exp(2.3)(2)log10(x+1)表示为log10(x+1),41,3.1.6 运算符和表达式,5、赋值运算符和赋值表达式 赋值运算符:符号:=格式:变量名=表达式 作用:将表达式的值赋给变量。(常量、变量是表达式的特例)如:a=5;x=(a+b)/3;类型转换:当“=”左右类型不一致,但都是数值型或字符型时,在赋值时由系统自动进行类型转换,赋值号右边的数值类型转换成左边变量的数值类型。,42,#include int ma
23、in()int i;float f;i=5.34;f=23;printf(“%d,%fn”,i,f);return 0;,5,23.000000,程序运行结果:,5、赋值运算符和赋值表达式,类型转换:(1)将实型数据赋给整型变量时,取整,舍弃小数部分。(2)将整型数据赋给实型变量时,数值不变,但以浮点数形式存储到变量中。(小数点后6位小数),43,#include int main()float f;double d=123.456789e100;f=d;printf(“%f”,f);return 0;,Floating point error:overflow.,程序运行结果:,5、赋值运算
24、符和赋值表达式,类型转换:(3)将一个double型数据赋给float变量时,截取前面67位有效数字,存放在float变量的存储单元(4个字节)中。注意数值范围不能溢出。将一个float型数据赋给double变量时,数值不变,有效位数扩展到15位,在内存以8个字节存储。,44,5、赋值运算符和赋值表达式,类型转换:(4)将字符型数据赋给整型变量时,有两种处理情况:,若所用系统把字符处理为无符号量(即unsigned char),则将高24位补0。例:char c=376;int i;i=c;i以整型输出为254,1 1 1 1 1 1 1 0,0 0 0 0 0 0 0 0 0 0 0 0 0
25、 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0,45,5、赋值运算符和赋值表达式,类型转换:(4)将字符型数据赋给整型变量时,有两种处理情况:,若所用系统把字符处理为带符号量(即signed char),若字符最高位为0,则将高24位补0;若字符最高位为1,则将高24位补1。例:char c=376;int i;i=c;i以整型输出为-2,1 1 1 1 1 1 1 0,1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0,46,#include int main()int i=289;ch
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简单 程序设计
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5904046.html