C语言基本语法归纳带实例介绍(全套260p) .ppt

上传人:仙人指路1688 文档编号:2975536 上传时间:2023-03-07 格式:PPT 页数:262 大小:923KB
返回 下载 相关 举报
C语言基本语法归纳带实例介绍(全套260p) .ppt_第1页
第1页 / 共262页
C语言基本语法归纳带实例介绍(全套260p) .ppt_第2页
第2页 / 共262页
C语言基本语法归纳带实例介绍(全套260p) .ppt_第3页
第3页 / 共262页
C语言基本语法归纳带实例介绍(全套260p) .ppt_第4页
第4页 / 共262页
C语言基本语法归纳带实例介绍(全套260p) .ppt_第5页
第5页 / 共262页
点击查看更多>>
资源描述

《C语言基本语法归纳带实例介绍(全套260p) .ppt》由会员分享,可在线阅读,更多相关《C语言基本语法归纳带实例介绍(全套260p) .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

26、c=a;/*指定c为字符变量,初值为a*/也可以使被定义的变量的一部分赋初值。int a,b,c=5;/*指定a,b,c为整型变量,只对c初始化*/如果对几个变量赋予初值3,应写为:int a=3,b=3,c=3;不能写成:int a=b=c=3,初始化不是在编译阶段完成的(只有在第8章中介绍的静态存储变量和外部变量的初始化时在编译阶段完成的)。如:int a=3;相当于:int a;/*指定a为整型变量*/a=3;/*赋值语句,将3赋给a*/如:int a,b,c=5;相当于:int a,b,c;/*指定a,b,c为整型变量*/c=5;/*赋值语句,将5赋给c*/,3.7 算术运算符和算术表

27、达式,3.7.1 C运算符简介3.7.2 算术运算符和算术表达式 1.基本的算术运算符 2.算术表达式和运算符的优先级与结合性 3.强制类型转换运算符 4.自增、自减运算符 5.有关表达式使用中的问题说明,3.7.1 C运算符简介,C语言是表达式语言,除了控制语句和输入输出外几乎都是表达式。如:赋值符“”作为赋值运算符,而方括号“”作为下标运算符等。C的运算符有13类之多。,C的运算符,1.算术运算符(+,-,*,/,%,即加,减,乘,除,求余)2.关系运算符(,=,|,&)5.赋值运算符(=及其扩展赋值运算符)6.条件运算符(?,:)7.逗号运算符(,)8.指针运算符(*和&)9.求字节数运

