C语言基本语法归纳.ppt
《C语言基本语法归纳.ppt》由会员分享,可在线阅读,更多相关《C语言基本语法归纳.ppt(262页珍藏版)》请在三一办公上搜索。
1、C语言基本语法归纳及实例介绍,计算机教学中心李雪飞,提 纲,C语言概况C程序的结构数据类型、运算符与表达式最简单的C程序设计顺序程序设计选择结构程序设计循环控制数组函数指针,C语言概况,C的优点1)、高效2)、可移植3)、灵活C的缺点可读性差,学习应用较难。,C语言概况-简单的C程序,例1.1 main()printf(This is a C program.n);该程序的作用:在屏幕上输出一行信息:This is a C program.,1、main()表示“主函数”,每一个C程序都必须有且只有一个主函数。2、main函数体由大括号 括起来。3、语句后面有一个分号。.4、printf()是
2、C语言的输出函数。双引号内的字符 被原样输出。5、“n”是换行符,即在输出This is a C program之后换行。,例1.2求两数之和。main()int a,b,sum;/*定义三个整型变量。(int=integer)。*/a=123;b=456;/*把常数123赋给变量a,把常数456赋给变量b*/sum=a+b;/*计算a、b之和,并把和值赋变量给sum*/printf(“Sum is%dn”,sum);/*输出sum的值*/程序的输出信息为:sum is 579/*/中间的内容表示“注释”。注释是程序员对程序某部分的功能和作用所做的说明,是给人看的,对编译和运行不起作用。%d表
3、示输出的数据类型是十进制整数类型。在输出时,该位置用对应变量sum的值代替。,例1.3输入两个整数,输出其中的最大值。,int max(int x,int y)/*求两数最大值函数max*/int z;if(xy)z=x;else z=y;return(z);/*将z的值返回给主函数main*/*返回值通过函数名max带回main函数调用处*/main()/*主函数*/int a,b,c;scanf(“%d,%d”,/*输出最大值*/,C程序的结构,、C 程序是由函数构成的。一个C源程序至少包括一个函数(main函数:它代表程序开始执行的起始位置),也可以包括一个main函数和若干其它函数。因
4、此,函数是C程序的基本单位。,C程序中有三种类型的函数:1).main():主函数,每一个C程序必须且只有一个main()函数。2).开发系统提供的特殊函数,如printf()、scanf()等。Turbo C开发系统提供三百多个函数。3).程序员自己设计的函数,如例1.3中的函数max()。C的函数相当于其它语言中的子程序。用函数来实现特定的功能。可以说C是函数式的语言。程序全部工作都是由函数来完成的。C的这种特性很容易实现模块化。,C程序的结构,C程序的结构,、一个函数由两部分组成:()函数的说明部分。包括函数名、函数类型、函数属性、函数参数(形参)名、形式参数类型。如int max(in
5、t x,int y)函数类型 函数名 函数参数类型 函数参数名 函数参数类型 函数参数名()函数体。即函数说明部分下面的大括弧.内的部分。如果一个函数内有多个大括弧,则最外层的一对 为函数体的范围。,函数体一般包括:变量定义。如例1.3中main函数中的“int a,b,c;”执行部分。由若干个语句组成。当然,在某些情况下也可以没有变量定义部分(例如例1.1)。甚至可以既无变量定义也无执行部分,如:dump()它是一个空函数,什么也不干,但这是合法的。,C程序的结构,、一个C程序总是从main函数开始执行的,而不论main函数在整个程序中的位置如何(main函数可以放在程序最前头,也可以放在程
6、序最后,或在一些函数之前在另一些函数之后)。、C程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上。C程序没有行号,也不象fortran或cobol那样严格规定书写格式(语句必须从某一列开始书写)。,C程序的结构,、每个语句和数据定义的最后必须有一个分号。分号是C语句的必要组成部分。例如:c=a+b;分号不可少。即使是程序中最后一个语句也应包含分号(这是和pascal语言不同的)。、C语言本身没有输入输出语句。输入和输出的操作是由库函数scanf和printf等函数来完成的。C对输入输出实行“函数化”。、可以用/*/对C程序中的任何部分作注释。可以增加程序的可读性。,C程序的结构
7、,程序开发过程,数据类型、运算符与表达式,3.1 信息在计算机中的存储与表示,计算机的基本功能是进行数据的计算和加工处理,程序和数据在计算机的存储是用二进制形式表示的。数与字符是自然信息与计算机二进制信息的中转环节。数制:就是用一组固定的数字和一套统一的规则来表示数据的方法。日常使用的十进制(逢十进一)机器内部的二进制(逢二进一)其它常用的数制:八进制,十六进制,不同数制之间的对应表示,10,A,B,C,D,E,F,20,10,11,12,13,14,15,16,17,数制间的转换,1.二、八、十六进制转换为十进制按权展开法。例:(101.11)2=122+021+120+12-1+12-2=
8、(5.75)10(127.4)8=182+281+780+42-1=(87.5)10,数制间的转换,2.十进制转换为二、八、十六进制整数部分:除R取余法(先余为低,后余为高)小数部分:乘R取整法(先整为高,后整为低)转换精度问题例:(4.6875)10=(?)2 结果:(100.1011)2(87.5)10=(?)8 结果:(127.47)8,数制间的转换,3.二进制与八、十六进制之间的转换八、十六进制转换为二进制一分为三、一分为四例:(23.54)8=(010011.101100)2=(10011.1011)2(13.B)16=(00010011.1011)2=(10011.1011)2二进
9、制转换为八、十六进制合三为一、合四为一,3.2 C的数据类型,数据结构指的是数据的组织形式。不同的计算机语言所允许定义和使用的数据结构是不同的。处理同一类问题,如果数据结构不同,算法也会不同。所以,我们应当综合考虑算法和数据结构,选择最佳的数据结构和算法。数据结构+算法=程序对程序当中所用到的所有数据都必须指定其数据类型。C语言的数据结构是以数据类型形式出现的。,C的数据类型如下:,3.2 常量与变量,3.2.1 常量和符号常量3.2.2 变量,3.2.1 常量和符号常量,在程序运行过程中,其值不能被改变的量称为常量。常量分为:(1)整型常量;如12,0,3等;(2)实型常量;如4.6,1.2
10、3等;(3)字符常量;如a,d等;(将在后面的小节中详细讲解)常量一般从其字面形式即可判别,这种常量称为字面常量或直接常量。也可以用一个标识符代表一个常量。如例3.1,例 3.1 符号常量的使用。,#define PRICE 30main()int num,total;num=10;total=num*PRICE;printf(“total=%d”,total);程序中用#define 命令行定义PRICE代表常量30,此后凡在本文件中出现的PRICE都代表30,可以和常量一样进行运算。程序运行结果为:total=300,符号常量,用一个标识符代表一个常量的,称为符号常量,即标识符形式的常量。
11、注意:符号常量不同于变量。符号常量的值在其作用域(例3.1中即为main()函数)内不能被改变,也不能被再次赋值。如:在主函数main中再次用“PRICE=40”语句对PRICE赋值是错误的。为了方便区分符号常量与变量,习惯上符号常量名大写,变量名小写。,使用符号常量的好处,(1)含义清楚。定义符号常量名时应考虑“见名知意”,在一个规范的程序中不提倡使用很多的常数,如:sum=15*30*23.5*43.在检查程序时搞不清各个常数究竟代表什么。应尽量使用“见名知意”的变量名和符号常量。(2)在需要改变一个常量时能够做到“一改全改”。例如,在程序中多处用到某物品的价格,如果价格用常数表示,则在价
12、格进行调整时,需要在程序中作多处修改;若使用符号常量PRICE代表价格,则只需在定义该符号常量处作一次修改即可。如:#define PRICE=35,3.2.2 变量,其值可以改变的量称为变量。一个变量应该有一个名字,在内存中占据一定的存储单元。在该存储单元中存放该变量的值。注意:变量名与变量值的区别。,3,a,变量名(一个符号地址,在对程序编译时系统分配给它一个内存地址),变量值(在程序中对变量取值,实际上是通过变量名找到相应内存地址,从其存储单元中读取数据),存储单元,变量的使用是程序设计的中心环节之一,应掌握:(1)变量的定义:某一时刻值是确定的,不同时刻可能取不同的值,其改变是不连续的
13、。(2)变量的两个要素 变量名:它是一个标识符,代表一定的内存存储单元,存储单元有一个地址。C语言以“&变量名”表示变量的地址。变量值:它存放在相应的存储单元中,C语言在使用变量名时,实际上是在使用存储单元中存放的变量的值。,变量的命名规则,变量的命名符合一般标识符(名字)的命名规则。(1)“字母数字串”;以字母开头,后边跟以字母或者数字,下划线等同于字母。(汉字看作字母,但编程时尽量避免使用汉字,因为汉字的兼容性不好)(2)建议长度不超过8个字符(可移植性要求);(3)区分大小写(一般使用小写字母);(4)尽量做到“见名知意”,避免使用代数符号(如a,b);(5)不能有空格,不能有小数点。,
14、变量的强制定义,在C语言中,要求对所有用到的变量作强制定义,就是“先定义,后使用”。这样做的目的是:(1)凡是没有被事先定义的,不作为变量名,这就能保证程序中变量名使用的正确;(2)每一个变量被指定为一确定类型,在编译时就能为其分配相应的存储单元;(3)制定每一变量属于一个类型,这就便于在编译时,据此检查该变量所进行的运算是否合法。,3.3 整型数据,3.3.1 整型常量的表示方法3.3.2 整型变量3.3.3 整型常量的类型,3.3.1 整型常量的表示方法,整形常量即整常数。C整常数可用以下三种形式表示:(1)十进制整数。如123、-456、0(2)八进制整数。以0开头的数是八进制数。如01
15、23表示八进制数123,即(123)8,等于十进制数83(18228138083)。-011表示八进制数-11,即十进制数-9。(3)十六进制整数。以0 x开头的数是16进制数。如0 x123,代表16进制数123。,3.3.2 整型变量,1.整型数据在内存中的存放形式2.整型变量的分类3.整型变量的定义4.整型数据的溢出,整型变量的分类,(1)基本型,以int表示。(2)短整型,以short int表示,或以short表示。(3)长整型,以long int表示,或以long表示。(4)无符号型,以存储单元中全部二进位(bit)存放数本身,而不必空出最高位作为符号位。无符号型中又分为无符号整型
16、、无符号短整型和无符号长整型,分别以unsigned int,unsigned short,unsigned long表示。如果整量在内存中占2个字节(16位),则int型变量数的范围为-3276832767。而unsigned int型变量数的范围为065535.,各类数据所占内存字节数,C标准没有具体规定以上各类数据所占内存的字节数,只要求long型数据长度不短于int型,short型不长于int型。具体如何实现,有各计算机系统自行决定。通常的做法是:把long定为32位,把short定为16位,而int可以是16位,也可以是32位。在微机上用long型可以得到大范围的整数,但同时会降低运
17、算速度,因此不要随便使用long型。,整型变量的定义,前面已提到,C规定在程序中所有用到的变量都必须在程序中指定其类型,即“定义”。这和BASIC,FORTRAN不同,而和PASCAL相类似。例如:int a,b;(指定变量a,b为整型)unsigned short c,d;(指定变量c,d为无符号短整型)long e,f(指定变量e,f为长整型)对变量的定义,一般是放在一个函数的开头部分的声明部分,变量的作用域是整个函数;也可以放在函数中的某一分程序内,但变量的作用域只限于该分程序内(这将在第8章介绍)。,例3.2 整型变量的定义与使用,main()int a,b,c,d;/*指定a,b,c
18、,d为整型变量*/unsigned u;/*指定u为无符号整型变量*/a=12;b=-24;u=10;c=a+u;d=b+u;printf(“a+u=%d,b+u=%dn”,c,d);运行结果为:a+u=22,b+u=-14 可以看到:不同种类的整型数据可以进行算术运算。在本例中是int型数据与unsigned int型数据进行加减运算。,3.4 实型数据,3.4.1 实型常量的表示方法3.4.2 实型变量3.4.3 实型常量的类型,3.4.1 实型常量的表示方法,实数在C语句中又称为浮点数。实数有两种表示形式:(1)十进制数形式。它由数字和小数点组成(注意必须有小数点)。0.123,.123
19、,123.0,123.,0.0都是十进制数形式。(2)指数形式。如123e3或123E3都代表123103。但注意字母e(或E)之前必须有数字,且e后面指数必须为整数,如e3,2.1e3.5,.e3,e等都不是合法的指数形式。,3.4.2 实型变量,1.实型数据在内存中的存放形式2.实型变量的分类3.实型数据的舍入误差,3.4.2 实型变量,1.实型数据在内存中的存放形式2.实型变量的分类3.实型数据的舍入误差,3.5 字符型数据,3.5.1 字符常量3.5.2 字符变量3.5.3 字符数据在内存中的存储形式3.5.4 字符串常量,3.5.1 字符常量,C的字符常量是用单引号括起来的一个字符。
20、如a,D,?等都是字符常量。注意,a和A是不同的字符的常量。除了以上形式的字符常量外,C还允许用一种特殊的字符常,就是以一个“”开关的字符序列。例如,前面已经遇到过的,在printf函数中的n,它代表一个“换行”符,这种非显示字符难以用一般形式的字符表示,故规定用这种特殊形式表示。这类特殊的字符称为“转义字符”。,转义字符,a.控制字符:t 水平制表(跳到下一个tab位置);r 回车;n 换行;b.疑难字符:单引号字符 反斜杠字符c.指定ASCII码对应的字符:格式1:xhh:1到2位十六进制数ASCII码对应的字符如:x42表示字符“B”;格式2:ddd:1到3位八进制数ASCII码对应的字
21、符 如:102同样表示字符“B”;,3.5.2 字符变量,字符型变量用来存放字符常量,注意只能放一个字符,不要以为在一个字符变量中可以放一个字符串(包括若干字符)。字符变量的字义如下:char c1,c2;它表示c1和c2为字符型变量,各可以放一个字符。因此可以用下面语句对c1,c2赋值:c1=a;c2=b 一般以一个字节来存放一个字符,或者说一个字符变量在内存中占一个字节。,3.5.3 字符数据在内存中的存储形式,将一个字符常量放到一个字符变量中,并不是把该字符本身放到内存单元中,而是将该字符的ASCII码放到存储单元中,而且以二进制形式存放。例如:执行赋值语句c1=a;c2=b;字符a的A
22、SCII码为97,b为98,在内存中变量c1,c2的值如图所示:既然在内存中,字符数据以ASCII码存放,它的存储形式就与整数的存储类似,这使得字符型数据和整型数据之间可以通用。,97,98,c1,c2,01100001,01100010,c1,c2,字符型数据和整型数据的通用性,一个字符数据既可以以字符形式输出,也可以以整数形式输出。两种通用形式的输出;以字符形式输出时,需要先将存储单元中的ASCII码转换成相应字符,然后输出;以整数形式输出时,直接将ASCII码作为整数输出。对字符数据进行算术运算;相当于对它们的ASCII码进行整数的算术运算。相互赋值;字符数据与整型数据可以相互赋值。,两
23、种通用形式的输出,main()char c1,c2;c1=97;c2=98;(等价于c1=a;c2=b;)printf(“%c%cn”,c1,c2);printf(“%d%dn”,c1,c2);,将97和98两个整数直接存放到c1和c2的内存单元中。,先将字符a 和b化成ASCII码97和98,然后放到内存单元中。,两者的作用和结果是完全相同的,程序输出如下:a b97 98,对字符数据进行算术运算,例3.7 大小写字母的转换。main()char c1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;printf(“%c%c”,c1,c2);运行结果为:A B,a的ASCII码
24、为97,A为65;b为98,B为66。从ASCII代码表中可以发现:每一个小写字母比它相应的大写字母的ASCII码大32。C语言允许字符数据与整数直接进行算术运算。,相互赋值,字符数据与整型数据可以相互赋值。main()int i;char c;i=a;c=97;printf(“%c,%dn”,c,c);printf(“%c,%dn”,i,i);运行结果:a,97 a,97,3.5.4 字符串常量,前面已提到,字符常量是由一对单引号括起来的单个字符。C语言除了允许使用字符常量外,还允许使用字符串常量。字符串常量是一对双引号括起来的字符序列。如:“How do you do.”,“CHINA”,
25、“$123.45”都是字符串常量。可以输出一个字符串,如printf(How do you do.);,不要将字符常量与字符串常混淆。a是字符常量,“a”是字符串常量,二者不同。假设C被指定为字符变量:char c;c=a;是正确的;而 c=“a”;是错误的。c=“CHINA”,也是错误的。不能把一个字符串赋给一个字符变量。,究竟为什么c=a就是正确的,而c“a”就错了呢?,3.6 变量赋初值,程序中常需要对一些变量预先设置初值。C语言允许在定义变量的同时使变量初始化。int a=3;/*指定a为整型变量,初值为3*/float f=3.56;/*指定f为实型变量,初值为3.56*/char
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 基本 语法 归纳
链接地址:https://www.31ppt.com/p-5426276.html