1、C语言基本语法归纳及实例介绍计算机教学中心李雪飞第1页提 纲vC C语言概况语言概况vC C程序结构程序结构v数据类型、运算符与表示式数据类型、运算符与表示式v最简单最简单C C程序设计程序设计次序程序设计次序程序设计v选择结构程序设计选择结构程序设计v循环控制循环控制v数组数组v函数函数v指针指针第2页C C语言概况语言概况vC优点优点1)、高效)、高效2)、可移植)、可移植3)、灵活)、灵活vC缺点缺点可读性差,学习应用较难可读性差,学习应用较难。第3页C C语言概况语言概况-简单简单C C程序程序 例例1.1 main()printf(This is a C program.n);该程序
2、作用:在屏幕上输出一行信息:This is a C program.1 1、main()main()表示表示“主函数主函数”,每一个,每一个C C程序都必须有程序都必须有且只有一个主函数。且只有一个主函数。2 2、mainmain函数体由大括号函数体由大括号 括起来。括起来。3 3、语句后面有一个分号。、语句后面有一个分号。.4 4、printf()printf()是是C C语言输出函数。双引号内字符语言输出函数。双引号内字符 被被原样输出。原样输出。5 5、“n”“n”是换行符,即在输出是换行符,即在输出This is a C programThis is a C program之后换行。之
3、后换行。第4页 例例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 579v/*/中间内容表示中间内容表示“注释注释”。注释是程序员对程序某部分功效和作用所做说明,。注释是程序员对程序某部
4、分功效和作用所做说明,是给人看,对编译和运行不起作用。是给人看,对编译和运行不起作用。v%d表示输出数据类型是十进制整数类型。在输出时,该位置用对应变量表示输出数据类型是十进制整数类型。在输出时,该位置用对应变量sum值代值代替。替。第5页例例1.3输入两个整数,输出其中最大值。输入两个整数,输出其中最大值。int max(int x,int y)/*求两数最大值函数求两数最大值函数max*/int z;if(xy)z=x;else z=y;return(z);/*将将z值返回给主函数值返回给主函数main*/*返回值经过函数名返回值经过函数名max带回带回main函数调用处函数调用处*/ma
5、in()/*主函数主函数*/int a,b,c;scanf(“%d,%d”,&a,&b);/*输入输入a,b值值*/c=max(a,b);/*调用调用max函数,将实参函数,将实参a,b值给形参值给形参x,y*/printf(“max=%d”,c);/*输出最大值输出最大值*/第6页C C程序结构程序结构v、C 程序是由函数组成。一个程序是由函数组成。一个C源程序最少包源程序最少包含一个函数含一个函数(main函数:函数:它代表程序开始执行起它代表程序开始执行起始位置始位置),也能够包含一个,也能够包含一个main函数和若干其它函数和若干其它函数。所以,函数是函数。所以,函数是C程序基本单位。
6、程序基本单位。v 第7页C程序中有三种类型函数:程序中有三种类型函数:1).main():主函数主函数,每一个,每一个C程序必须且只有一个程序必须且只有一个main()函数。函数。2).开发系统提供特殊函数开发系统提供特殊函数,如,如printf()、scanf()等。等。Turbo C开发系统提供三百多个函数。开发系统提供三百多个函数。3).程序员自己设计函数程序员自己设计函数,如例,如例1.3中函数中函数max()。C函数相当于其它语言中子程序。用函数来实现特定函数相当于其它语言中子程序。用函数来实现特定功效。能够说功效。能够说C是函数式语言。程序全部工作都是由函是函数式语言。程序全部工作
7、都是由函数来完成。数来完成。C这种特征很轻易实现模块化这种特征很轻易实现模块化。C C程序结构程序结构第8页C C程序结构程序结构v、一个函数由两部分组成:、一个函数由两部分组成:()()函数说明部分函数说明部分。包含函数名、函数类型、函数属。包含函数名、函数类型、函数属性、函数参数性、函数参数(形参形参)名、形式参数类型。名、形式参数类型。v如如int max (int x,int y)函数类型函数类型 函数名函数名 函数参数类型函数参数类型 函数参数名函数参数名 函数参数类型函数参数类型 函数参数名函数参数名v()()函数体函数体。即函数说明部分下面大括弧。即函数说明部分下面大括弧.内部分
8、。内部分。假如一个函数内有多个大括弧,则最外层一对假如一个函数内有多个大括弧,则最外层一对 为函数为函数体范围。体范围。第9页函数体普通包含:函数体普通包含:变量定义。如变量定义。如例例1.3中中main函数中函数中“int a,b,c;”执行部分。由若干个语句组成。执行部分。由若干个语句组成。当然,在一些情况下也能够没有变量定义部分当然,在一些情况下也能够没有变量定义部分(比如比如例例1.1)。甚至能够既无变量定义也无执行部分,如:。甚至能够既无变量定义也无执行部分,如:dump()它是一个空函数,什么也不干,但这是正当。它是一个空函数,什么也不干,但这是正当。C C程序结构程序结构第10页
9、、一个、一个C程序程序总是从总是从main函数开始执行函数开始执行,而不论,而不论main函数在整个程序中位置怎样(函数在整个程序中位置怎样(main函数能够放在函数能够放在程序最前头,也能够放在程序最终,或在一些函数之前程序最前头,也能够放在程序最终,或在一些函数之前在另一些函数之后)。在另一些函数之后)。、C程序书写格式自由,一行内能够写几个语句,程序书写格式自由,一行内能够写几个语句,一个语句能够分写在多行上。一个语句能够分写在多行上。C程序没有行号程序没有行号,也不象,也不象fortran或或cobol那样严格要求书写格式那样严格要求书写格式(语句必须从某语句必须从某一列开始书写一列开
10、始书写)。C C程序结构程序结构第11页、每个语句和数据定义最终必须有一个分号。分号是、每个语句和数据定义最终必须有一个分号。分号是C语句必要组成部分。比如:语句必要组成部分。比如:c=a+b;分号不可少分号不可少。即。即使是程序中最终一个语句也应包含分号使是程序中最终一个语句也应包含分号(这是和这是和pascal语言不一样语言不一样)。、C语言本身语言本身没有输入输出语句没有输入输出语句。输入和输出操作是。输入和输出操作是由库函数由库函数scanf和和printf等函数来完成。等函数来完成。C对输入输出实对输入输出实施施“函数化函数化”。、能够用、能够用/*/对对C程序中任何部分作注释。能够
11、程序中任何部分作注释。能够增加程序可读性。增加程序可读性。C C程序结构程序结构第12页程序开发过程程序开发过程v v C源代源代码码编编译译程程序序目标目标代码代码链链接接程程序序可可执执行行代代码码库库C源代源代码码编编译译程程序序目标目标代码代码第13页数据类型、运算符与表示式数据类型、运算符与表示式第14页3.1 信息在计算机中存放与表示v计算机基本功效是进行数据计算和加工处理,程序和数据在计算机存放是用二进制形式表示。v数与字符是自然信息与计算机二进制信息中转步骤。v数制:就是用一组固定数字和一套统一规则来表示数据方法。日常使用十进制(逢十进一)机器内部二进制(逢二进一)其它惯用数制
12、:八进制,十六进制第15页不一样数制之间对应表示十进制decimal二进制binary八进制octal十六进制hexdecimal000011112102231133410044510155611066711177第16页十进制decimal二进制binary八进制octal十六进制hexdecimal810008910019101010111011121100131101141110151111161000010ABCDEF201011121314151617第17页数制间转换v1.二、八、十六进制转换为十进制按权展开法。例:(101.11)2=122+021+120+12-1+12-2 =
13、(5.75)10(127.4)8=182+281+780+42-1 =(87.5)10第18页数制间转换v2.十进制转换为二、八、十六进制整数部分:除R取余法(先余为低,后余为高)小数部分:乘R取整法(先整为高,后整为低)转换精度问题例:(4.6875)10=(?)2 结果:(100.1011)2(87.5)10=(?)8 结果:(127.47)8 第19页数制间转换v3.二进制与八、十六进制之间转换八、十六进制转换为二进制一分为三、一分为四例:(23.54)8=(010011.101100)2 =(10011.1011)2(13.B)16=(00010011.1011)2 =(10011.1
14、011)2二进制转换为八、十六进制合三为一、合四为一第20页3.2 3.2 C数据类型v数据结构指是数据组织形式。v不一样计算机语言所允许定义和使用数据结构是不一样。v处理同一类问题,假如数据结构不一样,算法也会不一样。v所以,我们应该综合考虑算法和数据结构,选择最正确数据结构和算法。数据结构+算法=程序v对程序当中所用到全部数据都必须指定其数据类型。vC语言数据结构是以数据类型形式出现。第21页C数据类型以下:第22页3.2 3.2 常量与变量v3.2.1 常量和符号常量v3.2.2 变量第23页3.2.1 常量和符号常量v在程序运行过程中,其值不能被改变量称为常量。v常量分为:(1)整型常
15、量;如12,0,3等;(2)实型常量;如4.6,1.23等;(3)字符常量;如a,d等;(将在后面小节中详细讲解)v常量普通从其字面形式即可判别,这种常量称为字面常量或直接常量。v也能够用一个标识符代表一个常量。如例3.1第24页例 3.1 符号常量使用。#define PRICE 30main()int num,total;num=10;total=num*PRICE;printf(“total=%d”,total);程序中用#define 命令行定义PRICE代表常量30,今后凡在本文件中出现PRICE都代表30,能够和常量一样进行运算。程序运行结果为:total=300第25页符号常量v
16、用一个标识符代表一个常量,称为符号常量,即标识符形式常量。v注意:符号常量不一样于变量。符号常量值在其作用域(例3.1中即为main()函数)内不能被改变,也不能被再次赋值。如:在主函数main中再次用“PRICE=40”语句对PRICE赋值是错误。v为了方便区分符号常量与变量,习惯上符号常量名大写,变量名小写。第26页使用符号常量好处(1)含义清楚。定义符号常量名时应考虑“见名知意”,在一个规范程序中不提倡使用很多常数,如:sum=15*30*23.5*43.在检验程序时搞不清各个常数终究代表什么。应尽可能使用“见名知意”变量名和符号常量。(2)在需要改变一个常量时能够做到“一改全改”。比如
17、,在程序中多处用到某物品价格,假如价格用常数表示,则在价格进行调整时,需要在程序中作多处修改;若使用符号常量PRICE代表价格,则只需在定义该符号常量处作一次修改即可。如:#define PRICE=35 第27页3.2.2 变量v其值能够改变量称为变量。一个变量应该有一个名字,在内存中占据一定存放单元。在该存放单元中存放该变量值。v注意:变量名与变量值区分。3a变量名(一个符号地址,在对程序编译时系统分配给它一个内存地址)变量值(在程序中对变量取值,实际上是经过变量名找到对应内存地址,从其存放单元中读取数据)存放单元第28页v变量使用是程序设计中心步骤之一,应掌握:(1)变量定义:某一时刻值
18、是确定,不一样时刻可能取不一样值,其改变是不连续。(2)变量两个要素 变量名:它是一个标识符,代表一定内存存放单元,存放单元有一个地址。C语言以“&变量名”表示变量地址。变量值:它存放在对应存放单元中,C语言在使用变量名时,实际上是在使用存放单元中存放变量值。第29页变量命名规则v变量命名符合普通标识符(名字)命名规则。(1)“字母数字串”;以字母开头,后边跟以字母或者数字,下划线等同于字母。(汉字看作字母,但编程时尽可能防止使用汉字,因为汉字兼容性不好)(2)提议长度不超出8个字符(可移植性要求);(3)区分大小写(普通使用小写字母);(4)尽可能做到“见名知意”,防止使用代数符号(如a,b
19、);(5)不能有空格,不能有小数点。第30页变量强制订义v在C语言中,要求对全部用到变量作强制订义,就是“先定义,后使用”。这么做目标是:(1)凡是没有被事先定义,不作为变量名,这就能确保程序中变量名使用正确;(2)每一个变量被指定为一确定类型,在编译时就能为其分配对应存放单元;(3)制订每一变量属于一个类型,这就便于在编译时,据此检验该变量所进行运算是否正当。第31页3.3 3.3 整型数据v3.3.1 整型常量表示方法v3.3.2 整型变量v3.3.3 整型常量类型 第32页3.3.1 整型常量表示方法v整形常量即整常数。C整常数可用以下三种形式表示:(1)十进制整数。如123、-456、
20、0 (2)八进制整数。以0开头数是八进制数。如0123表示八进制数123,即(123)8,等于十进制数83(18228138083)。-011表示八进制数-11,即十进制数-9。(3)十六进制整数。以0 x开头数是16进制数。如0 x123,代表16进制数123。第33页3.3.2 整型变量v1.整型数据在内存中存放形式v2.整型变量分类v3.整型变量定义v4.整型数据溢出第34页整型变量分类v(1)基本型,以int表示。v(2)短整型,以short int表示,或以short表示。v(3)长整型,以long int表示,或以long表示。v(4)无符号型,以存放单元中全部二进位(bit)存放
21、数本身,而无须空出最高位作为符号位。无符号型中又分为无符号整型、无符号短整型和无符号长整型,分别以unsigned int,unsigned short,unsigned long表示。v 假如整量在内存中占2个字节(16位),则int型变量数范围为-3276832767。而unsigned int型变量数范围为065535.第35页各类数据所占内存字节数vC标准没有详细要求以上各类数据所占内存字节数,只要求long型数据长度不短于int型,short型不长于int型。详细怎样实现,有各计算机系统自行决定。v通常做法是:把long定为32位,把short定为16位,而int能够是16位,也能够
22、是32位。v在微机上用long型能够得到大范围整数,但同时会降低运算速度,所以不要随便使用long型。第36页整型变量定义v前面已提到,C要求在程序中全部用到变量都必须在程序中指定其类型,即“定义”。这和BASIC,FORTRAN不一样,而和PASCAL相类似。比如:vint a,b;(指定变量a,b为整型)unsigned short c,d;(指定变量c,d为无符号短整型)long e,f(指定变量e,f为长整型)v对变量定义,普通是放在一个函数开头部分申明部分,变量作用域是整个函数;也能够放在函数中某一分程序内,但变量作用域只限于该分程序内(这将在第8章介绍)。第37页例3.2 整型变量
23、定义与使用main()int a,b,c,d;/*指定a,b,c,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型数据进行加减运算。第38页3.4 3.4 实型数据v3.4.1 实型常量表示方法v3.4.2 实型变量v3.4.3 实型常量类型第39页3.4.1 实型常量表示方法v实数在C语句中又称为浮点数。实数有两种表示形式:
24、(1)十进制数形式。它由数字和小数点组成(注意必须有小数点)。0.123,.123,123.0,123.,0.0都是十进制数形式。(2)指数形式。如123e3或123E3都代表123103。但注意字母e(或E)之前必须有数字,且e后面指数必须为整数,如e3,2.1e3.5,.e3,e等都不是正当指数形式。第40页3.4.2 实型变量v1.实型数据在内存中存放形式v2.实型变量分类v3.实型数据舍入误差第41页3.4.2 实型变量v1.实型数据在内存中存放形式v2.实型变量分类v3.实型数据舍入误差第42页3.5 3.5 字符型数据v3.5.1 字符常量v3.5.2 字符变量v3.5.3 字符数
25、据在内存中存放形式v3.5.4 字符串常量第43页3.5.1 字符常量C字符常量是用单引号括起来一个字符。如a,D,?等都是字符常量。注意,a和A是不一样字符常量。v除了以上形式字符常量外,C还允许用一个特殊字符常,就是以一个“”开关字符序列。比如,前面已经碰到过,在printf函数中n,它代表一个“换行”符,这种非显示字符难以用普通形式字符表示,故要求用这种特殊形式表示。v这类特殊字符称为“转义字符”。第44页转义字符va.控制字符:t 水平制表(跳到下一个tab位置);r 回车;n 换行;b.疑难字符:单引号字符 反斜杠字符c.指定ASCII码对应字符:格式1:xhh:1到2位十六进制数A
26、SCII码对应字符如:x42表示字符“B”;格式2:ddd:1到3位八进制数ASCII码对应字符 如:102一样表示字符“B”;第45页3.5.2 字符变量字符型变量用来存放字符常量,注意只能放一个字符,不要认为在一个字符变量中能够放一个字符串(包含若干字符)。字符变量字义以下:char c1,c2;它表示c1和c2为字符型变量,各能够放一个字符。所以能够用下面语句对c1,c2赋值:c1=a;c2=b v普通以一个字节来存放一个字符,或者说一个字符变量在内存中占一个字节。第46页3.5.3 字符数据在内存中存放形式v将一个字符常量放到一个字符变量中,并不是把该字符本身放到内存单元中,而是将该字
27、符ASCII码放到存放单元中,而且以二进制形式存放。比如:执行赋值语句c1=a;c2=b;字符aASCII码为97,b为98,在内存中变量c1,c2值如图所表示:v既然在内存中,字符数据以ASCII码存放,它存放形式就与整数存放类似,这使得字符型数据和整型数据之间能够通用。9798c1c20110000101100010c1c2第47页字符型数据和整型数据通用性v一个字符数据既能够以字符形式输出,也能够以整数形式输出。v两种通用形式输出;以字符形式输出时,需要先将存放单元中ASCII码转换成对应字符,然后输出;以整数形式输出时,直接将ASCII码作为整数输出。v对字符数据进行算术运算;相当于对
28、它们ASCII码进行整数算术运算。v相互赋值;字符数据与整型数据能够相互赋值。第48页两种通用形式输出 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第49页对字符数据进行算术运算例3.7 大小写字母转换。main()char c1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;pr
29、intf(“%c%c”,c1,c2);运行结果为:A BaASCII码为97,A为65;b为98,B为66。从ASCII代码表中能够发觉:每一个小写字母比它对应大写字母ASCII码大32。C语言允许字符数据与整数直接进行算术运算。第50页相互赋值v字符数据与整型数据能够相互赋值。main()int i;char c;i=a;c=97;printf(“%c,%dn”,c,c);printf(“%c,%dn”,i,i);运行结果:a,97 a,97第51页3.5.4 字符串常量前面已提到,字符常量是由一对单引号括起来单个字符。C语言除了允许使用字符常量外,还允许使用字符串常量。字符串常量是一对双引
30、号括起来字符序列。如:“How do you do.”,“CHINA”,“$123.45”都是字符串常量。能够输出一个字符串,如printf(How do you do.);第52页v不要将字符常量与字符串常混同。a是字符常量,“a”是字符串常量,二者不一样。v假设C被指定为字符变量:char c;c=a;是正确;而 c=“a”;是错误。c=“CHINA”,也是错误。v不能把一个字符串赋给一个字符变量。终究为何c=a就是正确,而c“a”就错了呢?第53页3.6 3.6 变量赋初值v程序中常需要对一些变量预先设置初值。C语言允许在定义变量同时使变量初始化。vint a=3;/*指定a为整型变量,
31、初值为3*/float f=3.56;/*指定f为实型变量,初值为3.56*/char c=a;/*指定c为字符变量,初值为a*/v也能够使被定义变量一部分赋初值。int a,b,c=5;/*指定a,b,c为整型变量,只对c初始化*/v假如对几个变量赋予初值3,应写为:int a=3,b=3,c=3;不能写成:int a=b=c=3 第54页v初始化不是在编译阶段完成(只有在第8章中介绍静态存放变量和外部变量初始化时在编译阶段完成)。v如:int a=3;相当于:int a;/*指定a为整型变量*/a=3;/*赋值语句,将3赋给a*/v如:int a,b,c=5;相当于:int a,b,c;/
32、*指定a,b,c为整型变量*/c=5;/*赋值语句,将5赋给c*/第55页3.7 3.7 算术运算符和算术表示式v3.7.1 C运算符介绍v3.7.2 算术运算符和算术表示式 1.基本算术运算符 2.算术表示式和运算符优先级与结合性 3.强制类型转换运算符 4.自增、自减运算符 5.相关表示式使用中问题说明第56页3.7.1 C运算符介绍vC语言是表示式语言,除了控制语句和输入输出外几乎都是表示式。如:赋值符“”作为赋值运算符,而方括号“”作为下标运算符等。vC运算符有13类之多。第57页C运算符1.算术运算符(+,-,*,/,%,即加,减,乘,除,求余)2.关系运算符(,=,=,!=)3.逻
33、辑运算符(!,&,|)4.位运算符(,|,&)5.赋值运算符(=及其扩展赋值运算符)6.条件运算符(?,:)7.逗号运算符(,)8.指针运算符(*和&)9.求字节数运算符(sizeof)10.强制类型转换运算符(类型)11.分量运算符(.)12.下标运算符()13.其它(如函数调用运算符()运算符详见本书附录III第58页基本算术运算符v四则运算:(加法运算符,或正值运算符。如35、3)(减法运算符,或负值运算符。如52、2)*(乘法运算符。如3*5)/(除法运算符。如5/3)%(模运算符,或求余运算符,%两则应均为整型数据)说明:/运算假如除数或被除数中有一个为负数,则舍入方向是不固定。如5
34、/3有机器上结果为1,有为2。但多数机器采取“向零取整”方法,即5/3=1,-5/3=-1,取整后向零靠拢。第59页算术表示式和运算符优先级与结合性v用算术运算符和括号将运算对象(操作数)连接起来,符合C语法规则式子,称C算术表示式。运算对象包含常量、变量、函数。v正当C算术表示式如:a*b/c-1.5+a v优先级:若运算对象两侧运算符优先级不一样,则先乘除后加减。v结合性:若一个运算对象两侧运算符优先级相同,则满足结合性规则,自左向右,左结合性(运算对象先与左面运算符结合)。第60页自增、自减运算符v有前置和后置两种形式:前置形式:+变量名,变量名后置形式:变量名+,变量名 v功效:对变量
35、值进行自加1(自减1)运算。v例:语句+a;相当于执行a=a+1;前置形式运算规则:先对表示式中含有前置自增(减)运算符变量进行自加(减)1,然后用这些变量新值参加表示式运算。后置形式运算规则:先用变量原值参加表示式运算,然后对含有后置自加(减)运算符变量进行自加(减)1运算。第61页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)自增运算符()和自减运算符(),只能用于变量,不能用于
36、常量或表示式;(2)和结合方向为“自右至左”。考虑:若i初值为3,那么print(“%d”,-i+)结果 应该为多少呢?第62页3.8 3.8 赋值运算符和赋值表示式v1.赋值运算符v2.类型转换v3.复合赋值运算符v4.赋值表示式第63页1.赋值运算符v赋值符号“”就是赋值运算符,作用是将一个数据赋给一个变量。v如“a=3”作用是执行一次赋值操作(或称赋值运算),把常量3赋给变量a。v也能够将一个表示式值赋给一个变量。如“a=3+5-8%5”,相当于把结果值5赋给变量a(“a=5”)。第64页2.类型转换v假如赋值运算符两侧类型不一致,但都是数值型或字符型时,在赋值时要进行类型转换。第65页
37、3.复合赋值运算符v在赋值符“”之前加上其它运算符,能够组成复合运算符。如:a+=3等价于a=a+3,x%=3等价于x=x%3。v注意:赋值符“”右边看作一项。v凡是二元运算符,都能够与赋值符一起组成复合赋值符。C语言要求了10种复合赋值运算符:+=,-=,*=,/=,%=,=,&=,=,|=v规则:(1)“=”后边先加括号;(2)“=”前边复制到“=”后边;第66页4.赋值表示式v由赋值运算符将一个变量和一个表示式连接起来式子称为“赋值表示式”。v普通形式为:v赋值表示式求解过程:将赋值运算符右侧“表示式”值赋给左侧变量。表示式值就是被赋值变量值。v上述普通形式中“表示式”还能够是一个赋值表
38、示式。如:a=(b=5)。所以,C语言允许连续赋值。第67页vint a,b,c;a=b=c=0;连续使用等号时,从右向左次序赋值:a=(b=(c=0);v赋值表示式也能够包含复合赋值运算符。如:a+=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。第68页3.9 3.9 逗号运算符和逗号表示式v逗号运算符(又称次序求值运算符):,v逗号表示式:用逗号运算符把两个表示式连接起来表示式。v普通形式为:表示式1,表示式2,
39、.,表示式nv逗号表示式值:表示式n值.v如:逗号表示式“3+5,6+8”值为14。v如:“a=3*5,a*4”,因为赋值运算符优先级高于逗号运算符(逗号运算符在全部运算符中级别最低),所以应先求解a=3*5,再求解a*4,得到逗号表示式值60。第69页v一个逗号表示式又能够与另一个表示式组成一个新逗号表示式,如:(a=3*5,a*4),a+5,先计算出a值为15,因为a*4操作并没有改变a值,所以a+5值为20。所以,逗号表示式最终值为20。v在许多情况下,使用逗号表示式目标只是想分别得到各个表示式值。v逗号表示式最惯用于循环(for)语句。v注意:并不是任何地方出现逗号都作为逗号运算符。比
40、如函数参数也是用逗号来间隔,如:printf(“%d,%d,%d”,a,b,c);第70页课堂作业课堂作业:2.1 指出下面哪些是正当变量名指出下面哪些是正当变量名:123 abc a+b a_b pad?12 Li_Li *P2.2 a在内存中占在内存中占 个字节个字节,“a”在在内存中占在在内存中占 个字节个字节.2.3 写出下面程序运行结果写出下面程序运行结果:main()char ch;ch=B;/*Bascii码值为码值为66*/printf(“%c,%dn”,ch,ch)1 2B 66第71页2.4 写出下面程序运行结果写出下面程序运行结果:main()int a=10,b,c,d
41、;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第72页2.5写出下面程序运行结果写出下面程序运行结果:main()int a=4;int b,c;c=a+(b=2);a+=a-=a*a;printf(%d,%d,%dn,a,b,c);2.6 写出下面程序运行结果写出下面程序运行结果:main()int a,b,c=9;a=3,b=4;c%=a+b;printf(“%dn”,c)运行结果:运行结果:-24,2,6运行结果:运行结果:2第73页2.7 写出下面程序运行结果写出下面
42、程序运行结果: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第74页2.8 写出下面程序运行结果写出下面程序运行结果:main()float x=5.4;int i;i=(int)x;printf(”x=%f,i=%dn,x,i);运行结果:运行结果:x=5.400000,I=5第75页第四章第四章 最简单最简单C C程序设计程序设计次序程序设计次序程序设计第76页v4.1 C语句概述v4.2 赋值语句v4.3 数据输入输出概念及实现v4.4 字符数据输入输出函数v4.5
43、 格式输入与输出v4.6 次序结构程序设计举例第77页4.1 C语句概述v与其它高级语言一样,C语言语句用来向计算机系统发出操作指令。v一个语句经编译后产生若干条机器指令。v一个实际程序应该包含若干条语句。vC语句都是用来完成一定操作任务;申明部分内容不应称为语句。如:int a;不是一个C语句,它不产生机器操作,而只是对变量定义。第78页C程序结构C程序源程序文件1源程序文件2源程序文件n预处理命令全局变量申明函数1函数n函数首部函数体局部变量申明执行语句.第79页C语句分类vC语句能够分为以下5类:1.控制语句;2.函数调用语句;3.表示式语句;4.空语句;5.复合语句;第80页1.控制语
44、句v完成一定控制功效。C只有9种控制语句:if()else (条件语句)for()(循环语句)while()(循环语句)dowhile()(循环语句)continue (结束此次循环语句)break (中止switch或循环语句)switch (多分支选择语句)goto (转向语句)return (从函数返回语句)()表示条件,表示内嵌语句表示条件,表示内嵌语句。第81页2.函数调用语句v由一次函数调用加一个分号组成一个语句。v如:printf(“This is a C statement.”);一次函数调用分号第82页3.表示式语句v由一个表示式组成一个语句;最经典是,由赋值表示式组成一个赋
45、值语句(表示式后面加分号即组成语句)。如:a=3是一个赋值表示式,而a=3;是一个赋值语句。v一个语句必须在最终出现分号。v任何表示式都能够加上分号而成为语句。如:x+y;是语句,但没有意义(没有将相加之和赋给另一个变量)。v表示式能组成语句是C语言一个主要特色。C中大多数语句是表示式语句(包含函数调用语句),所以有些人称C语言为“表示式语言”。第83页4.空语句 空语句:仅包含一个分号语句,它什么都不做。有时用来做被转向点,或是循环语句中循环体(循环体是空语句,表示循环体什么也不做。)如:;第84页5.复合语句 由大括号括起来语句序列,称为复合语句,或是分程序。如:z=x+y;t=z/100
46、;printf(%f,t);注意:复合语句中最终一个语句最终分号不能忽略不写。C语言允许一行写几个语句,也能够一个语句拆开写在几行上。第85页4.2 赋值语句vC语言赋值语句含有其它高级语言赋值语句一切特点和功效,但也有不一样之处:1、C语言中赋值号“=”是一个运算符,而其它大多数语言中赋值号“=”不是运算符。2、关于赋值表示式和赋值语句概念。其它大多数高级语言中没有“赋值表示式”这一概念。作为赋值表示式能够包含在其它表示式之中,如:if(a=b)0)t=a;(先赋值,将b值赋给a;再判断a是否0,若0,则执行t=a;)if(a=b;)0)t=a;(不正当:if条件不能包含赋值语句)第86页4
47、.3 数据输入输出概念及实现v所谓输入输出是以计算机主机为主体而言。从计算机向外部输出设备(显屏,打印机)输出数据称为“输出”;从输入设备(键盘,磁盘)向计算机输入数据称为“输入”。vC语言本身不提供输入输出语句,输入和输出操作是由函数来实现。v在C标准函数库中提供了一些输入输出函数,比如,printf函数和scanf函数。在使用它们时,千万不要简单地认为它们是C语言“输入输出语句”。printf和scanf不是C语言关键字。完全能够不用printf和scanf这两个名字,而另外编两个函数,另用其它函数名。第87页vC提供函数以库形式存放在系统中,它们不是C语言文本中组成部分。所以各函数功效和
48、名,在各种不一样计算机系统所不一样。v有些通用函数(如printf和scanf等),各种计算机系统都提供,成为各种计算机系统标准函数(标准输入输出库一部分)。在程序编译连接时,用户程序与标准文件相连,所以在程序中能够直接使用printf和scanf函数。v注意:在源程序中有printf函数,在编译时并不把它翻译成目标指令,而是在执行阶段中调用已被连接函数库中printf函数。第88页vC语言函数库中有一批“标准输入输出函数”,它是以标准输入输出设备(普通为终端设备)为输入输出对象。其中有:putchar(输出字符)getchar(输入字符)printf(格式输出)scanf(格式输入)puts
49、(输出字符串)gets(输入字符串)第89页v在使用标准I/O库函数时,要用预编译命令“#include”将“stdio.h”文件包含到用户源文件中。即#include“stdio.h”(或#include)。stdio.h是standartinput&output缩写,它包含了标准I/O库相关变量定义和宏定义(相关预编译命令见第九章)。v在需要使用标准I/O库中函数时,应在程序前使用上述预编译命令,但在用printf和scanf函数时,则能够不要(只有printf和scanf例外)。v预编译命令“#include”都是放在程序开头,所以这类文件被称为“头文件”。第90页4.4 字符数据输入输
50、出函数v4.4.1 putchar函数(字符输出函数)v4.4.2 getchar函数(字符输入函数)第91页4.4.1 putchar函数vputchar函数作用是向终端输出一个字符。v比如:putchar(c)输出字符串变量C值。C能够是字符型变量或整型变量。v例4.1:#includestdio.hmain()chara,b,c;a=B;b=O;c=Y;putchar(a);putchar(b);putchar(c);运行结果:BOY第92页v也能够输出控制字符,如putchar(n)输出一个换行符。假如将例4.1程序最终一行改为:putchar(a);putchar(n);putcha
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100