28、算符(sizeof)10.强制类型转换运算符(类型)11.分量运算符(.)12.下标运算符()13.其他(如函数调用运算符(),运算符详见本书附录III,基本的算术运算符,四则运算:(加法运算符,或正值运算符。如35、3)(减法运算符,或负值运算符。如52、2)*(乘法运算符。如3*5)/(除法运算符。如5/3)%(模运算符,或求余运算符,%两则应均为整型数据)说明:/运算如果除数或被除数中有一个为负数,则舍入的方向是不固定的。如5/3有的机器上结果为1,有的为2。但多数机器采取“向零取整”的方法,即5/3=1,-5/3=-1,取整后向零靠拢。,算术表达式和运算符的优先级与结合性,用算术运算符

29、和括号将运算对象(操作数)连接起来,符合C语法规则的式子,称C算术表达式。运算对象包括常量、变量、函数。合法的C算术表达式如:a*b/c-1.5+a 优先级:若运算对象两侧运算符的优先级不同,则先乘除后加减。结合性:若一个运算对象两侧的运算符的优先级相同,则满足结合性规则,自左向右,左结合性(运算对象先与左面的运算符结合)。,自增、自减运算符,有前置和后置两种形式:前置形式:+变量名,变量名后置形式:变量名+,变量名 功能:对变量的值进行自加1(自减1)的运算。例:语句+a;相当于执行a=a+1;前置形式运算规则:先对表达式中含有前置自增(减)运算符的变量进行自加(减)1,然后用这些变量的新值

30、参与表达式运算。后置形式运算规则:先用变量原值参与表达式运算,然后对含有后置自加(减)运算符的变量进行自加(减)1运算。,main()main()int j,i=3;int j,i=3;j=+i;(相当于i=i+1;j=i)j=i+;(相当于j=i;i=i+1)printf(“%d,%d”,i,j);printf(“%d,%d”,i,j);运行结果:4,4 运行结果:4,3(1)自增运算符()和自减运算符(),只能用于变量,不能用于常量或表达式;(2)和的结合方向为“自右至左”。考虑:若i的初值为3,那么print(“%d”,-i+)的结果 应该为多少呢?,3.8 赋值运算符和赋值表达式,1.

31、赋值运算符2.类型转换3.复合的赋值运算符4.赋值表达式,1.赋值运算符,赋值符号“”就是赋值运算符,作用是将一个数据赋给一个变量。如“a=3”的作用是执行一次赋值操作(或称赋值运算),把常量3赋给变量a。也可以将一个表达式的值赋给一个变量。如“a=3+5-8%5”,相当于把结果值5赋给变量a(“a=5”)。,2.类型转换,如果赋值运算符两侧的类型不一致,但都是数值型或字符型时,在赋值时要进行类型转换。,3.复合的赋值运算符,在赋值符“”之前加上其他运算符,可以构成复合的运算符。如:a+=3等价于a=a+3,x%=3等价于x=x%3。注意:赋值符“”右边看作一项。凡是二元运算符,都可以与赋值符

32、一起组成复合赋值符。C语言规定了10种复合赋值运算符:+=,-=,*=,/=,%=,=,&=,=,|=规则:(1)“=”后边先加括号;(2)“=”前边复制到“=”后边;,4.赋值表达式,由赋值运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式”。一般形式为:赋值表达式求解过程:将赋值运算符右侧“表达式”的值赋给左侧的变量。表达式的值就是被赋值的变量的值。上述一般形式中的“表达式”还可以是一个赋值表达式。如:a=(b=5)。所以,C语言允许连续赋值。,int a,b,c;a=b=c=0;连续使用等号时,从右向左顺序赋值:a=(b=(c=0);赋值表达式也可以包含复合的赋值运算符。如:a+

33、=a-=a*a也是一个赋值表达式。若a的初值为12,则:先进行“a-=a*a”,相当于a=a-a*a,a的值为 12-144=-132;再进行“a+=-132”的运算,相当于“a=a+(-132)”,a的值为-132-132=-264。,3.9 逗号运算符和逗号表达式,逗号运算符(又称顺序求值运算符):,逗号表达式:用逗号运算符把两个表达式连接起来的表达式。一般形式为:表达式1,表达式2,.,表达式n逗号表达式的值:表达式n的值.如:逗号表达式“3+5,6+8”的值为14。如:“a=3*5,a*4”,由于赋值运算符的优先级高于逗号运算符(逗号运算符在所有运算符中级别最低),因此应先求解a=3*

34、5,再求解a*4,得到逗号表达式的值60。,一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式,如:(a=3*5,a*4),a+5,先计算出a的值为15,由于a*4的操作并没有改变a的值,所以a+5的值为20。因此,逗号表达式最终的值为20。在许多情况下,使用逗号表达式的目的只是想分别得到各个表达式的值。逗号表达式最常用于循环(for)语句。注意:并不是任何地方出现的逗号都作为逗号运算符。例如函数参数也是用逗号来间隔的,如:printf(“%d,%d,%d”,a,b,c);,课堂作业:,2.1 指出下面哪些是合法的变量名:123 abc a+b a_b pad?12 Li_Li*P2.2

35、 a在内存中占 个字节,“a”在在内存中占 个字节.2.3 写出下面程序的运行结果:main()char ch;ch=B;/*B的ascii码的值为66*/printf(“%c,%dn”,ch,ch),1 2B 66,2.4 写出下面程序的运行结果:main()int a=10,b,c,d;int b,c;a+=6;b=(c=20,6,a+2);printf(a=%d,b=%d,c=%dn,a,b,c);,运行结果:a=16,b=18,c=20,2.5写出下面程序的运行结果:main()int a=4;int b,c;c=a+(b=2);a+=a-=a*a;printf(%d,%d,%dn,a

36、,b,c);2.6 写出下面程序的运行结果:main()int a,b,c=9;a=3,b=4;c%=a+b;printf(“%dn”,c),运行结果:-24,2,6运行结果:2,2.7 写出下面程序的运行结果:main()int i,j,m,n;i=8;j=10;m=+i;n=j+;printf(%d,%d,%d,%dn,i,j,m,n);,运行结果:9,11,9,10,2.8 写出下面程序的运行结果:main()float x=5.4;int i;i=(int)x;printf(”x=%f,i=%dn,x,i);,运行结果:x=5.400000,I=5,第四章 最简单的C程序设计顺序程序设

37、计,4.1 C语句概述4.2 赋值语句4.3 数据输入输出的概念及实现4.4 字符数据输入输出函数4.5 格式输入与输出4.6 顺序结构程序设计举例,4.1 C语句概述,与其他高级语言一样,C语言的语句用来向计算机系统发出操作指令。一个语句经编译后产生若干条机器指令。一个实际的程序应当包含若干条语句。C语句都是用来完成一定的操作任务的;声明部分的内容不应称为语句。如:int a;不是一个C语句,它不产生机器操作,而只是对变量的定义。,C程序结构,C程序,源程序文件1,源程序文件2,源程序文件n,预处理命令,全局变量声明,函数1,函数n,函数首部,函数体,局部变量声明,执行语句,.,C语句分类,

38、C语句可以分为以下5类:1.控制语句;2.函数调用语句;3.表达式语句;4.空语句;5.复合语句;,1.控制语句,完成一定的控制功能。C只有9种控制语句:if()else(条件语句)for()(循环语句)while()(循环语句)dowhile()(循环语句)continue(结束本次循环语句)break(中止switch或循环语句)switch(多分支选择语句)goto(转向语句)return(从函数返回语句)()表示条件,表示内嵌的语句。,2.函数调用语句,由一次函数调用加一个分号构成一个语句。如:printf(“This is a C statement.”);,一次函数调用,分号,3.

39、表达式语句,由一个表达式构成一个语句;最典型的是,由赋值表达式构成一个赋值语句(表达式后面加分号即构成语句)。如:a=3是一个赋值表达式,而a=3;是一个赋值语句。一个语句必须在最后出现分号。任何表达式都可以加上分号而成为语句。如:x+y;是语句,但没有意义(没有将相加之和赋给另一个变量)。表达式能构成语句是C语言的一个重要特色。C中大多数语句是表达式语句(包括函数调用语句),所以有人称C语言为“表达式语言”。,4.空语句,空语句:仅包含一个分号的语句,它什么都不做。有时用来做被转向点,或是循环语句中的循环体(循环体是空语句,表示循环体什么也不做。)如:;,5.复合语句,由大括号 括起来的语句

40、序列,称为复合语句,或是分程序。如:z=x+y;t=z/100;printf(%f,t);注意:复合语句中最后一个语句最后的分号不能忽略不写。C语言允许一行写几个语句,也可以一个语句拆开写在几行上。,4.2 赋值语句,C语言的赋值语句具有其他高级语言赋值语句的一切特点和功能,但也有不同之处:1、C语言中的赋值号“=”是一个运算符,而其它大多数语言中赋值号“=”不是运算符。2、关于赋值表达式和赋值语句的概念。其他大多数高级语言中没有“赋值表达式”这一概念。作为赋值表达式可以包括在其他表达式之中,如:if(a=b)0)t=a;(先赋值,将b的值赋给a;再判断a是 否0,若0,则执行t=a;)if(

41、a=b;)0)t=a;(不合法:if条件不能包含赋值语句),4.3 数据输入输出的概念及实现,所谓输入输出是以计算机主机为主体而言的。从计算机向外部输出设备(显屏,打印机)输出数据称为“输出”;从输入设备(键盘,磁盘)向计算机输入数据称为“输入”。C语言本身不提供输入输出语句,输入和输出操作是由函数来实现的。在C的标准函数库中提供了一些输入输出函数,例如,printf函数和scanf函数。在使用它们时,千万不要简单地认为它们是C语言的“输入输出语句”。printf和scanf不是C语言的关键字。完全可以不用printf和scanf这两个名字,而另外编两个函数,另用其它函数名。,C提供的函数以库

