C语言chap基本程序语句.pptx
标识符就是一个名字,用于标志某个事物,由字母、数字、下划线组成且由字母或下划线开头的字符串。标识符可用来命名变量及作为常量名、函数名、类型名、标号和其他各种用户定义的对象命名。一个程序内不得有重复名,不允许使用与C语言系统关键字(保留字)相同的标识符。如如:_sum,sum,stu_name,price30等为合法的标识符。标识符标识符 2.2 标识符、常量与变量标识符、常量与变量第1页/共48页下面的标识符是不合法的:Number-of-moves(含有非法字符-)piece flag(含有非法字符空格)5_6_7(数字开头)第2页/共48页在定义标识符时应注意以下几点:1.为了增加可读性,应尽量见名知意。如:sum,area,day,name等等2.对标识符的命名应常用取简、专用取繁。3.应尽量避免使用容易混淆的字符。例如:O(大写字母)o(小写字母)0(数字)I(大写字母)l(小写字母)1(数字)Z(大写字母)z(小写字母)2(数字)第3页/共48页不要使用C语言关键字作为标识符C语言关键字列表 autobreakcasechar constcontinuedefaultdo doubleelseenumextern floatforgotoif intlongregisterreturn shortsignedsizeofstatic structswitchtypedefunion unsignedvoidvolatilewhile第4页/共48页 1常量和符号常量常量和符号常量 在程序运行过程中其值不能被改变的量称为常量。例例2.1 定义符号常量。#define PRICE 30 main()int num,total;num=10;total=num PRICE;printf(“total=%d”,total);用define命令定义PRICE代表常量30,则在整个程序中出现的PRICE都代表30,可以和常量一样进行运算。第5页/共48页1C语言区分大小写语言区分大小写如:Price 和 price,系统会认为是两个不同的标识符。2标识符的长度一般不超过标识符的长度一般不超过8个字符个字符具体情况视不同系统而定。设允许8个字符。则:student_ namestudent_ number为同一名字。注意:第6页/共48页 在程序运行过程中其值可以被改变的量称为变量。变量名的命名符合标识命名规则:由字母开头,由字母、数字和下划线三种字符组成,长度不限制。如:sum,aver,class,day为合法变量名;$123,#33,3ds均为非法变量名;sum、Sum与SUM是三个不同的变量名。在C中,习惯用大写字母标识符号常量,用小写字母标识变量。变量必须先定义后使用。变量一经定义,就确定了类型。2变量变量第7页/共48页1整型常量整型常量整型常量即整常数。整常数有三种表示形式:十进制数 如:123,-456 八进制数 以0开头。如:0123,-011 十六进制数 以0 x开头。如:0 x123,-0 x122整型常量的类型整型常量的类型 其值在-32768+32767时为int型。其值在-2147483648+214748647时为long int型。常量中无unsigned型。但非负值的整型量可以赋值给unsigned型整变量,只要不产生溢出。在整型常量后面跟一个字母l或L,则认为是long int型常量。2.3 整型数据整型数据第8页/共48页1)整型变量的分类 基本型 以int表示。-3276832767(-215215-1)短整型 以short int或short表示,取值范围同int型。长整型 以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整型变量整型变量第9页/共48页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 实型数据实型数据第10页/共48页1字符常量字符常量字符常量是用单引号括起的1个字符。如:a、A、。以“”开头的字符序列在printf 函数中控制输出格式(转义字符常量。见书p12p13中表)。n换行t横向跳格(光标移动到下一个输出区首位置、跳过的路径留空)v竖向跳格b退格r回车f走纸换页反斜杠字符 单引号 ddd 1到3位8进制数所代表的字符。如:101=A。xhh 1到2位16进制数所代表的字符。2.5 字符型数据字符型数据第11页/共48页例2.2 输出格式控制。main()printf(“ABCtDErFtGn”);printf(“HtLbbJK”);在打印机上输出:FABCGDEHJLK在屏幕上输出:FGDEHJK2字符变量字符变量字符变量只能存放 1 个字符。char c1,c2;c1=a;c2=b;第12页/共48页 3字符数据在内存中的存储形式及使用字符数据在内存中的存储形式及使用方法方法 例例2.3 在在C中中,字符型数据与整型数据可以相互赋值和运算字符型数据与整型数据可以相互赋值和运算。第13页/共48页 字符串常量是用双引号括起来的字符序列。如:“How do you do.”,“CHINA”,“a”,“$123.45”。注意:a是字符常量,而“a”是字符串常量。不能将一个字符串赋给一个字符变量。字符串其内部有结束标志0。C中没有字符串变量,需要用字符数组存放字符串。4字符串常量字符串常量第14页/共48页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规定,可以在定义变量的同时给变量赋初值。如:第15页/共48页注注:箭头只表示转换方向,并不是依次转换。转换过程是自动完成的。例: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型。第16页/共48页1C 运算符简介运算符简介 在C中,除了控制语句和输入输出以外的基本操作都作为运算符处理。C的运算符有如下几类:算术运算符+、-、/、%关系运算符、=、=、=、!=逻辑运算符&、!位运算符,、&赋值运算符=、+=、-=、=、/=、%=2.8 算术运算符和算术表达式算术运算符和算术表达式第17页/共48页 逗号运算符,指针运算符 和&求字节数运算符sizeof 强制类型转换运算符(类型)分量运算符 或 下标运算符 其它如函数调用运算符()条件运算符?:第18页/共48页初等运算符()、单目运算符!、+、+、(类型)算术运算符、/、%,+、关系运算符、=,=、!=逻辑运算符&、条件运算符?:赋值运算符=、+=、=、=、/=、%=逗号运算符,C中各类运算符的优先级:中各类运算符的优先级:第19页/共48页1)基本的算术运算符基本的算术运算符 +、-、/、%为求余、模运算(%的两边必须为整型数据)其中:在除法中,整数相除取整,且大多数机器采取“向向零零取取整整”方法,即取整后向零靠拢。实数相除为double型。如:5/3=1,-5/3=-1,5/3.0=1.66666666666667。2)算术表达式和运算符的优先级与结合性算术表达式和运算符的优先级与结合性 算术表达式是用算术运算符和括号将运算对象(常量、变量、函数等)连接起来的、符合C语法规则的式子。C的各种运算符的结合性为“自左向右自左向右”。2算术运算符和算术表达式算术运算符和算术表达式(p15)第20页/共48页 当自动类型转换不能达到目的时,可以用强制类型转换。强制类型转换运算符可以将一个变量或一个表达式转换成所需的类型。如:(double)a 将a转换成double类型(int)(x+y)将x+y的值转换成int型(float)(5%3)将5%3的值转换成float类型 例例2.4main()float x;int i;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);运行结果:x=3.600000,i=33.强制类型转换强制类型转换(p22)第21页/共48页 自增、自减运算符的作用是使变量的值增加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”。Turbo C和MS C遵循“自右至左自右至左”原则(包括函数调用时参数表中变量的求值顺序也是如此)。4.自增、自减运算符自增、自减运算符(p16)第22页/共48页 若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。可以将解释为:i=3;+i;+i;+i;k=i+i+i;若i=3;j=+i;则j的值为4,i的值为4。第23页/共48页1“=”的作用是将一个数据或一个表达式赋给其左边的变量。2若“=”两边的类型不一致,当同为数值型或字符型时,在赋值时要进行类型转换。1)将实型数据赋给整型变量时,舍弃实数的小数部分。2)将整型数据赋给实型变量时,其数值不变,但以浮点数形式存储。3)将字符型数据赋给整型变量时,由于字符只占1个字节,而整型变量占2个字节,因此,将字符数据放到整型变量的低8位中。将字符处理为unsigned char时,高8位补0。如将变量c(字符376)赋给整型变量i。将字符处理为带符号的量时,高8位全补1,称为“符号扩展”。2.9 赋值运算符和赋值表达式赋值运算符和赋值表达式第24页/共48页5)将unsigned int型数据赋给long int型变量时,不存在符号扩展问题。6)将非unsigned型数据赋给unsigned型变量时,原样照赋。3.复合的赋值运算复合的赋值运算 复合赋值复合赋值等价于等价于 a+=3a=a+3 x=y+8x=x(y+8)4)将带符号的int型数据赋给long int型变量时,进行符号扩展。即将数据送到低16位中,高16位补0或补1。不得写成:x=x y+8x%=3 x=x%3在C中可以使用的复合赋值运算符有:+=、-=、=、/=、%=,=、&=、=、=x%=y+3 x=x%(y+3)不得写成:x=x%y+3第25页/共48页 其中:又可以是一个赋值表达式。a=(b=5)a的值为5 a=b=c=5a,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-=a a若a=12,则上式的求解步骤为:先进行a-=a a的运算,即a=a-a a=12-144=-132 再进行a+=-132的运算,即a=a+(-132)=-132-132=-2644赋值表达式的一般形式赋值表达式的一般形式第26页/共48页 逗号表达式的一般形式:表达式表达式1,表达式,表达式2,表达式,表达式n 求解过程为:从左至右求各表达式的值,结果取最右边表达式的值。如:a=3 5,a 4 表达式值为60 (a=3 5,a 4),a+5 表达式值为20 x=(a=3,6 3)x的值为18 x=a=3,6 a x的值为3例例2.5main()int m,n,i=5,j=6;m=+i;n=j+;printf(“%d,%d,%d,%dn”,i,j,m,n);2.10 逗号运算符和逗号表达式逗号运算符和逗号表达式(p22)运行结果:6,7,6,6第27页/共48页例例2.6#include“stdio.h”main()int i=1;printf(“%d,%d,%d,%dn”,i,i+,i+,i+);运行结果:运行结果:4,3,2,1 函数调用时函数调用时,函数参数的求值顺序函数参数的求值顺序 从右至左从右至左第28页/共48页2.11.关系运算符和关系表达式关系运算符和关系表达式(p18)1)关系运算符及其优先顺序 C有6种关系运算符:优先级相同(低)优先级相同(高)=!=第29页/共48页 关系表达式是用关系运算符将两个以上算术、关系、逻辑、赋值或字符表达式连接起来的式子。关系表达式的值是一个逻辑值,“真”(非0)或“假”(0)。例如:ca+b 等效于 c(a+b)ab!=c (ab)!=ca=bc a=(bc a=(bc)2)关系表达式关系表达式(p18)第30页/共48页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 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式(p19)第31页/共48页 逻辑表达式是用逻辑运算符将关系表达式或逻辑量连接起来的式子。逻辑表达式的值是一个逻辑量“真”(非0)或“假”(0)。3)逻辑表达式求解逻辑表达式求解 a&b&c若a为假,则表达式值为假。a b c若a为真,则表达式值为真。53&283&2)为 真,则 表 达 式 值 为真。4)C编译在求表达式的值的过程中遵循”最少计算步骤最少计算步骤”原则!如:main()int a=1,b=2,m=0,n=0,k;k=(n=ba)|(m=aa为1,则m=am,则照字符串原样输出;若串长m,则左边补空格。%-ms类似%ms,若串长m,则字符串向左靠,右边补空格。%m.ns靠右输出字符串左边的n个字符,左补空格。(n m)%-m.ns靠左输出字符串左边的n个字符,右补空格。(n m)%f 以小数形式输出实数。%m.nf输出宽度为m,其中小数为n位。若数值长度 0。#include“math.h”main()float a,b,c,d,x1,x2,p,q;scanf(“a=%f,b=%f,c=%f”,&a,&b,&c);d=b b-4 a c;p=-b/(2 a);q=sqrt(d)/(2 a);x1=p+q;x2=p-q;printf(“x1=%5.2f n x2=%5.2f n”,x1,x2);运行情况:运行情况:a=1,b=3,c=2 表示按 Enter 键注意注意按格式输入数据若此句改成若此句改成:scanf(“%f%f%f”,&a,&b,&c);则输入格式为则输入格式为:1 3 2 x1=-1.00 x2=-2.00第46页/共48页本章习题:P34 一、填空 2.7 2.8 2.18 2.19 2.20 2.22二、选择 2.24 2.26 2.30 2.31 2.34 2.35 2.36 2.38三、上机题 2.41 2.42 2.43第47页/共48页感谢您的欣赏!第48页/共48页