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

上传人:max****ui 文档编号:11544782 上传时间:2020-04-28 格式:PPT 页数:81 大小:851KB
返回 下载 相关 举报
C语言(常量、变量及表达式).ppt_第1页
第1页 / 共81页
C语言(常量、变量及表达式).ppt_第2页
第2页 / 共81页
C语言(常量、变量及表达式).ppt_第3页
第3页 / 共81页
点击查看更多>>
资源描述
C语言程序设计,数据类型、运算符、表达式及简单的输入输出函数,第四章,第四章数据类型、运算符、表达式及简单的输入输出函数,数据类型常量变量运算和运算符运算表达式简单的输入输出函数,字符集:编程可使用的字符,C语言程序的基本标识符,英文字母az,AZ;阿拉伯数字09;特殊符号(!%*:;?/以及空格、换行等),12cd,$123,#11,M.D.Ritchie。这里所表示的标识符都是错误的。,标识符:,标识符规定:,例:sun,day,month,student_name,c1string_2。,1.标识符由字母、下划线、数字三种字符组成,且第一个字符必须是字母或者下划线。+*.汉字等均不能出现。2.字母区分大小写;3.标识符不能是关键字。,用来标明变量名、函数名、数组名、结构体名、文件名、类型名等的符识。标识符就是有效字符的序列,一个名字。用英文!,保留字(关键字)(见书P43表4-1C语言的保留字)预定义标识符(库函数名,如:stdio;预编译命令,如:include)用户定义标识符,4.2数据类型,整型实型(浮点型)字符型(字符串)枚举型,单精度型双精度型,数组类型结构体类型共同体类型,基本类型,构造类型,指针类型,数组类型相同的数据集合,常量形式变量形式,结构体类型不同的数据集合,按进制分类:十进制。例:10,35,-1289。八进制,以0开头。例:010(o是字母)。对应十进制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语言中,字符型数据与整型数据可通用:10+R,即一串普通字符用双引号括起来。例:“TurboC”,“China”。,以“”开头的字符表示特定的含义。此时字符转变为另外的意义。例:n表示回车换行,r表示回车。,(1)数,(2)字符常量,(3)字符串常量,A和“A”不相同!,小结,注意,用“”包围的一个或多个字符,如:“hello”,单一字符,用包围,如:A,8,类型进制表示范围整型数八、十、十六015,15,0 x15-215215-1长整型数八、十、十六015L,15L,0 x15L-231231-1实型数十123.5,1.235e+210-381038,(4)特殊的字符常量(转义字符),后跟一个字符或一个数字,表示控制代码和用于功能定义的字符如:,字符功能n回车换行r回车t水平制表b退格v垂直制表f换页a响铃警报“双引号字符101Ax41A,符号常量,对常量命名,即用符号代替常量;先定义后使用;格式:#define符号常量常量例:#definePI3.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个字节。短整型:shortint变量名2个字节。长整型:longint变量名4个字节。2)符号(正负号):int变量名无符号型:unsignedshortint变量名longint变量名,表示实型数据(实数)的变量。单精度型:float变量名4个字节。双精度型:double变量名8个字节。,3、字符型变量:,4、字符串数组:,表示字符型数据的变量。char变量名1个字节。,表示字符串型数据的数组。char变量名下标字符串数组:是一个地址量。字符串数组表示字符串的第一个字符的地址。,2.3.1变量的数据类型,5、表变量的数据类型、字节长度、位数、数据范围,1、变量的定义(声明),例:inta;floatb,c,d;charc1,string;,变量定义的格式:,存储类型数据类型标识符变量1,变量2,变量n;,2.3.2变量的使用,在C语言中,所使用的每一个变量在引用前都须先定义,否则在程序编译时会发生错误。变量的定义就是按一定的方式为其使用的变量指定数据类型(标识符)、变量名(标识符)。在程序编译时,为其分配存储空间。,变量的定义意义在于,计算机在编译时,对每一个变量分配对应和固定的存储单元(地址),为其程序的使用创造必要条件。,inti,jnumber;floatx,y;charname;staticdoubleu,v;inta;inta1;externfloata2;externcharstr;,变量定义举例:,例:inta=3;intb=0,c=0;floatf=5.8;charc1=e;charstring10=“Beijing”;,2、变量的初始化,给变量赋初值的过程叫变量的初始化。C语言允许在定义变量的同时对变量赋值。,注意:没有赋初值的变量,并不意味着该变量中没有数值。此时,对于静态型(static)变量中的值是0,其它存储类型变量一个随机数。变量初始化的意义:程序编译完成后,变量已被赋值。,(1)初始化:定义的同时赋值inti=5,j=6;floatx=10.1;charname=A;,(2)先定义,后赋值。inti;floatx=10.1;charname;i=5;x=20.5;name=A;i=d;,变量的赋值的方法:,在程序中使用变量,称为变量的引用。如进行数值计算、数据处理等。使用变量时,先定义,后引用。,3、变量的引用,2.3.3变量数据的存储与读取,变量所代表的数据是存储在(计算机)内存中。在使用中往往希望数据的存储应灵活、多样,以便于编程。,变量数据的存储形式有:静态存储static静态型extern外部型动态存储auto自动型register寄存器型这部分的内容在第五章函数中详细介绍。,1、变量数据的存储,变量内存,a,b,变量地址内存,a2000,b2002,直接读取:,间接读取:,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运算符,+、-、*、/、%、=、=、!=y=x*x+x;,C语言赋值运算符与数学中的等号其含义有着本质的不同。赋值表示操作,有结果。,(6)自增自减运算符:让变量自己加1或者减1,名称运算符说明例增1(前缀)+先加1,后使用。+i增1(后缀)+先使用,后加1。i+减1(前缀)-先减1,后使用。-i减1(后缀)-先使用,后减1。i-,例:,intj;i=3;j=+i;结果:j的值为4。i的值为4。,而,intj;i=3;j=i+;结果:变量j的值为3,变量i将3赋给j后自加1变为4。,自增自减运算仅限用于变量。自增自减运算不能用于常量或表达式。单目运算符,结合性为自右向左。,(8)条件运算符,(9)指针运算符,(10)地址运算符,(11)结构体成员运算符,(12)指向结构体成员运算符,(7)逗号运算符,,,?:,*,结果:等于2。,sizeof(数据类型标识符或表达式);,(18)位运算运算符,(17)数据类型转换运算符,条件表达式格式:,2.5.5赋值表达式,由赋值运算符连接常量、变量或表达式构成。,例:,赋值表达式格式:,变量=常量、变量、表达式;,例:,例:,intx,y;x=5;y=10;x=10*(y=5);,charc1;c1=a;,charstr20=“Microsoft”;,自反赋值表达式格式:,变量+=表达式;,变量-=表达式;,变量*=表达式;,变量/=表达式;,变量%=表达式;,例:,inta=1,b=1,c=3;a+=5;b*=5;c%=1;c/=1;,a=a+5;b=b*5;c=c%1;c=c/1;,注意:左端只能为变量!,赋值运算与自反赋值运算的结合性是自右至左。例:已知x=10,则x+=x-=20的值为:,(1)x-=20 x=x-20 x=-10,(2)x+=-10 x=x+(-10)x=-20,-20,例:intx,y,a;x=y=10;y+a=20;,错,逗号表达式,1.由逗号运算符连接常量、变量或表达式构成。,3.逗号表达式求解过程,顺序求表达式的值(先求表达式1,再求表达式2,再求,直到求表达式n),整个表达式的值是最后一个表达式的值。4.优先级最低,自左向右结合。,2.逗号表达式格式:,表达式1,表达式2,表达式n;,例:,例:,例:,例:,3+5,6+8;结果:14。,a=3*5,a*4;结果:60。,x=(a=3,6*3);结果:x=18。,x=a=3,6*3;结果:18。,注意:在逗号表达式中,前后表达式使用同一个变量时,前一变量的计算结果会影响后面表达式的计算结果。而不能简单将表达式的值等于最后一个表达式的值。,高doublefloatlongunsigned低intchar,short,2.5.7混合表达式,由各种运算符连接常量、变量或表达式构成。,数据类型的转换规则:,由低(字节长度短)向高(字节长度长)转换。,混合运算应注意三个问题:,优先级结合性数据类型的转换,能被4整除而不能被100整除或能被400整除(判断闰年的条件)。,例:,隐式转换:,例:,显式转换:,(数据类型标识符)表达式;,显式转换格式:,例:,例:,例:,(int)1.5;结果:1。,(float)1;结果:1.0。,a*b/c+1.5-a;,(ch=A,例:用getchar、putchar函数编一个程序。要求从键盘输入一个字符,并将其显示在显示器上。,BB,运行程序,#includemain()charc;c=getchar();putchar(c);,例:用putchar函数输出BOY字母。,BOY,#include“stdio.h”main()chara,b,c;a=B;b=O;c=Y;putchar(a);putchar(b);putchar(c);,运行程序,1、字符串输入函数gets,P72页:字符串输入函数gets和字符串输出函数puts,#includemain()charfilename30;gets(filename);,函数引用格式:,功能:,要求:,gets(str);,从键盘读取一串字符,用回车键结束字符串的输入,并将其赋给字符串数组str,即存入str所指向的存储区。,程序开始要使用预编辑命令#include。,例:,2、字符串输出函数puts,#includemain()charstr10=“abc”;puts(str);puts(“ABC”);,函数引用格式:,功能:,要求:,将字符串常量或字符串数组str指向的字符串输出到显示器上。字符数组str指向要输出的字符串。,程序开始要使用预编辑命令#include。,puts(str);,例:,运行结果:abcABC,例:用gets、puts函数编一个程序。要求从键盘输入一个字符串,并将其显示在显示器上。,TeststringI/OABCDEFGABCDEFG,#includemain()charstr20;puts(“TeststringI/O”);gets(str);puts(str);,运行程序,4.10.2格式化输入、输出函数,scanf(“输入格式”,输入项地址表列);,scanf(“%d%f”,2、格式化输入函数,printf(“输出格式”,输出项表列);,输出格式:%d十进制整数%x十六进制整数%f浮点小数%c单一字符%s字符串,printf(“a=%d,x=%f”,a,x);,1、格式化输出函数,格式化输入输出函数可以将各种类型的数据从计算机中输出到显示器上、从键盘上将数据输入到计算机中。,引用格式:,1、格式化输出函数printf,功能:,要求:,printf(“输出格式”,输出项表列);,按照指定的格式,将输出项表列的各项,输出到显示器上。,程序开始要使用预编辑命令#include。,常量、变量、表达式,格式符,输出格式,输出项表列,用于规定相应输出项的格式。输出格式用格式符来说明。是由一系列格式转换说明符(简称格式符)组成。用双引号括起来的字符串,包含两种信息:格式说明。用于规定相应输出项的格式,用格式符来说明,如上面printf函数双引号中的%d、%f等。普通字符。即需要原样输出的字符。如上面printf函数双引号中的a=、b=、逗号。,是指定要输出的数据,可以是变量、常量或表达式。多个变量、常量或表达式时,用逗号“,”分隔。输出变量、常量或表达式的个数要与格式符个数相同、前后顺序一一对应。,printf(“a=%d,x=%f”,a,x);,格式符:%+-0m.nl,%是格式符的开始标识记号。,数据类型说明字母指定输出项输出数据的数据类型和格式。,%d带符号十进制整数输出。%f以小数形式输出,含6位小数。%e以指数形式输出,其中尾数部分6位小数,指数3位,正负号1位,e1位。%s以字符串输出。%c以单个字符输出。%x以十六进制整数输出。%o以八进制整数输出。%u无符号十进制整数输出。%g以%e%f格式中输出长度较短的一种格式输出,不输出无意义的0。,例:main()floata=111111.111;floatb=222222.222;printf(“%fn”,a+b);6位小数运行结果:333333.328125有效位7位无效位,数据类型说明字母,2-008,%f,以小数形式输出,含6位小数。单精度输出数据有效位7位。双精度输出数据有效位16位。,2-007,例:main()inta=123,b=12345;printf(“%d,%dn”,a,b);程序结果:123,12345,%d,带符号十进制整数输出,例:main()charc=a,;inti=97;printf(“%c,%dn”,c,c);printf(“%c,%dn”,i,i);运行结果:a,97a,97,2-011,2-010,数据类型说明字母,%s,例:main()printf(“%sn”,“Beijing”);运行结果:Beijing,%c,以单个字符输出,以字符串输出,例:main()printf(“%e”,123.456);运行结果:1.234560e+0026位小数3位指数,2-009,%e,以指数形式输出,其中尾数部分6位小数,指数3位,正负号1位,e1位,m表示输出项输出数据(字符)的总长度。无.n部分,格式符:%+-0m.nl,输出整数:,输出实数:,输出字符:,例:,例:,例:,m表示输出项输出数据(字符)的总长度。n表示输出项输出数据的小数部分数据(字符)的长度。,m表示输出项输出数据字符的总长度。n表示输出项输出数据字符的实际个数。,m.n指定输出数据的长度,main()intx=123;printf(“%3d”,x);123,运行结果,main()charstr20=“Beijing”;printf(“%5.3s”,str);Bei,运行结果,main()floatpi=3.14159;printf(“%7.5f”,pi);3.1416,运行结果,%7.4表示输出的数据共占7个字符位置,其中小数占4个字符位置。,2-005,2-004,格式符:%+-0m.nl,+-指定输出项输出数据的输出位置。,0对输出项数据空位置填数字0或空白(空格)。,例:,例:,main()intx=456;printf(“%05dn”,x);printf(“%5dn”,x);00456456,运行结果,指定0,输出显示时填0。不指定0,输出显示时填空白(空格)。,指定“+”或缺省时,输出项输出数据(字符)的输出位置右边靠齐。指定“-”时,输出项输出数据(字符)的输出位置左边靠齐。,main()charstr10=“ABCD”;printf(“%+5sn”,str);printf(“%-5sn”,“ABCD”);ABCDABCD,运行结果,2-006,格式符:%+-0m.nl,l对输出项输出数据的数值,指定输出的精度和类型。,对整型数,对实型数,例:,如果不指定l输出产生错误。,d(十进制),x(十六进制),o(八进制),u(无符号十进制)。l:long型精度。h:short型精度。缺省时,int型精度。,e(指数形式),f(小数形式),g。l:double精度。缺省时,float精度。,main()longx=12345678;printf(“%ldn”,x);12345678,运行结果,引用格式:,2、格式化输入函数scanf,功能:,要求:,scanf(“输入格式”,输入项地址表列);,从标准文件,即键盘上,按输入格式为指定的输入项变量输入数据。,程序开始要使用预编辑命令#include。,输入格式:,输入项表列:,格式符:,用于规定输入项输入数据的格式。输入格式用格式符来说明。,是由若干个变量的地址组成。一般情况下,在每个变量前加地址运算符40scanf(“%d%d%d”,60行号为40的语句要求为变量a、b、c输入数据。前面我们说了,输入多个数据时,可以用空格键、回车键或TAB键作分隔符进行分隔,故:567或者567或者567这三种输入方法都可以,输出结果是a=5,b=6,c=7,(2)但是如果scanf的双引号里有“,”、“:”、“;”、“”(空格)、“a=”等等的普通字符,我们在输入的时候一定要原样输入,否则可能会发生严重的错误。#includemain()inta,b,c;scanf(“a=%d;b=%d;c=%d”,c=7,运行程序,例题,543543,aa,main()inta;scanf(“%d”,main()charc;scanf(“%c”,例:,例:,运行程序,main()inta,b,c;scanf(“%d%d%d”,例:,运行程序,运行程序,567或567567,35,45,2.535452.500000,例:,main()intx,y;floatz;scanf(“%d,%d,%f”,scanf(“x=%d,y=%d”,则输入形式为:x=10,y=29,#includemain()chara,b;a=getchar();putchar(a);putchar(n);b=a+a-A;printf(a=%cb=%cn,a,b);printf(a=%db=%dn,a,b);,例:在键盘上输入一个大写字符,将它转换成小写后输出。,运行程序,AASCII码为65aASCII码为97a-A=32将大写转换成小写,MMa=Mb=ma=77b=109,将字母大写转换成小写加32,将字母小写转换成大写减32。,例:已知三角形的三个边长。用面积公式:,其中:s=1/2(a+b+c)。求三角形的面积。,a,b,c,#include#includemain()floata,b,c,s,area;printf(”Entera,b,c:);scanf(%f,%f,%f,Entera,b,c:5.0,6.0,7.0a=5.00b=6.00c=7.00s=9.00area=14.6969,运行程序,例:求方程ax2+bx+c=0的实根。,#include#includemain()floata,b,c,disc,x1,x2,p,q;printf(entera,b,c:);scanf(%f,%f,%f,main()intx=315;charch=a,c;floatf=3.5;c=x;x=f;f=c;f=x;,例:指出下列程序在执行过程中各个变量的取值。,315的二进制形式为:0000000100111011。其赋给字符变量c取低八位即:00111011。所以c的值为:59。x的值为:3。f的值为:59.0。f的值为:3.0。,例:,main()charstr10;scanf(“%s”,str);printf(“n%s”,str);,运行程序,Howareyou?Howareyou?,字符串数组前不要加地址符&,因为字符串数组名表示的是字符串的第一个字符的地址,地址量。,结束,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


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

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


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