《C语言程序设计片头.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计片头.ppt(31页珍藏版)》请在三一办公上搜索。
1、数据描述与基本操作,数据类型一、数值的定点表示形式与浮点表示形式:二、字符类型数据的表示和存储形式:1、声明与赋值:声明:在说明部分 char ch赋值:ch=a;ch=3;ch=?(以单引号括起来的一个字符)2、存储形式:空间:1个字符 8位存储形式:字符类型的数据在内存中以相应的ASCII代码存放。a9701100001(B),3、字符数据与整数的关系:(字符数据可以等价为与其相应的ASCII码的整数。)例:main()char ch1,ch2;ch2=65;/*整数可以给字符型变量赋值*/int i;ch1=A;A65,a97ch1=ch1+32;/*字符型可以作为整数参加运算*/i=c
2、h1;printf(“%d is%c n”,i,ch1);/*%d-以整数形式输出*/printf(“%d is%c n”,ch1,ch1);/*%c-以整数形式输出*/printf(“%d is%c n”,i,i);,注:1、字符型可以作为整数参加运算 2、一个字符型数可以给整型变量赋值 3、一个整数也可以给字符型变量赋值 3、字符型可以以整数形式输出 4、整型数也可以以字符型输出%c输出字符的格式码 字符型数据和整型数据在一定范围内是互相通用的(在字符的ASCII码范围内),三、数据的存储空间长度及取值范围 C语言对不同类型的数据分配不同长度的存储空间,字符型占1个字符(8位)1、整型:s
3、hort int:短整型2个字节int:普通整型(24不等)long int:长整型 4个字节2、实型:float:单精度实型4个字节六位精度double:双精度实型8个字节十六位精度,四、带符号的数据类型与无符号的数据类型1、内存中整数的存储中,最高位表示数的符号,以0表示正,以1表示负。(数值是以补码形式存放的)2、整型、实型均为带符号的数整型:unsigned无符号(unsigned int只能存放正数)signed 有符号(signed int=int)实型没有 无符号数3、sizeof(类型标识符)测定某一种类型数据所占存储空间长度的运算符。例如:sizeof(int),常量与变量,
4、常量:是指在程序执行期间不能发生变化,具有固定值的量。变量:则是其值可以变化的量,实际上变量命名了的内存中指定的存储单元。一、直接常量和符号常量:1、直接常量:1.2,3,a,分别为实型,整型,字符型常量。2、符号常量:则是在一个程序中指定的用名字代表的常量,从字面上不能直接看出其类型和值。3、符号常量的定义:#define PI3.14159,二、直接常量的书写格式:1、整型常量:1)书写形式:十进制数:137-276八进制数:0117(以0开头)十六进制数:0 xA7(以0 x开头)2)存储方式与取值范围 按以上写法书写的常量,均保存在2个字节长度的存储空间中。十进制的范围:-327683
5、2767八进制:只表示正数,00177777十六进制:只表示正数,0 x00 xFFFF3)长整型:整型数后加l或L为长整型例如:十进制:137L-276L八进制:0177L十六进制:0 xA7L,注:12与12L数值大小没有区别,只是存储空间发生变化,加L的数存储占用4个字节的存储空间。,2、实型常量:表示方法:小数形式:34.5,345.345,3.1415指数形式:1e2 1.5e-3 可赋给 float或double均可,只是有效位数和存储空间不同。3、字符常量:表示方法:a,A,?,#用一对单撇号括起来的一个字符,单撇号只是字符与其它部分的分隔符,或者说是字符常量的定界符,不是字符常
6、量的一部分。注:,均为非法字符常量。4、转义字符:1)用反斜杠跟字母:控制字符如:n,t,v,b,r,f2)表示字符原本含义:”等3)表示不能直接从键盘上输入的字符常量ooo,xhh不加前缀的三位八进制数加前缀x,两位十六进制,5、字符串常数:1)表示形式:”world”,”x”,”等,用一对双撇号括起来的零个或多个字符序列称为字符串常量。2)存储方式:字符串常数在机器内存储时,系统自动在字符串的末尾加一个“字符串结束标志”,即转义字符“0”,即:注:A与”A”的区别:1)前为字符常量,后为字符串常量2)存储时,前占一个字节,后占两个字节“”在内存中占一个字节,二、变量和对变量的赋值1、变量与
7、变量名在程序中,数据连同其存储空间被抽象为变量。每个变量都有一个名字,这个名字成为变量名。它代表了某个存储空间及其所存储的数据。例如:double a;含义:1)a代表了8个连续的存储单元 2)此空间中所存储的数据,成为该变量的值。3)这个存储空间的首地址就称为该变量的地址。(&a为首地址)2、赋值:把从运算器向变量所代表的存储单元传送数据的操作成为赋值。一般形式为:变量=表达式例如:a=1.0;a=a+1;b=a;a=a+b;,说明:1)“=”是赋值符号,不是等于号“=”为等于号。2)赋值运算的方向为由右向左,执行步骤为先计算再赋值。3)赋值表达式:一个表达式应该有一个确定的值,赋值表达式的
8、值是被赋值后变量的值。注:赋值运算符的运算方向是自右向左的。分析:d=c=b=a=3+5;,四、变量的声明:int i1,i2;shout s1,s2;char ch1,ch2;float f1,f1;double d1,d2;意义:1)不同类型的数据在内存中占据不同长度的存储区,且采用不同的表示方法。(在编译时就会根据指定的类型分配存储空间。)2)一种数据类型对应着一定的取值范围。(超出则出错)3)一种数据类型对应着一组允许的操作。,五、标示符 标示符是给程序中的实体(变量,常量,函数,数组等)所起的名字。1、标示符命名规则:1)以字母或下划线开头,由字母,数字或下划线组成的字符序列。(尽量
9、不要以下划线开头,以防冲突)2)C语言有32个关键字,它们已经有专门含义,用户不应采用与它们同名的标志符。3)不要过长,且区分大小写。,C语言的关键字,2、在定义标示符时,建议遵循下面原则:1)“见名知义”,增加程序的可读性2)变量名、函数名用小写,符号常量用大写3)注意混淆0oO1Il,运算符与表达式,运算符,算数运算符:+、-、*、/、%、,关系运算符:、=、=、!=,逻辑运算符:&、|、!,条件运算符:_?_:_,一、算术运算符:1、双元算术运算符(双目)+、-:优先级在同一级别,且级别较低*、/、%:优先级在同一级别,且级别较高例:1)5+4-12)2*3/63)5+6+1*3+24)
10、a=2*3+52、自反算术符值运算符a=a+5 a+=5-=、*=、/=、%=结合方向自右向左,与赋值符号同级c=b*=a+2 b=b*(a+2);c=b;,3、自加和自减运算i=i+1 i+=1 i+或+ii=i-1 i-=1 i-或-i后缀形式,先使用后加1;前缀形式,先加1后使用。例:1)单独使用int i=0;int i=0;i+;+i;t=i;t=i;2)在表达式中int i=0;int i=0;t=i+;t=+i;(t=0,i=1)(t=1,i=1)3)多加号相结合:x=i+j;x=(i+)+jc语言编译器总是从左至右尽量多的将若干个字符组成一个运算符。注:运算对象只能是整型变量,
11、而不能是表达式或常量。5+(x+y)+,4、正负号运算:单目运算符(一元运算符)+(正号)、-(负号)优先级别高于*、/例如:-a*b5、赋值类运算符的副作用及限制:如:x=i+j;1)将费解处分解:x=i+j;i+;2)加一些不必要的括号:x=(i+)+j;3)加注释说明如:j=3;i=(k=j+1)+(j=5);先算优先级高的,后按结合方向计算。k=j+1与j=5 同级,看机器先算哪个,得出不同结果。,二、关系运算,逻辑运算与条件运算1、关系运算:=x+1 6 9 0=9 z=1按优先级顺序依次计算:z=1,注:1)c语言中的表达式a260说明c中的含义。3)关系表达式的值是整型数0或1,
12、故是一种整型表达式;int x=5,y=7,a;a=2+(xb;a=97;,2、逻辑运算:else 例:x在区间a,bx=a&x=b例:写出描述点A(x,y)落在图中阴影部分(不压线)的c表达式。,注:1)&运算结合方向为从左向右,当左端为0,则不计算右端。2)|若一端为1,则不必计算另一端。,3、条件运算(c语言中唯一的三元运算符)e1?e2:e3条件表达式值由e1决定:若真,值为e2 若假,值为e3例:a+|b|sum=(b0?a+b:a-b);例:输入两数,输出大者max=ab?a:b;优先级很低,仅仅比赋值操作符的级别高。,4、逗号表达式:(1)C语言中,逗号既可以作为分隔符,如:in
13、t x,y,z;printf(“%d%d”,x,y);(2)又可作运算符,如 表达式1,表达式2,表达式n/*逗号表达式*/(逗号作为运算符使用时,是将若干个独立的表达式连接在一起,组成逗号表达式。)(3)结合方式:由左向右一次运算每个表达式。(4)逗号表达式的值和类型:由最后一个表达式的值决定。如:a=2,b=3,c=1.5;x=(a=2,b=3,c=1.5);,5、位运算 是指进行二进制位的运算。位运算符:&,|,(1)位逻辑运算符 按位取反 例:(0110 1101)B(1001 0010)B&按位“与”例:0101 0100&0011 1011 0001 0000|按位“或”例:010
14、1 0100|0011 1011 0111 1111,按位“异或”例:0101 0100 0011 1011 0110 1111(2)移位运算 以二进制位为单位进行左移或右移的操作。右移 3种方式:循环移位,逻辑移位,算数移位(具体方式与C语言编译器有关),格式化输出函数printf()printf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。在编写程序时经常会用到此函数。printf()函数的调用格式为:printf(,);其中格式化字符串包括两部分内容:一部分是正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以%开始,后跟一个或几个规定字符,用来确定输出内容
15、格式。参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出 参数个数一样多,各参数之间用,分开,且顺序一一对应,否则将会出现意想不到的错误。,数值数据的输入与输出,格式化规定符 C提供的格式化规定符如下:%d 十进制有符号整数%u 十进制无符号整数%f 浮点数%s 字符串%c 单个字符%p 指针的值%e 指数形式的浮点数%x,%X 无符号以十六进制表示的整数%0 无符号以八进制表示的整数%g 自动选择合适的表示法 说明:(1)可以在“%”和字母之间插进数字表示最大场宽。例如:%3d 表示输出3位整型数,不够3位右对齐。%9.2f 表示输出场宽为9的浮点数,其中小数位为2,整数位为
16、6,小数点占一位,不够9位右对齐。,例1.#includemain()int a=1234;printf(a=%dn,a);/*结果输出十进制整数a=1234*/printf(a=%6dn,a);/*结果输出6位十进制数a=1234*/printf(a=%06dn,a);/*结果输出6位十进制数a=001234*/printf(a=%2dn,a);/*a超过2位,按实际值输出a=1234*/printf(f=%fn,f);/*输出浮点数f=3.141593*/printf(“f=6.4fn”,f);/*输出6位其中小数点后4位的浮点数*/,1.5.2 格式化输入函数scanf()scanf()函数是格式化输入函数,它从标准输入设备(键盘)读取输入的信息。其调用格式为:scanf(,);格式化字符串包括以下三类不同的字符:1.格式化说明符:格式化说明符与printf()函数中的格式说明符基本相同。2.非空白字符:一个非空白字符会使scanf()函数在读入时剔除掉与这个非 空白字符相同的字符。地址表是需要读入的所有变量的地址,而不是变量本身。这与printf()函数完全不同,要特别注意。各个变量的地址之间用,分开。,例2:main()int i,j;printf(i,j=?n);scanf(%d,%d,