chap2(基本程序语句).ppt_第1页
chap2(基本程序语句).ppt_第2页
chap2(基本程序语句).ppt_第3页
chap2(基本程序语句).ppt_第4页
chap2(基本程序语句).ppt_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章 基本的程序语句,2.1 C的数据类型及取值范围 2.2 标识符、常量与变量 2.3 整型数据 2.4 实型数据 2.5 字符型数据 2.6 变量赋初值,2.7 各类数值型数据间的混合运算 2.8 算术运算符和算术表达式 2.9 赋值运算符和赋值表达式 2.10 逗号运算符和逗号表达式 2.11. 关系运算符和关系表达式 2.12 C语句结构 2.13 数据的输入 / 输出,2.1 C的数据类型及取值范围 1一个C程序包括的内容 程序=算法+数据结构+程序设计方法+语言工具和环境 2C的数据类型,数据类型,基本类型,构造类型,指针类型(),空类型(void),字符型(char),数值类型,枚举类型(enum),数组类型( ),结构体类型(struct),共用体类型(union),整型(short,int,long,unsigned),实型,单精度型(float),双精度型(double),基本数据类型的长度及取值范围 见p15,p16 表2_3,表2_5 ANSI C标准中的数据类型和长度 见p16 表2_6 整型类型的简写形式 见p17 表2_7,标识符就是一个名字,用于标志某个事物,由字母、数字、下划线组成,由字母或下划线开头的字符串。,标识符可用来命名变量及作为常量名、函数名、类型名、标号和其他各种用户定义的对象命名。,一个程序内不得有重复名,不允许使用与C语言系统关键字(保留字)相同的标识符。,如: _sum, sum, stu_name, price30等为合法的标识符。,标识符,2.2 标识符、常量与变量,下面的标识符是不合法的:,Number-of-moves (含有非法字符-) piece flag (含有非法字符空格) 5_6_7 (数字开头),在定义标识符时应注意以下几点:,1. 为了增加可读性,应尽量“见名知意“。 如:sum,area,day,name等等,2. 对标识符的命名应“常用取简、专用取繁“。,3. 应尽量避免使用容易混淆的字符。 例如: O(大写字母) o(小写字母) 0(数字) I(大写字母) l(小写字母) 1(数字) Z(大写字母) z(小写字母) 2(数字),不要使用C语言关键字作为标识符 C语言关键字列表,auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while,1常量和符号常量 在程序运行过程中其值不能被改变的量称为常量。 例2.1 定义符号常量。 #define PRICE 30 main( ) int num,total; num=10; total=numPRICE; printf(“total=%d”,total); 用define命令定义PRICE代表常量30,则在整个程序中出现的PRICE都代表30,可以和常量一样进行运算。,1C语言区分大小写,如:Price 和 price,系统会认为是两个不同的标识符。,2标识符的长度一般不超过8个字符,具体情况视不同系统而定。,设允许8个字符。,则: student_ name,student_ number,为同一名字。,在程序运行过程中其值可以被改变的量称为变量。 变量名的命名符合标识命名规则:由字母开头,由字母、数字和下划线三种字符组成,长度不限制。 如:sum, aver, class, day为合法变量名;$123, #33, 3ds均为非法变量名; sum、Sum与SUM是三个不同的变量名。 在C中,习惯用大写字母标识符号常量,用小写字母标识变量。 变量必须先定义后使用。 变量一经定义,就确定了类型。,2变量,1整型常量 整型常量即整常数。整常数有三种表示形式: 十进制数 如:123, - 456 八进制数 以数字0开头。如:0123, - 011 十六进制数 以0x开头。如:0x123, - 0x12 2整型常量的类型 其值在-32768+32767时为int型。 其值在-2147483648+214748647时为long int型。 常量中无unsigned型。但非负值的整型量可以赋值给unsigned型整变量,只要不产生溢出。 在整型常量后面跟一个字母l或L,则认为是long int型常量。,2.3 整型数据,1) 整型变量的分类 基本型 以int表示。-3276832767 (-215215 -1) 短整型 以short int或short表示。 长整型 以long int或long表示。 -21474836482147483647 (-231231-1 ) 无符号型 用全部二进制位(bit)存放数据, 不能存放负数。 unsigned int与unsigned short: 065535(0216-1) unsigned long :04294967295 (0232 -1) 2) 整型变量的定义 int a,b; unsigned short c,d; long e,f ;,3整型变量,1实型常量 十进制数形式:0.123、.123、123、123.0、 。 指数形式: 123e3或123E3都代表123 103。 2实型变量 单精度float:占用4 Bytes, 7位有效数字,1038 1038 。 双精度double :占用8 Bytes, 15/16位有效数字,1030810308 。 如:float x,y; / 只能接收7位有效数字 / double z;,2.4 实型数据,1字符常量 字符常量是用单引号括起的1个字符。如:a、A、。 以“ ”开头的字符序列在printf 函数中控制输出格式(转义字符常量。见书p22表2-12)。 n 换行 t 横向跳格(下一个输出区) v 竖向跳格 b 退格 r 回车 f 走纸换页 反斜杠字符 单引号 ddd 1到3位8进制数所代表的字符。如:101=A。 xhh 1到2位16进制数所代表的字符。,2.5 字符型数据,P23:例2-6 例2.2 输出格式控制。 main( ) printf(“abctderf tgn”); printf(“htibbjk”); 在打印机上输出: f a bc gde h j i k 在屏幕上输出: f gde h jk,2字符变量 字符变量只能存放 1 个字符。 char c1,c2; c1=a; c2=b;,3字符数据在内存中的存储形式及使用方法 例2.3,在C中,字符型数据与整型数据可以相互赋值和运算。,字符串常量是用双引号括起来的字符序列。如: “How do you do.”, “CHINA”, “a”, “$123.45”。 注意: a是字符常量,而“a”是字符串常量。 不能将一个字符串赋给一个字符变量。字符串其内部有结束标志0。 C中没有字符串变量,需要用字符数组存放字符串。,4字符串常量,int a=3; float f =3.56; char c=a; int a,b,c=5; / 只给c赋初值 / int a=3,b=3,c=3; / 不能写成int a=b=c=3 /,2.6 变量赋初值,整型、单精度型、双精度型数据可以混合运算。不同类型的数据要先转换成同一类型,然后进行运算。转换规则如下:,2.7 各类数值型数据间的混合运算,C规定,可以在定义变量的同时给变量赋初值。如:,注:箭头只表示转换方向,并不是依次转换。转换过程是自动完成的。 例: 10 + a + i f - d/e 运算过程为: a 转换成整数97与10相加,结果为107 ; i 和f 转换成double型,运算结果为double型; 将107转换成double型与i和f的积相加,结果为double型; 将e转换成double型,d/e的结果为double型; 10 + a + i f 的结果与d /e的商相减,结果为double型。,1C 运算符简介 在C中,除了控制语句和输入输出以外的基本操作都作为运算符处理。 C的运算符有如下几类: 算术运算符 +、-、/、% 关系运算符 、 =、,、& 赋值运算符 =、+=、-=、=、/=、%=,2.8 算术运算符和算术表达式, 逗号运算符 , 指针运算符 和 & 求字节数运算符 sizeof 强制类型转换运算符 (类型) 分量运算符 或 下标运算符 其它 如函数调用运算符( ), 条件运算符 ? :,初等运算符 ( )、 、 单目运算符 !、+ +、 、+ 、 、(类型) 算术运算符 、/ 、% ,+、 关系运算符 、= ,= =、! = 逻辑运算符 &、 条件运算符 ? : 赋值运算符 =、+=、 =、=、/=、%= 逗号运算符 ,C中各类运算符的优先级:,1) 基本的算术运算符 + 、- 、 、/ 、% % 为求余、模运算( %的两边必须为整型数据) 其中:在除法中,整数相除取整,且大多数机器采取“向零取整”方法,即取整后向零靠拢。实数相除为double型。 如:5/3=1,-5/3= -1, 5/3.0=1.66666666666667。 2) 算术表达式和运算符的优先级与结合性 算术表达式是用算术运算符和括号将运算对象(常量、变量、函数等)连接起来的、符合C语法规则的式子。 C的各种运算符的结合性为 “自左向右”。,2算术运算符和算术表达式,当自动类型转换不能达到目的时,可以用强制类型转换。强制类型转换运算符可以将一个变量或一个表达式转换成所需的类型。如: (double)a 将a转换成double类型 (int)(x+y) 将x + y的值转换成int型 (float)(5%3) 将5 % 3的值转换成float类型 例2.4 main( ) float x; int i; x=3.6; i =(int)x; printf(“x=%f,i=%d”,x,i); 运行结果: x=3.600000, i=3,3. 强制类型转换,自增、自减运算符的作用是使变量的值增加1或减少1。 +i, - - i i 的值先增加(减少) 1,然后再使用i。 i+, i - - 先使用i 的值,然后i 再增加(减少)1。 注意: +和-只能用于变量,不能用于常量和表达式。 +和-的结合方向“自左至右”。如:-i+相当于-(i+)。 i+j按“自左向右”的原则解释为(i+)+j,而不是i+(+j)。 printf(“%d,%d”,i,i+),若“自左至右”,则为“3, 3”; 若“自右至左 ”,则为“4, 3”。标准C(VC,DEVC)遵循“自右至左”原则(包括函数调用时参数表中变量的求值顺序也是如此)。,4. 自增、自减运算符, 若i=3; j=i+; 则j是值为3, i的值为4。 若i=3; k=(i+)+(i+)+(i+); 则k的值为9, i的值为6。 可以将解释为: i=3; k=i+i+i; i+; i+; i+; 若i=3; k=(+i)+(+i)+(+i); 则k为18, i为6(turbo c,标准C不允许)。 可以将解释为: i=3; +i; +i; +i; k=i+i+i;, 若i=3; j=+i; 则j的值为4, i的值为4。,1“ = ”的作用是将一个数据或一个表达式赋给其左边的变量。 2若“ = ”两边的类型不一致,当同为数值型或字符型时,在赋值时要进行类型转换。 1) 将实型数据赋给整型变量时,舍弃实数的小数部分。 2) 将整型数据赋给实型变量时, 其数值不变, 但以浮点数形式存储。 3) 将字符型数据赋给整型变量时,由于字符只占1个字节,而整型变量占2个字节,因此,将字符数据放到整型变量的低8位中。 将字符处理为unsigned char时,高8位补0。如将变量 c (字符376)赋给整型变量i 。 将字符处理为带符号的量时,高8位全补1,称为 “符号扩展”。,2.9 赋值运算符和赋值表达式,5) 将unsigned int型数据赋给long int型变量时,不存在符号扩展问题。 6) 将非unsigned型数据赋给unsigned型变量时,原样照赋。 3. 复合的赋值运算 复合赋值 等价于 a+=3 a=a+3 x=y+8 x=x(y+8),4) 将带符号的int型数据赋给long int型变量时,进行符号扩展。即将数据送到低16位中,高16位补0或补1。,不得写成:x=xy+8,x%=3 x=x%3,在C中可以使用的复合赋值运算符有: +=、-=、=、/=、%=,=、&=、 =、 =,x%=y+3 x=x%(y+3),不得写成:x=x%y+3, 其中: 又可以是一个赋值表达式。 a=(b=5) a的值为5 a=b=c=5 a, b, c的值均为5 a=5+(c=6) a的值为11 a=(b=4)+(c=6) a的值为10 a=(b=10)/(c=2) a的值为5 赋值表达式可以包含复合的赋值运算符。如: a+=a-=aa 若a=12,则上式的求解步骤为: 先进行a-=aa的运算,即a=a-aa=12-144=-132 再进行a+=-132的运算, 即a=a+(-132)=-132-132=-264,4赋值表达式的一般形式,逗号表达式的一般形式: 表达式1,表达式2,表达式n 求解过程为:从左至右求各表达式的值,结果取最右边表达式的值。 如:a=35, a4 表达式值为60 (a=35, a4), a+5 表达式值为20 x=(a=3, 63) x的值为18 x=a=3, 6a x的值为3 例2.5 main( ) int m,n,i=5, j=6; m= + i; n= j+; printf(“%d,%d,%d,%dn”,i, j,m,n); ,2.10 逗号运算符和逗号表达式,运行结果: 6, 7, 6, 6,例2.6 #include “stdio.h” main( ) int i=1; printf(“%d,%d,%d,%dn”, i, i+, i+, i+); ,运行结果: 4,3,2,1,函数调用时,函数参数的求值顺序 从右至左,2.11. 关系运算符和关系表达式 1) 关系运算符及其优先顺序 C有6种关系运算符:,优先级相同(低),优先级相同(高), =,= = ! =,关系表达式是用关系运算符将两个以上算术、关系、逻辑、赋值或字符表达式连接起来的式子。 关系表达式的值是一个逻辑值,“真”(非0) 或 “假”(0)。 例如: ca+b 等效于 c(a+b) ab!=c (ab)!=c a=bc a=(bc),2) 关系表达式,1) 逻辑运算符及其优先顺序 C的三种逻辑运算符 & 逻辑与 逻辑或 逻辑非 “&”和“”为双目运算符,“!”为单目运算符。 a&b 若a, b均为真,则a & b为真,否则为假。 ab 若a, b均为真, 或之一为真, 则ab为真, 否则为假。 !a 若a为真,则 ! a为假,否则为真。 优先顺序 (ab) & (xy) ab & xy (a= =b) (x= =y) a= =b x= =y ( ! a) (ab) ! a ab (m=ab) & (n=cd) (m=(ab) ) &(n=(cd) ),3 逻辑运算符和逻辑表达式,逻辑表达式是用逻辑运算符将关系表达式或逻辑量连接起来的式子。逻辑表达式的值是一个逻辑量“真”(非0) 或 “假”(0)。 3) 逻辑表达式求解 a & b & c 若a为假,则表达式值为假。 a b c 若a为真,则表达式值为真。 53&283&2)为真,则表达式值为 真。,2) 逻辑表达式,2.12 C语句结构 C的五类语句 控制语句 共 9 种(if switch for while) 函数调用语句 printf(“This is a C statement .”); c=max(a,b); 表达式语句 任何表达式的末尾加上分号“ ; ” 就构成语句。 空语句 ; 复合语句 用 括起来的一组语句称为复合语句。,C本身不提供输入输出语句,输入和输出操作是由函数实现的。 1putchar 函数(字符输出函数) putchar函数的作用是向终端输出1个字符。 putchar(c); / 输出字符变量或整型变量c的值。/ 使用标准I/O库函数时,必须在程序开头加上 #include“stdio.h” 命令。,2.13 数据的输入 / 输出,例2.7 #include “stdio.h” main( ) char a,b; a=o; b=k; putchar(a); putchar(b); putchar(n); putchar(a); putchar(n); putchar(b); putchar(n); ,运行结果: ok o k,1) printf 函数的一般格式 printf (格式控制,输出项表) 其中:“格式控制”为双引号括起来的“转换控制字符串”。 “输出项表”为需要输出的一项或多项数据(变量/表达式)。 例:若a=3, b=4,则: printf(“%d%dn”,a,b); printf(“a=%d,b=%dn”,a,b); 输出结果: 34 a=3,b=4,2printf 函数(格式输出函数),%d 以十进制输出整数。 %o 以八进制输出整数。 %x 以十六进制输出整数。 %u 以十进制输出unsigned数据。 %c 用来输出1个字符。 %s 用来输出一个字符串。 %ms 按m宽度输出字符串。若串长 m ,则照字符串原样输出; 若串长m ,则左边补空格。 %-ms 类似%ms,若串长m ,则字符串向左靠,右边补空格。 %m.ns 靠右输出字符串左边的n个字符,左补空格。(n m) %-m.ns 靠左输出字符串左边的n个字符,右补空格。(n m) %f 以小数形式输出实数。 %m.nf 输出宽度为m,其中小数为n位。若数值长度m,则 靠右输出,左边补空格。 %-m.nf 同类似,“-”表示靠左输出,右边补空格。 %e 以指数形式输出实数。 %m.ne和%-m.ne 此处m、n、- 同f格式。 %g 根据数值大小自动选择f格式或e格式中占用宽度小的 一种输出实数,且不输出无意义的零。,2) 格式字符,例2.8 main( ) unsigned int a=65535; int b=-2; printf(“a=%d,%o,%x,%un”,a,a,a,a); printf(“b=%d,%o,%x,%un”,b,b,b,b); ,例2.9 main( ) char c=a; int i=97; printf(“%c,%dn”,c,c); printf(“%c,%dn”,i, i); printf(“%3c”,c); ,输出结果为: a, 97 a, 97 a,例2.10 main( ) printf(“%s, %3sn”, “CHINA”, “CHINA”); printf(“%7.2s, %.4s, %-5.3sn”, “CHINA”,“CHINA”,“CHINA”); ,输出结果为:,例2.11 若f =123.456,下列语句:,输出结果为: CHINA, CHINA CH,CHIN,CHI,getchar函数从终端输入1个字符。 例2.12 #include“stdio.h” main( ) char c; c=getchar( ); putchar(c); ,3. getchar 函数(字符输入函数),此两句可改为: putchar(getchar( ) ); 或 printf(“%c”,getchar

温馨提示

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

评论

0/150

提交评论