《C语言PPT课件-数据类型、运算符、表达式.ppt》由会员分享,可在线阅读,更多相关《C语言PPT课件-数据类型、运算符、表达式.ppt(101页珍藏版)》请在三一办公上搜索。
1、,数据类型、运算符、表达式,共 51 页 第 2 页,说明与定义 数据类型 基本语句 表达式,本 章 要 点,共 51 页 第 3 页,main()标志 花括号 int a=5,b=6,S;说明语句 s=a*b;公式(赋值语句)printf(“s=%d”,s);打印语句 只要掌握三条语句就可以编程了,基本语句,共 51 页 第 4 页,1、说明语句2、赋值语句3、printf(“s=%d”,s);打印语句(输出语句)今天我们要讲的是这三条语句的使用。,基本语句,共 51 页 第 5 页,1、说明语句,基本语句,C程序的第一条语句:说明语句,共 51 页 第 6 页,main()int a=5,
2、b=6,S;说明语句 s=a*b;printf(“s=%d”,s);花括号内第一条语句必须是说明语句!,1、说明语句 int a=5,b=6,S;,共 51 页 第 7 页,说明语句是程序内第条语句。,说明语句是作什么用的?C语言规定,必须标明所有已知量和未知量的数据类型.例如,a,b,c是整数,用符号”int”如下标明:int a=5,b=6,c;,共 51 页 第 8 页,3.1 数据类型,数据的基本类型 我们前面已讲过C 的数据有三种基本的类型1、整型(int)2、实型(float)3、字符型(char),共 51 页 第 9 页,3.1 说明语句,因此就有三种基本的说明语句1、int
3、a=5,b=6,c;表示a,b,c 为整数2、float x=1.2,y=2.6,z;表示x,y z为实数,共 51 页 第 10 页,3.1 数据类型,3、字符型:char c1=a,c2=N;表示c1,c2为字符。注意:C1、C2的值仅是一个字母,是用单引号 括起来的。不能超出1个。,共 51 页 第 11 页,3.1 数据类型,注意!同一类型的量用逗号,格开。例:char c1=a,c2=N;,共 51 页 第 12 页,3.1 字符型的应用,例1、设S为百分制分数,Y等级分数。字母P表示及格 N表示不及格。即 如果 60=S Y=P 否则 Y=N 这里Y的值是字符。称字符型。,共 51
4、 页 第 13 页,3.1 程序如下,main()int s=79;char y;if(60=s)y=P;else y=N;printf(“y=%c”,y);结果:Y=P,共 51 页 第 14 页,3-2 变量 a,b,s.,补充一个概念:变量main()int a=5,b=6,s;s=a*b;printf(“s=%d”,s);在程序中,已知量a,b,未知量s我们都称这为变量。,共 51 页 第 15 页,3-2 变量,变量的值允许改变,指的是在程序中,根据需要,变量的值可以改变它的值。例子:分别计算a=5,b=6和a=7,b=8两个长方形的面积。,共 51 页 第 16 页,程序如下:,m
5、ain()int a=5,b=6,s;a,b第1次给的值 s=a*b;计算第一个面积s printf(“s1=%d”,s);a=7,b=8;a,b第2次给的值 s=a*b;计算第二个面积sprintf(“s2=%d”,s);结果:s1=30 s2=56,共 51 页 第 17 页,2、赋值语句,基本语句,C程序的第二条语句:赋值语句,共 51 页 第 18 页,2、赋值语句,用一个“=”号连接的式子,例:a=5;b=20;s=a*b;v=a+b;,共 51 页 第 19 页,赋值语句,注意“=”号的意义!,在 C 程序中,“=”号表示给值或赋值:a=5;b=6;表示将数字 5 赋值给变量 a.
6、数字 6 赋值给变量 b.”=“叫做赋值号.,共 51 页 第 20 页,赋值语句,注意“=”号的左边只能是变量!,所以赋值号“=”的左边只能是变量 变量=值(或表达式);,共 51 页 第 21 页,赋值语句,k=123;/*将整数123赋给变量K*/c1=A/*将字符A赋给变量C1*/a=123.3;/*将实数123.23赋给变量a*/b=a+k+6;/*表达式的值赋给变量b*/,返回,共 51 页 第 22 页,2-1-3 字 符 型 数 据,实例、向字符变量赋值main()char c1,c2;/*说明c1,c2为字符变量*/c1=a;/*c1=“a”*/c2=b;/*c2=“b”*/
7、printf(“%c%c/n”,c1,c2);输出结果:a b,返回,共 51 页 第 23 页,2-3 赋值语句,注意:“=”左边必须是变量名。如:5=2+3 是错误的。b+2=6*2 是错误的。应改为:a=2+3;b=6*2-2;,返回,共 51 页 第 24 页,2-3 赋值语句,注意:在程序中赋值语句的顺序。已知量必须先赋值。否则结果不可预测例如:main()int a,b,s;a=2;b=3;s=a*b;printf(“%d”,s);,返回,共 51 页 第 25 页,2-3 赋值语句,如果顺序变成下面。结果不可预测例如:main()int a,b,s;s=a*b;a=2;b=3;p
8、rintf(“%d”,s);,返回,共 51 页 第 26 页,3、打印(输出)语句,基本语句,C程序的第三条语句:输出语句,共 51 页 第 27 页,4-2 数据的输出,数据的输出 我们前面讲过的语句printf()在C里实际称为输出函数。它的格式为Printf(“控制格式“,变量表),共 51 页 第 28 页,4-2 数据的输入与输出,控制格式用来标明变量的类型 d 整数输出 f 实数输出 c 字符输出 s 字符串输出,共 51 页 第 29 页,4-2 数据的输入与输出,例:int a=3;float b=3.33;char c1=p;printf(“%d”,a);printf(“%
9、f”,b);printf(“%c”,c1);,共 51 页 第 30 页,大家注意:1、一个变量只能对应一个格式例:int a=5;char c1=A;Printf(“%d,%c”,a,c1);而 printf(“%d”,a,c1);是错的,共 51 页 第 31 页,注意!,2、变量类型和打印格式要相符。例:int a=5;a是整型 float b=2.4;b是实型 Printf(“%d,%f”,a,b);而 printf(“%f,%d”,a,b);是错的.,共 51 页 第 32 页,注意!,3、字符变量打印可以用两种格式:c%打印出字符本身 d%打印出字符的代码。例:char c1=a,
10、c2=a;Printf(“%c,%d”,c1,c2);结果是“a,97,共 51 页 第 33 页,如何美化输出的结果?,1、用空格可以分开结果。例:int a=15,b=26;printf(“%d%d”,a,b);结果是:1526 15和16连在一起。如何把两个数字分开成:15 26,共 51 页 第 34 页,如何美化输出的结果?,只要把打印语句改成:printf(“%d%d”,a,b);结果是:15 26如何用逗号分两个数字?15,26,共 51 页 第 35 页,如何美化输出的结果?,2、用逗号可以格开结果。例:int a=15,b=26;printf(“%d,%d”,a,b);结果是
11、:15,26,共 51 页 第 36 页,如何美化输出的结果?,问题?15,26如果屏幕出现的仅仅是两个数字。我们就不清楚哪个值是a的,哪个是b的值。能用下面的方式打印就清楚了:a=15,b=26,共 51 页 第 37 页,如何美化输出的结果?,3、可以在控制符前面加上标志。例:int a=15,b=26;printf(“a=%d,b=%d”,a,b);结果是:a=15,b=26,共 51 页 第 38 页,如何美化输出的结果?,4、用t可以分开结果。例:int a=15,b=26;printf(“%dt%d”,a,b);结果是:15 26一个t的宽度是10个空格。,共 51 页 第 39
12、页,一个重要的打印符“n”,5、用n可以换行打印结果。例:int a=15,b=26;printf(“%dn%d”,a,b);结果是:15 26b在第2行打印。换行符是打印格式经常要用的。,共 51 页 第 40 页,Printf(“n the resule is“);,6、可以在双引号内加上任何字符例:输出两个字母A,B 和一串字符.Char c1=A,c2=B;Printf(“n the resule is“);Printf(“c1=%c,c2=%c”,c1,c2);Printf(“*”);,共 51 页 第 41 页,一个简单程序的说明,#include“stdio.h”/*预处理命令*
13、/main()/*主函数*/float x,y,s;/*说明x,y,s为实变量*/int n,p;/*说明n,p为整型变量*/x=3.2+2.5;/*赋值语句,计算变量x的值*/p=12+24;/*赋值语句,计算变量p的值*/x=4;/*赋值语句,改变变量X的值*/printf(”%f,p=%d”,x,p);/*输出变量x和变量p的 值*/,共 51 页 第 42 页,变量的命名,变量的命名要符合下列两个规定:1、变量名必须以字母或下划线开头,后面可以跟若干个字母、数字或下划线。year,Day,x12,_cws,_chang,a2_1,共 51 页 第 43 页,变量的命名,2、名字长度不超
14、过8个字符。变量的命名最好能有一定的含义。例:year,Day,min,max,month,共 51 页 第 44 页,变量的命名,非法的变量名:x+y 有+号$123 有$号 3d 数字在前面 d.y,共 51 页 第 45 页,关键字 C语言中系统特殊定义的具有特定含义的标识符,不允许用户作为自定义标识符使用。auto breakcase char constcontinue defaultdo double elseenum externfloat for gotoif intlong register returnshort signedsizeof static structswit
15、ch typedefunion unsigned voidvolatile while,系统保留的单词关键字,共 51 页 第 46 页,介绍一个新概念:标识符 指我们刚才讲的变量名以后讲的常量名、数组名、函数名等统称为标识符,标识符,共 51 页 第 47 页,标识符的名字与变量名字规则一样。由字母或下划线开头、由字母、数字或下划线组成的字母数字串。一般为具有特定意义的英文字符串。例如:a b try test31 string_1 str1 _file,1-4 C语言的特点-基本组成,共 51 页 第 48 页,变量赋初值,变量在说明同时赋值,称为赋初始值。例:int a=5,b=6;fl
16、oat x=1.2,y=2.6;char c1=t,c2=f;,共 51 页 第 49 页,2-3 变量赋初值,变量也可以先说明后,后赋值,只要在运算前给值就可以。例:int a,b;float x,y;a=5;b=6;x=1.2;y=2.6;,共 51 页 第 50 页,2-3 变 量 赋 初 值,注意,如果3个变量的值相等,不能写成:int a=b=c=3;只能是这样写:int a=3,b=3,c=3;但可以用在赋值语句写:int a,b,c;a=b=c=3;,返回,共 51 页 第 51 页,2-3-2 算术运算,一、算术运算符,运算符+加法运算 正值运算-减法运算 负值运算*乘法运算/
17、除法运算%求余运算 优先级:*/%同级(高),+-同级(低)结合性:相同优先级运算符进行运算时的次序 自左向右(标记为),共 51 页 第 52 页,/除号和%求余运算,C语法规定,两个整数相除,结果取整。,a=7/3;结果:2a=3/2;结果:1注意:a=1/2;结果是:0a=4/5;结果是:0分母比分子大,结果都是0。,共 51 页 第 53 页,/除号和%求余运算,例:main()int a=3,h=1;s;s=a*h/2;printf(“s=%d”,s);s的值是多少?为什么!,共 51 页 第 54 页,/除号和%求余运算,要避免结果为的情况,只要分子或分母有一个是实数就行main(
18、)int a=3,h=1;s;s=a*h/2.0;(或 s=a*h*1./2)printf(“s=%d”,s);s=1.5把1/2改成 1./2或1/2.就可以。,共 51 页 第 55 页,%求余运算,C语法规定,求余的两个数必须是整数。,Int a;a=7%3;结果:1a=6/2;结果:0注意:a=1%2;结果是:1a=4%5;结果是:4分母比分子大,结果都是分子。,共 51 页 第 56 页,3-3-1 整型常量的类型,1、整数的表示方式 在C语言中,整型常量可以用3种数制表示:十进制表示 如:123,+123,-123十六进制表示,以字母OX开头 如:ox80,oxA2,ox1B八进制
19、表示法,以数字0(零)开头 如:0123,0347(变量的说明格式:,共 51 页 第 57 页,3-3-1 整型常量的类型,根据计算的大小,整数分几个大小不同的范围 用int或short int来说明的整数,它的大小范围是:-32768-+32767在内存中,占用2个字节。,共 51 页 第 58 页,3-3-1 整型常量的类型,一般情况,我们计算的整数,它的范围在:-32768-+32767所以,用Int 说明就够了。,共 51 页 第 59 页,3-3-1 整型常量的类型,整型数据的溢出 每类整数都有上限和下限,超出上限的,称为上溢。超出下限的,称为下溢。例:int 的范围为(-3276
20、8-+32767)如果:int a,b,c,d;a=32768;/*上溢*/b=-32769;/*下溢*/,共 51 页 第 60 页,3-3-1 整型常量的类型,那么,同学们会问如果用到比32767大或比-32768小 的整数,怎么办?可以用长整型定义,以long int 或long 表示。例:long int a=40000;long b=80000;,共 51 页 第 61 页,3-3-1 整型常量的类型,长整型 long int 取值范围-2147483648-+2147483647 此外还有:常量无符号型 unsigned 取值范围 0-65535 常量无符号长型unsigned l
21、ong 取值范围 0-4294967295在内存中,占用4个字节。,返回,共 51 页 第 62 页,3-3-1 整型常量的类型,例1:long a1,x=200l;或 long int a1,x=200L;定义了两个长整型变量。为了区别一般常量,在长整型常量后面加l或L。例如:都是long int型常量 10进制:-123L 0L 432l 8进制:010L 024L 0100L 16进制:0 x38L 0 x1000L 0XFFl x0a0000l,共 51 页 第 63 页,3-4-1 实型数据,实型(浮点型)变量 在C语言中,实数有两种表示:十进制表示 如:123.2,+12.3,-1
22、.23,共 51 页 第 64 页,3-4-1 实型数据,指数形式(科学记法),用字母e或E表示基数10。如:12.3 可记成 0.123e2-12.3 可记成-0.123e2 0.00123 可记成 0.123e-2,共 51 页 第 65 页,2-1实型数据,实例:10进制:1.0 1.+12.0-12.0 0.0 指数:1e3 1.8e-3-123e-6 等价于:1000 1.8*10-3-123*10-6 指数:-.1e-3.1E10 等价于:-0.1*10-3 0.1*10-10,返回,共 51 页 第 66 页,2-1 实型数据,使用指数形式要注意两点:(1)在符号e的前面必须要有
23、数字。如:e2,e-2,E02 都是错误的,应写成:1e2,1e-2,1E02(2)在符号e的后面必须是整数。如:3e0.5,1.2e0.3,3E2.4 都是错误的。,共 51 页 第 67 页,2-1-2 变量的说明,2-1、实型变量按要求的有效位分为:单精度和双精度两种。单精度的有效位为:6-7位。占4个字节其说明形式如下:float 变量表列例如:变量a,b是实变量,说明如下 float a;float b;或 float a,b;,共 51 页 第 68 页,2-1-2 变量的说明,双精度的有效位为:16-17位。其说明形式如下(占8个字节)doubel 变量表列例如:变量a,b是双精
24、度变量,说明如下 doubel a;doubel b;或 doubel a,b;,共 51 页 第 69 页,2-1-3 字 符 型 数 据,3-2 字符变量 字符型变量用来存放字符常量,故只能放一个字符。字符变量的定义:char c1,c2;char字符变量定义符,c1,c2字符变量。,返回,共 51 页 第 70 页,2-1-3 字 符 型 数 据,可以对字符量进行赋值。c1=a;c2=b;注意:字符变量只能存放一个字符,故c1=as;或c2=bbg;是错的。,返回,共 51 页 第 71 页,2-1 字 符 数 据,3-5-1 字符常量的值 字符常量的值是用单引号括起来的一个字符。如a,
25、b,d,?,¥注意:a和是不同的字符值。aa AB不是字符常量,返回,共 51 页 第 72 页,2-1 字 符 数 据,字符串变量 字符串变量是用双引号括起来的一个以上的字符。如“China”“C program”“123”注意:“a”是字符串 而a 是字符的值 区别在单、双引号,返回,共 51 页 第 73 页,2-1 字 符 数 据,3-5-3 转义字符c还允许用一种特殊形式的字符常量,就是以一个“”开头的字符序列,这是一种“控制字符”,也称为“转义字符”,意思是将反斜杠()后面的字符转换成另外的意义。,返回,共 51 页 第 74 页,2-2 转义符的功能,字符形式 功能 使用举例 0
26、 字符串结束标志 n 换行(ASCII码为10)printf(”n”);t 横向跳格 printf(”t”);b 退格 r 回车(ASCII码为13)f 走纸换页 字符(ASCII码为92)表示字符 单引号 表示字符”双引号”表示字符”ddd 用8进制表示字符 a=141 A=101 换行符 12 xhh 用16进制表示字符 a=x61 A=x41(举例c302)换行符 xa,返回,共 51 页 第 75 页,2-1宏定义和文件包含命令,文件包含指的是在程序中用到函数或某些功能,main前面事先指明的一些命令。例:我们如果用到三角函数或开方函数,必须在main()前面加上:#include“m
27、ath.h”表示包含数学库。,共 51 页 第 76 页,2.1 说明与定义程序说明,下面用一个简单的例子说明程序实例2:求 X=编程#include“math.h”/*数学库函数引用说明*/main()/*程序的名称*/int k;float x;k=16;x=sqrt(k);/*使用C的开方函数*/printf(“%f”,x);,共 51 页 第 77 页,2-1宏定义和文件包含命令,如果用到Putchar()或getchar()这两个输出输入函数时,必须在main()前面加上:#include“stdio.h”表示包含输出输入库。一般情况下不用写。,共 51 页 第 78 页,2-3-2
28、 各种类型的混合运算,在一个式子中,有整型和实型,如何运算?int a;float x;a=2.6+5;x=2.6+5;printf(“a=%d,b=%f”,a,x);结果是:a=8 7.6 7?x=8 7.6 7?,共 51 页 第 79 页,2-3-2 各种类型的混合运算,C语法规定,在一个式子中,有整型和实型运算,整数转换为实数 x=2.6+5;实际为:x=2.6+5.0;如果有字符运算,字符转换成SCII代码。,共 51 页 第 80 页,2-3-2 各种类型的混合运算,换规则如图:float double 高 long unsigned 低 int char,short,共 51 页
29、 第 81 页,2-3-2类型转换,C 语言允许在必要时强制转换类型 例如:int j=3,k=5;float a=1.3 b=2.3;k=(int)(a+b);/*将a+b的结果强制成整型,结果为3*/j=j/k;/*结果为 0*/a=(float)j/k;/*将j强制成实型3.0,结果为0.6*/,共 51 页 第 82 页,2-3-5 运算符-自增自减运算,自增自减运算符,运算符(单目)+自增 自减+和 为单目运算,只能作用于变量只能对int、char、long和指针变量进行运算,共 51 页 第 83 页,2-3-5 运算符-自增自减运算,自增自减运算符,功能:+x x=x+1 x x
30、=x1(前缀)前缀形式:先自增(自减)再引用例:int x=4,y=6,z;z=+x;结果 x=5,z=5;z=-y;结果 y=5,z=5;,共 51 页 第 84 页,2-3-5 运算符-自增自减运算,自增自减运算符,功能:x+x=x+1 x x=x1(后缀)后缀形式:先引用再自增(自减)例:int x=4,y=6,z;z=x+;结果 z=4,x=5;z=y-;结果 z=6,y=5;,共 51 页 第 85 页,运算符-自增自减运算,前缀与后缀的区别:y=+x;x=x+1;y=x;x先加1再赋值 y=x+;y=x;x=x+1;x先赋值再加1,共 51 页 第 86 页,运算符-自增自减运算实
31、例,实例(1)+i;i+;因为在表达式中没有其它运算,结果一样。(2)x=1;y=+x;结果:x=2,y=2 y=+x;x=x+1;y=x;在做赋值运算之前,x先加1,然后将x赋给y(3)x=1;y=x+;结果:x=2,y=1 y=x+;y=x;x=x+1;先将 x 赋值给 y,然后 x 再加1,共 51 页 第 87 页,x=3,z=3 x=3,y=6,z=3*6=18 x=3,y=6,z=2*6=12 x=3,y=6,z=3*5=15 x=3,y=6,z=2*5=10 x=4,z=4*4=16 注意,以下操作是错误的:x=+(i+j)+1;j=+(5+x);y=+x*+x;,运算符-自增自
32、减运算实例,实例 已知:int x=2,y=5,z;z=+x;z=+x*+y;z=x+*+y;z=+x*y+;z=x+*y+;z=+x*+x;,逻辑虽然正确,但实际编程中容易产生误解,应当避免,共 51 页 第 88 页,2-3-5 运算符-逗号运算,逗号运算符,运算符(,)一般形式为:表达式1,表达式2例1:x=(y=3,y+1);其顺序为:y=3;x=y+1;结果 x=4,共 51 页 第 89 页,2-3-5 运算符-逗号运算,逗号运算符,例2:y=10;x=(y=y-5,25/y);其顺序为:y=10-5;x=25/y;结果 x=5,共 51 页 第 90 页,2-3 赋值表达式,由赋
33、值运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式”。其形式为:例:a=b=c=5(a,b,c的值均为5)a=5+(c=6)(c 的值为6,a 的值为11)a=(b=4)+(c=6)(c 的值为6,b 的值为4,a 的值为 10),共 51 页 第 91 页,2-3 复合的赋值运算符,在赋值符“=”之前加上其它运算符,可以构成复合运算符。例:a+=3 等价于 a=a+3 x*=y+8 等价于 x=x*(y+8)x%=3 等价于 x=x%3,共 51 页 第 92 页,2-3 复合的赋值运算符,凡是二元(二目)运算符,都可以与赋值符一起组成复合赋值符。C 语言规定的10种复合赋值运算符
34、:+=,=,*=,/=,%=,=,&=,=,l=,共 51 页 第 93 页,5-2 运算符的优先级与结合性,按运算符的优先级分为15级按运算符的结合性分为2种自左向右结合 自右向左结合优先级不同时:运算符优先级的高低决定了进行运算的先后次序。优先级相同时:同优先级运算符的运算次序由结合性决定。例如:四则运算中的“先乘除,后加减”反映了运算符的优先级;“同级运算从左至右”反映了乘/除运算(加/减运算)的结合性。,共 51 页 第 94 页,3-5-4 字符串常量,字符串常量:用双引号括起来的字符序列 实例:”This is C string.”a”(1个空格)”(不含空格)串定界符:双引号”字
35、符串长度:字符串中包含的字符数量。,返回,串长=17串长=1串长=1串长=0,tNameAddressn,串长=15,空串,实例:,C is very easy.,串长=17,注意:字符串a 与 字符a 的区别,He saidok.n,串长=13,共 51 页 第 95 页,字符串的打印,字符串的打印有两种方式.一种是我们已使用的:Printf(“请输入a,b的值:n”);Printf(“计算结果是:”);Printf(“*结果*”);Printf(“This is a c program:”);,共 51 页 第 96 页,字符串的打印,还有另一种打印方式.用s%.Printf(“%s”,”
36、请输入a,b的值:n”);Printf(“%s”,”计算结果是:”);,共 51 页 第 97 页,3-2 常量,不能在程序中再改变常量的值。#include“stdio.h”#define H 10 main()int a=5,s;H=20;printf(”S=%d”,s);,共 51 页 第 98 页,3-2 常量,常量,事先给的值,在程序中,不能再改变。例子:分别计算r=5,和r=6两个圆形的面积。为了统一,pi固定取3.1416.,共 51 页 第 99 页,程序如下:,#define PI 3.1416 事先给值main()float r1=5,r2=6,s1,s2;s1=r1*r1*PI;s2=r2*r2*PI;printf(“s1=%f s2=%f”,s1,s2);,共 51 页 第 100 页,程序如下:,#define PI 3.1416在这里,用#define 定义了PI为常量,它的值是3.1416.注意格式:#define PI 3.1416 大写 空格 不用分号,共 51 页 第 101 页,常量在程序中不允许改变,#define PI 3.1416 事先给值main()float r1=5,r2=6,s1,s2;s1=r1*r1*PI;PI=3.14;s2=r2*r2*PI;printf(“s1=%f s2=%f”,s1,s2);,