42、的形式存放在系统中,它们不是C语言文本中的组成部分。因此各函数的功能和名,在各种不同的计算机系统所不同。有些通用的函数(如printf和scanf等),各种计算机系统都提供,成为各种计算机系统的标准函数(标准输入输出库的一部分)。在程序编译连接时,用户程序与标准文件相连,所以在程序中可以直接使用printf和scanf函数。注意:在源程序中有printf函数,在编译时并不把它翻译成目标指令,而是在执行阶段中调用已被连接的函数库中的printf函数。,C语言函数库中有一批“标准输入输出函数”,它是以标准的输入输出设备(一般为终端设备)为输入输出对象的。其中有:putchar(输出字符)getch

43、ar(输入字符)printf(格式输出)scanf(格式输入)puts(输出字符串)gets(输入字符串),在使用标准I/O库函数时,要用预编译命令“#include”将“stdio.h”文件包括到用户源文件中。即#include“stdio.h”(或#include)。stdio.h是standart input&output的缩写,它包括了标准I/O库有关的变量定义和宏定义(有关预编译命令见第九章)。在需要使用标准I/O库中的函数时,应在程序前使用上述预编译命令,但在用printf和scanf函数时,则可以不要(只有printf和scanf例外)。预编译命令“#include”都是放在程序

44、的开头,因此这类文件被称为“头文件”。,4.4 字符数据输入输出函数,4.4.1 putchar函数(字符输出函数)4.4.2 getchar函数(字符输入函数),4.4.1 putchar函数,putchar函数的作用是向终端输出一个字符。例如:putchar(c)输出字符串变量C的值。C可以是字符型变量或整型变量。例4.1:#include stdio.hmain()char a,b,c;a=B;b=O;c=Y;putchar(a);putchar(b);putchar(c);运行结果:BOY,也可以输出控制字符,如putchar(n)输出一个换行符。如果将例4.1程序最后一行改为:put

45、char(a);putchar(n);putchar(b);putchar(n);putchar(c);putchar(n);则输出结果为:BOY,也可以输出其它转义字符,如:putchar(101)(输出字符A)putchar()(输出单引号字符)putchar(015)(输出回车,不换行,使输出的 位置移到本行开头),4.4.2 getchar函数,此函数的作用是从终端(或系统隐含指定的输入设备)输入一个字符。getchar函数没有参数,其一般形式为:getchar()函数的值就是从输入设备得到的字符。例4.2:#include stdio.h main()char c;c=getchar

46、();putchar(c);,在运行时,如果从键盘输入字aa(输入a后,按“回车”键,字符才送到内存)a(输出变量c的值a),请注意,getchar()只能接收一个字符。getchar函数得到的字符可以赋给一个字符变量或整型变量,也可以不赋给任何变量,作为表达式的一部分。例如,例4.2第4、5行可以用下面一行代替:putchar(getchar();也可以用printf函数:printf(%c,getchar();在函数中要用getchar函数,应该在函数的前面(或本文件开头)用#include stdio.h”。因为在使用标准I/O库中的函数时需要用到“stdio.h”文件中包含的一些信息。

47、,4.5 格式输入与输出,4.5.1 printf函数(格式输出函数)4.5.2 scanf函数(格式输入函数),4.5.1 printf函数,1.printf函数的一般格式2.格式字符,printf函数的一般格式,printf函数的作用是:向终端(或系统隐含指定的输出设备)输出若干个任意类型的数据。注意:putchar只能输出字符,而且只能是一个字符;而printf可以输出多个数据,且为任意类型。,一般格式:printf(格式控制,输出列表)如:printf(“%d,%c n”,i,c),格式说明:将数据转换为指定格式输出。,普通字符:即需要原样输出的字符(逗号,空格和换行符),输出列表:需

48、要输出的数据,可以是表达式。,例:printf(“a=%d_b=%d”,a,b);双引号中的字符除了“%d”和“%d”以外,还有非格式说明的普通字符“a=”、“b=”及空格“_”,它们按原样输出。若a=3,b=4,则输出为:a=3_b=4,格式字符,对不同类型的数据用不同的格式字符。常用的有以下几种格式字符:(1)d格式符(6)s格式符(2)o格式符(7)f格式符(3)x格式符(8)e格式符(4)u格式符(9)g格式符(5)c格式符,d格式符:输出十进制整数,%d:按整型数据的实际长度 输出;%md:输出m位(指定的输出字段宽度);(数据位数小于m位时左端补空格,大于m位时按实际长度输出);%

49、ld,%mld:l表示输出“长整型”数据,也可以指定输出字段宽度;一个int型数据可以用%d或%ld格式输出;注:%后面的m(位数控制)对于其它格式符也适用。,例、(表示空格)int i=123;long j=123456;printf(%d,%5d,%ld,%8ld,i,i,j,j);输出:,123,123,123456,123456,c格式符:输出一个字符,一个整数,只要它的值在0255之间,也可以用字符形式输出。在输出前,系统会将该整数作为ASCII码转换成相应的字符;反之,字符数据也可以用整数形式输出。例:4.4 main()char c=a;int i=97;printf(%c,%d

50、n,c,c);printf(%c,%dn,i,i);可以指定输出字段宽度:printf(“%3c”,c);则输出:_a,输出:a,97 a,97,s格式符:输出一个字符串,(1)%s:原样输出字符串;如:printf(“%s”,“CHINA”)输出:CHINA(2)%ms:输出字符串占m列;m全输出m,则m自动取n值,即保证n个字符正常输出。,例 4.5main()printf(%3s,%7.2s,%.4s,%-5.3sn,CHINA,CHINA,CHINA,CHINA);输出:CHINA,CH,CHIN,CHI,m自动取n值,即等价于:4.4s,f格式符:以小数形式输出实数(单/双精度),(

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号