1、1第第一一章章C言言的的特特点点简简单单C程程序序介介绍绍算算法法结结构构化化程程序序设设计计C程程序序的的执执行行过过程程21.1C语语31.1.2 2C C语语32个关键字:(auto break case char constcontinue default do double elseenum extern float for gotoif int long register returnshort signed sizeof static structswitch typedef unsigned union voidvolatile while456C数据类型基本类型构造类型指针类
2、型空类型void定义类型typedef数值类型字符类型char枚举类型enum整 型浮点型单精度型float双精度型double短整型short长整型long整型int数组结构体struct共用体union7写写格格式式自自由由l能能进进行行位位操操作,作,能能实实现现汇汇编编语语言言的的大大部部分分功功能,能,可可以以直直接接对对硬硬件件进进行行操操作作l语语言言生生成成的的代代码码质质量量高,高,程程序序执执行行效效率率高高l可可移移植植性性好好89例1.2 /*求两数之和*/main()int a,b,sum;/*定义变量定义变量*/a=123;b=456;sum=a+b;printf(
3、“Sum is%dn”,sum);Sum is 579 10例1.3 求两数之最大值 main()int a,b,c;scanf(”%d,%d”,&a,&b);c=max(a,b);/*调用自定义函数max*/printf(“max=%dn”,c);int max(int x,int y)/*自定义函数*/int z;if(xy)z=x;else z=y;return(z);11C程程12C程程序序以以;表表示示语语句句结结束束l注注释释可可以以出出现现在在程程序序的的任任何何位位置置用用/*和和*/括括起起来,来,必必须须成成对对出出现现l书书写写格格式式C语语言言没没有有行行的的概概念,念
4、,书书写写格格式式自自由。由。习习惯惯小小写写字字母,母,缩缩进进格格式。式。131.4 程程序序的的141.1.4.4.15用用自自然然语语16图图1.5 用流程图描述算法用流程图描述算法用用流流程程图图NYz=yz=xx y?开始开始输入输入x和和y结束结束输出输出z17用用N-S结结输入输入x、y的值的值xy T F z=x z=y输出输出z的值的值18第一章第一章 1.1 1.1 引言引言算法的特性算法的特性(1 1)有穷性。)有穷性。(2 2)确定性。)确定性。(3 3)有效性。)有效性。(4 4)输入。)输入。(5 5)输出。)输出。191.1.4.4.2 2结结构构20结构化程序
5、设计的三种基本结构:结构化程序设计的三种基本结构:1)顺序结构顺序结构 传统流程图 N-S流程图 AB开始结束其中:A、B为操作框,可由一条或多条语句实现。212)选择结构选择结构(分支结构)传统流程图 N-S流程图 入口 出口ABPT FT F其中:P为分支判断条件;A、B必有一个且只有一个被执行;A、B之一可是空操作,用 表示。22 3)循环结构循环结构当型循环当型循环先判断后循环,有可能一次也不循环。入口 F T PA当P为真 A出口其中:P为循环判断条件;A为要重复执行的操作,称为循环体;23 直到型循环直到型循环先循环后判断,至少循环一次。入口 F T PA A直到P为真 出口其中:
6、P为循环判断条件;A为要重复执行的操作,称为循环体;24算法举例算法举例例:计算5!(12345)当型循环 直到型循环 25结结构构化化程程序序设设26 一一.上机过程:上机过程:编译编译正确正确正确正确正确正确有错误有错误有错误有错误编辑编辑运行运行27C程程序序的的28装载装载c程序程序编辑编辑c程序程序运行运行c程序程序(ctrl+F9)正确正确?看结果看结果(alt+F5)运行下一程序运行下一程序?是是是是否否退出退出否否2.上机过上机过程流程图程流程图:29F3F3(打开源程序)打开源程序)F2F2(保存当前源程序)保存当前源程序)F9F9(编译当前源程序)编译当前源程序)CTRL+
7、F9CTRL+F9(运行当前源程序)运行当前源程序)ALT+F5ALT+F5(查看运行结果)查看运行结果)3.编写、编写、运行运行C C程序程序时常用功时常用功能键能键30三、需要记住的三、需要记住的TCTC中一些常用功能键中一些常用功能键F1:F1:帮助。帮助。F2F2:将当前文件存盘。将当前文件存盘。F3F3:装载原有文件或给新文件命名。装载原有文件或给新文件命名。F4F4:程序运行到光标所在行。程序运行到光标所在行。F5F5:放大或缩小活动窗口切换。放大或缩小活动窗口切换。F6F6:开或关活动窗口切换。开或关活动窗口切换。F7F7:单步运行程序,跟踪进入函数内部运行。单步运行程序,跟踪进
8、入函数内部运行。F8F8:单步运行程序,不跟踪进入函数内部。单步运行程序,不跟踪进入函数内部。第一章第一章 1.3 1.3 C C语言集成开发环境语言集成开发环境31实实验验步步骤骤1.设设计计算算法,法,写写出出程程序序2.在在TurboC下下编编辑,辑,得得到到源源程程序序(.c)3.编编译,译,得得到到目目标标文文件件(.obj)4.连连接,接,得得到到可可执执行行文文件件(.exe)5.分分析析结结果果实实验验体体会会3233 数据类型、运算符与表达式数据类型、运算符与表达式 CHAPTER 234数据类型、运算符与表达式数据类型、运算符与表达式 的数据类型的数据类型v C语言提供的数
9、据结构是以数据类型形式出现的v 数据在内存中存放的情况有数据类型决定v 数据的操作要依靠运算符实现,而数据和运算符共同组成了表达式。35数据类型、运算符与表达式数据类型、运算符与表达式 的数据类型的数据类型数组类型数组类型数据类型数据类型构造类型构造类型空类型空类型指针类型指针类型双精度双精度单精度单精度实型(浮点型)实型(浮点型)字符型字符型枚举类型枚举类型基本类型基本类型整型整型结构体类型结构体类型共用体类型共用体类型363.2常量与变量常量与变量 3.2.1常量和符号常量常量和符号常量1.1.常量常量:在运行过程中,其值不能被改变的量称为常量。在运行过程中,其值不能被改变的量称为常量。分
10、类:整型实型字符字符串分类:整型实型字符字符串2.2.符号常量符号常量,用一个标识符代表的常量。,用一个标识符代表的常量。习惯上,符号常量名用大写,变量用小写,以示区别。习惯上,符号常量名用大写,变量用小写,以示区别。u1,0,123为整型常量为整型常量u 4.6,1.23为实型常量为实型常量u a,d 为字符常量为字符常量u#define PRICE 2552.A=PRICE*A+6 C=PRICE+C/1201.PRICE是标识符,符号常量是标识符,符号常量373.2.2 变变 量量1.1.变量变量:在程序运行过程中,其值可以改变的量称为变量。:在程序运行过程中,其值可以改变的量称为变量。
11、2.2.标识符标识符:用来标识变量名、符号常量名、函数名、类型名:用来标识变量名、符号常量名、函数名、类型名、数组名、文件名的有效字符序列称为标识符。、数组名、文件名的有效字符序列称为标识符。由字母、数字和下划线三种字符组成,且第一个字符由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。必须为字母或下划线。u合法的变量名如:合法的变量名如:average,abd,a,s2,1.student_name,_init2.不合法的变量名:不合法的变量名:M.D.John,1a,#33,ab3.C 3.C 语言要求对变量语言要求对变量“先定义,后使用先定义,后使用”。383.3 整型数
12、据整型数据 3.3.1 整型常量整型常量由一系列数字组成。也可带有减号,但不使用加号。由一系列数字组成。也可带有减号,但不使用加号。u十进制整数:十进制整数:123,-456,0u八进制整数:以八进制整数:以0 0开头的数据,如:开头的数据,如:-011,0123u十六进制整数:以十六进制整数:以0 x0 x开头的数据,如:开头的数据,如:0 x123 整型常量的分类根据其值的范围而决定其类型,整型常量的分类根据其值的范围而决定其类型,并可以赋值给类型相匹配的整型变量。并可以赋值给类型相匹配的整型变量。393.3.2 2402.整型变量的分类整型变量的分类 整型整型 intint 在内存中以二
13、进制形式存放,每一个整型变量在内存中占在内存中以二进制形式存放,每一个整型变量在内存中占2 2个字节。个字节。短整型短整型 以以short short intint表示或以表示或以shortshort表示,表示,一般与一般与intint占有的内存相同。占有的内存相同。长整形长整形以以long long intint表示或以表示或以longlong表示,表示,一般占有在内存中字节为一般占有在内存中字节为intint两倍。两倍。无符号型无符号型只能存放正整数,它的表示是在上述三种类型之前加上只能存放正整数,它的表示是在上述三种类型之前加上unsignedunsigned413.整型变量的定义整型变
14、量的定义对变量的定义一般放在函数的开头部分。对变量的定义一般放在函数的开头部分。例例2.1main()int a,b,c,d;unsigned 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=a+u=22,b+u=1414不同类型的数可以直接运算不同类型的数可以直接运算424.整型数据的溢出整型数据的溢出main()int a,b;a=32767;b=a+1;printf(“%d,%d”,a,b);运行结果为运行结果为 32767,-327683.3.3 整型常量的类型整型常量的类型 一个整常量,其值在一
15、个整常量,其值在-215-215215-1内可认为是内可认为是 int 型,并可赋型,并可赋值给值给 int 型和型和 long int 型变量;型变量;一个整常量,其值在一个整常量,其值在 231 231-1 范围内则认为它是范围内则认为它是 long int 型,可赋值给一个型,可赋值给一个 long int 型变量;型变量;常量中无常量中无 unsigned 型,但一个非负值的整常量可以赋给型,但一个非负值的整常量可以赋给 unsigned 型整变量;型整变量;43小数的符号位小数的符号位指数的符号位指数的符号位44u实型常量不分实型常量不分float和和double,根据范围赋值给相应
16、的变量。,根据范围赋值给相应的变量。u如:如:float a;double b;a=111111.111;b=111111.111a中实际存储的是中实际存储的是111111.1 (7位有效位有效)b中实际存储的是中实际存储的是111111.111 (全部有效全部有效)453.5 3.5 字符型数据字符型数据3.5.1字符常量字符常量1.定义定义用一对单引号括起来的单个字符,称为字符常量。例如,A、等。2.转义字符转义字符语言还允许使用一种特殊形式的字符常量,就是以反斜杠“”开头的字符序列。463.5.2 字符型变量字符型变量 字符变量的类型关键字为字符变量的类型关键字为char,一般占用一般占
17、用1字节内存单元字节内存单元。1.变量值的存储变量值的存储 将一个字符常量存储到一个字符变量中,实际上是将该将一个字符常量存储到一个字符变量中,实际上是将该字符的字符的ASCII码值(无符号整数)存储到内存单元中。码值(无符号整数)存储到内存单元中。例如:例如:char ch1,ch2;/*定义两个字符变量:定义两个字符变量:ch1,ch2*/ch1=a;ch2=b;/*给字符变量赋值给字符变量赋值*/a、b的的ASCII码为码为97、98 。2.特性特性 1)字符数据在内存中存储的是字符的字符数据在内存中存储的是字符的ASCII码;码;2)语言允许字符型数据与整型数据之间通用语言允许字符型数
18、据与整型数据之间通用,可以互相可以互相赋值。赋值。3)字符数据也可以整数形式输出。字符数据也可以整数形式输出。47 c1=97,c2=9848 例例2 大小写字母的转换。大小写字母的转换。main()char c1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;printf(“%c c2=%cn”,c1,c2);程序运行结果:程序运行结果:A B 49数据类型、运算符与表达式数据类型、运算符与表达式 字符型数据字符型数据3.5.3 字符串常量字符串常量u用双引号括起来的字符序列。用双引号括起来的字符序列。如:如:“How do you do”,“CHINA”,“a”,“$123
19、.34”等。等。u字符串可以一次输出。字符串可以一次输出。如:如:printf(“How do you do”);uC语言规定:在存储字符串常量时,由系统在字符串的语言规定:在存储字符串常量时,由系统在字符串的末尾自动加一个末尾自动加一个0作为字符串的结束标志。在内存作为字符串的结束标志。在内存中中,对字符串常量是采用字符数组表示,即用一个字符对字符串常量是采用字符数组表示,即用一个字符型数组来存放一个字符串。型数组来存放一个字符串。u注意:注意:a是字符常量,是字符常量,“a”是字符串常量,二者不是字符串常量,二者不同。同。50综上所述,字符常量综上所述,字符常量AA与字符串常量与字符串常量
20、 AA是两回事:是两回事:(1 1)定界符不同:字符常量使用单引号,而字符串常)定界符不同:字符常量使用单引号,而字符串常量使用双引号;量使用双引号;(2 2)长度不同:字符常量的长度固定为)长度不同:字符常量的长度固定为1 1,而字符串常,而字符串常量的长度,可以是某个整数;量的长度,可以是某个整数;(3 3)存储要求不同:字符常量存储的是字符的)存储要求不同:字符常量存储的是字符的ASCIIASCII码码值,而字符串常量,除了要存储有效的字符外,还要存值,而字符串常量,除了要存储有效的字符外,还要存储一个结束标志储一个结束标志00。513.6 3.6 变量赋初值变量赋初值在变量定义的同时可
21、以为变量赋初值。在变量定义的同时可以为变量赋初值。如:如:int a=3;(相当于相当于 int a;a=3;)float f=3.56;char c=a;int a,b,c=5;表示只给表示只给c赋初值。赋初值。(相当于(相当于int a,b,c;c=5;)523.7 各类数值型数据间的混合运算各类数值型数据间的混合运算u不同类型的数据(整型、实型、字符型)可进行混合运算。不同类型的数据(整型、实型、字符型)可进行混合运算。如:如:10+a+1.5 8765.1234*b u必须首先将它们转换成同一类型的数值。必须首先将它们转换成同一类型的数值。u转换原则是由低向高转换,运算结果为最高级别的
22、类型。转换原则是由低向高转换,运算结果为最高级别的类型。double double floatfloatlonglongunsignedunsignedintintchar,shortchar,short表示必须要转换表示必须要转换表示由低向高表示由低向高高高低低53数据类型、运算符与表达式数据类型、运算符与表达式 混合运算混合运算如:如:10+a+i 10+a+i*f-f-d/ed/eintdoubledoubledouble+double54例例2-52-5:已知:已知:float a=2.0;float a=2.0;intint b=6,c=3;b=6,c=3;求解:求解:a a*b/c
23、-1.5+b/c-1.5+A A+abs(-5)=+abs(-5)=?12.0/34.04.0-1.5-1.52.52.5+65(+65(intint)67.567.55 572.572.5第二章第二章 2.3 2.3 运算符和表达式运算符和表达式553.8 算术运算符和算术表达式算术运算符和算术表达式1.基本的算术运算基本的算术运算:、*、%是模运算,即求余运算,要求整数。是模运算,即求余运算,要求整数。如:如:7%4的结果是的结果是3。说明:说明:5/3的结果仍是整数,小数部分被忽略。的结果仍是整数,小数部分被忽略。5.3/3或或5/3.0的结果为的结果为double型。型。C编译系统将实
24、型常量作为双精度来处理。如果参加、编译系统将实型常量作为双精度来处理。如果参加、*、/运算的两个数中有一个数为实数,则结果是运算的两个数中有一个数为实数,则结果是double型。型。2.算术表达式算术表达式:用算术运算符将运算对象按:用算术运算符将运算对象按C的语法规则连接起的式子。的语法规则连接起的式子。例如:例如:a*b/c1.5+a优先级(算术运算)优先级(算术运算):()()*/%+在同一级别中,采取由左至右的结合方向。在同一级别中,采取由左至右的结合方向。如:如:a-b+c 相当于相当于(a-b)+c563.强制类型转换运算符可将一个表达式转换成所需类型。强制类型转换运算符可将一个表
25、达式转换成所需类型。其一般形式为:其一般形式为:(类型名)(表达式)(类型名)(表达式)例如:例如:(double)a (int)(x+y)(float)(5%3)在强制类型转换时,得到一个所需类型的中间变量,原在强制类型转换时,得到一个所需类型的中间变量,原来变量的类型未发生变化。来变量的类型未发生变化。57练练t i;float x;x=3.6;i=(int)x;printf(x=%f,i=%dn,x,i);58数据类型、运算符与表达式数据类型、运算符与表达式 运算符和表达式运算符和表达式4.自增、自减运算符自增、自减运算符使变量的值加使变量的值加1或减或减1。如:如:i,i 在使用在使用
26、i之前,先使之前,先使i的值加(减)的值加(减)1 i,i 在使用在使用i之后,再使之后,再使i的值加(减)的值加(减)1例如:例如:i的值为的值为3,则,则 j=+i;j的值为的值为4,i的值为的值为4 j=i+;j的值为的值为3,i的值为的值为4又如:又如:printf(“%d”,+i);输出结果为输出结果为4 printf(“%d”,i+);输出结果为输出结果为3单独使用时,单独使用时,i,i 等价等价59第二章第二章 2.3 2.3 运算符和表达式运算符和表达式结合性:结合性:自右向左自右向左例:例:i=2;i=2;j=-i+;j=-i+;分析:分析:(1 1)+、-、+、-是同级运算
27、符,结合方向:是同级运算符,结合方向:。(2 2)-i+i+等价于等价于 -(i+i+)(3 3)对于括号内的自增运算,要先使用对于括号内的自增运算,要先使用i i,再使再使i i增加增加1 1。运算结果:运算结果:i i的值为的值为3 3,j j的值为的值为-2-2。60练练l列列式式子子的的值值分分别别是是多多少?少?la*b/cla*b%c+1l+a*b-c-613.9 赋值运算符和赋值表达式赋值运算符和赋值表达式1.赋值运算符:赋值运算符:“=”。2.复合赋值运算复合赋值运算:在赋值符号前加上其它运算符号。在赋值符号前加上其它运算符号。+=,-=,*=,/=,%=,=,&=,=,|=例
28、如:例如:a+=3;等价于等价于a=a+3;x*=y+8;等价于等价于x=x*(y+8);x%=3;等价于等价于x=x%3;6263数据类型、运算符与表达式数据类型、运算符与表达式 运算符和表达式运算符和表达式4.赋值表达式:赋值表达式:由赋值运算符将一个变量和一个表达式连接由赋值运算符将一个变量和一个表达式连接起来的式子。起来的式子。一般形式为:一般形式为:u例如:例如:int a=12;求下列运算的结果求下列运算的结果 a aa aa a*a a a aa aa a*a=12-12 a=12-12*12=-132)12=-132)a a-132-132a aa a(-132)=(-132)
29、+(-132)=-264(-132)=(-132)+(-132)=-264a=-264a=-26464练练4;l计计算算下下列列式式子子的的值值li+=j+klj*=k=m+565数据类型、运算符与表达式数据类型、运算符与表达式 运算符和表达式运算符和表达式3.10 逗号运算符和逗号表达式逗号运算符和逗号表达式u逗号运算符又称为逗号运算符又称为“顺序求值运算符顺序求值运算符”,是所有运算符,是所有运算符中级别最低的,它将两个表达式连接起来。中级别最低的,它将两个表达式连接起来。一般形式为一般形式为:表达式表达式1,表达式,表达式2u求解过程是:先求解表达式求解过程是:先求解表达式1,再求解表达
30、式,再求解表达式2,整个逗,整个逗号表达式的值是表达式号表达式的值是表达式2的值。的值。例如:例如:a=3*5,a*4;a的值为的值为15,表达式的值为,表达式的值为60 (a=3*5,a*4),a+5;a的值为的值为15,表达式的值为表达式的值为20 又如:又如:x=(a=3,6*3);x的值为的值为18 x=a=3,6*a x的值为的值为3,表达式的值为表达式的值为186667 684.1 C4.1 C语句概述语句概述 用用C语言编写的程序称为语言编写的程序称为C语言源程序语言源程序,简称,简称C程序。程序。C语言一般由一个或若干个函数组成,而这些函数可以保存在一个语言一般由一个或若干个函
31、数组成,而这些函数可以保存在一个或几个源程序中,这些文件都以或几个源程序中,这些文件都以.C作为文件扩展名。作为文件扩展名。例例 求园的面积求园的面积#DEFINE PI=3.1415926#DEFINE PI=3.1415926main()main()float r,s;float r,s;r=20;r=20;s=r s=r*r r*PI;PI;printfprintf(“area=%f”,s);(“area=%f”,s);area=1256.637C C程序程序源程序文件源程序文件1 1源程序文件源程序文件i i源程序文件源程序文件n n预编译命令预编译命令函数函数1 1函数函数n n变量
32、申明部分变量申明部分执行部分(语句)执行部分(语句)语句是计算语句是计算机执行的最机执行的最小单位小单位69C语句分类语句分类 和其他高级语言一样和其他高级语言一样,C语言的语句也是用来向计算机发出操作命语言的语句也是用来向计算机发出操作命令的。一条语句经过编译后生成若干条机器指令。在令的。一条语句经过编译后生成若干条机器指令。在C语言中只有可执语言中只有可执行语句行语句,没有非执行语句。没有非执行语句。C语句有以下五类语句有以下五类:控制语句,完成一定的控制功能;控制语句,完成一定的控制功能;if()else (条件语句)for()(循环语句)while()(循环语句)do while()(
33、循环语句)continue (结束本次循环语句)break (中止执行switch或循环语句)Switch (多分支选择语句)goto (转向语句)return (从函数返回语句)70 函数调用语句,由一次函数调用加一个分号构成一个语句,函数调用语句,由一次函数调用加一个分号构成一个语句,如:如:printf(“This is a C statement.”);表达式语句,由一个表达式构成一个语句,表达式语句,由一个表达式构成一个语句,如:如:a=3 (是表达式,不是语句)(是表达式,不是语句)a=3;(是语句)(是语句)空语句,只有一个分号,什么也不做;空语句,只有一个分号,什么也不做;复合
34、语句,用复合语句,用 把一些语句括起来成为复合语句。相当一条语句,把一些语句括起来成为复合语句。相当一条语句,哪里有语句,哪里就可用复合语句。哪里有语句,哪里就可用复合语句。if(ab)max=a;min=b;复合语句最后一个语句中最后的分号不能忽略不写。复合语句最后一个语句中最后的分号不能忽略不写。714.2 赋值语句赋值语句u 赋值表达式后面加上分号,构成赋值语句。赋值表达式后面加上分号,构成赋值语句。u 功能:将数据赋给变量。功能:将数据赋给变量。如如:x=3.1;a=d+123+b/d;u 程序中基本的命令行必须是一个语句,表达式不能单独构成语句。程序中基本的命令行必须是一个语句,表达
35、式不能单独构成语句。例如:例如:d+123+b/d 是一个表达式是一个表达式 a=d+123+b/d;是一个赋值语句;是一个赋值语句 特点:特点:C语言中的赋值号语言中的赋值号“=”作为赋值运算符;作为赋值运算符;作为赋值表达式可以被包括在其他表达式之中;作为赋值表达式可以被包括在其他表达式之中;if(ab)0)t=a;赋值语句可以连接赋值;赋值语句可以连接赋值;a=b=c=2;724.3 数据输入输出的概念数据输入输出的概念 1.所谓输入输出是以计算机主机为主体而言的。主机向外所谓输入输出是以计算机主机为主体而言的。主机向外部设备部设备 “输出输出”,外部设备向主机,外部设备向主机“输入输入
36、”。2.C语言本身不提供输入输出语句,语言本身不提供输入输出语句,输入和输出操作是由函输入和输出操作是由函数数实现。实现。C语言通过调用四个系统函数来实现输入输出。语言通过调用四个系统函数来实现输入输出。printf(),scanf(),getchar(),putchar()3.在使用在使用C语言库函数时,要用到预编译命令语言库函数时,要用到预编译命令“#include”将将有关的有关的“头文件包括到用户源文件中。头文件包括到用户源文件中。在调用标准输入输出库函数时,文件开头应有以下预编译在调用标准输入输出库函数时,文件开头应有以下预编译命令:命令:#include 或或#include”st
37、dio.h”734.4 字符数据的输入输出字符数据的输入输出1.字符输出函数字符输出函数putchar()向终端输出一个字符。向终端输出一个字符。如:如:putchar(c););输出变量输出变量c的值,的值,c可以是字符型变量或整型变量。可以是字符型变量或整型变量。例例3.13.1#include“#include“stdiostdio.h”.h”main()main()char a,b,c;char a,b,c;a=B;b=O;c=Y;a=B;b=O;c=Y;putcharputchar(a);(a);putcharputchar(b);(b);putcharputchar(c);(c);
38、BOY74也可以输出控制字符,如也可以输出控制字符,如putchar(n)输出一个换行符。输出一个换行符。u 输出其它转义字符输出其它转义字符 putchar(101);输出输出 A;putchar();输出单引号输出单引号 putchar(015);使输出回车,不换行使输出回车,不换行 例例3.23.2#include#include.hmain()main()char a,b,c;char a,b,c;a=B;b=O;c=Y;a=B;b=O;c=Y;putcharputchar(a);(a);putcharputchar(n)(n);putcharputchar(b);(b);putcha
39、rputchar(n)(n);putcharputchar(c);(c);putcharputchar(n)(n);BOY752.字符输入函数字符输入函数getchar()从终端(或系统隐含指定的输入设备)输入一个字符。从终端(或系统隐含指定的输入设备)输入一个字符。一般形式为:一般形式为:getchar();();函数的值就是从输入设备得到的字符函数的值就是从输入设备得到的字符 例例#include“#include“stdiostdio.h”.h”main()main()char c;char c;c=c=getchargetchar();();putcharputchar(c);(c);
40、aa76 例例 从键盘上输入一个大写字母,分别用大小从键盘上输入一个大写字母,分别用大小写字母形式输出,同时输出它们的写字母形式输出,同时输出它们的asciiascii码。码。#include“#include“stdiostdio.h”.h”main()main()char c1,c2;char c1,c2;c1=c1=getchargetchar();();printfprintf(“%c,%dn”,c1,c1);(“%c,%dn”,c1,c1);c2=c1+32;c2=c1+32;printfprintf(“%c,%dn”,c2,c2);(“%c,%dn”,c2,c2);AA,65A,6
41、5a,97a,97774.5格式输入与输出函数格式输入与输出函数1.格式输出函数格式输出函数printf()按规定格式向终端输出若干个任意类型的数据。按规定格式向终端输出若干个任意类型的数据。一般格式一般格式:printfprintf(控制格式,输出列表)(控制格式,输出列表)被输出的数据,可以被输出的数据,可以是常量、变量、表达式是常量、变量、表达式用双引号括起的转换控制字用双引号括起的转换控制字符串,它包括两种信息:符串,它包括两种信息:格式说明,格式说明,由由%开始。如:开始。如:%d,%f,%c%d,%f,%c普通字符,要输出的字符普通字符,要输出的字符printf(“%d%d”,a,
42、b)格式说明格式说明 输出列表输出列表printf(“a=%d b=%d”,a,b);控制格式控制格式 输出列表输出列表78printf()格式字符格式字符79printf()附加格式说明字符附加格式说明字符例如:%ld 输出十进制长整型数%m.nf 右对齐,m位域宽,n位小数或n个字符%-m.nf 左对齐 80例例1.1.main()main()int int x1=123;x1=123;long x2=123456;long x2=123456;printfprintf(x1=%d,x1=%5d,x1=%-5d,x1=%2dn,x1,x1,x1,x1);(x1=%d,x1=%5d,x1=%
43、-5d,x1=%2dn,x1,x1,x1,x1);printfprintf(x2=%ld,x2=%8ld,x2=%5ldn,x2,x2,x2);(x2=%ld,x2=%8ld,x2=%5ldn,x2,x2,x2);程序运行结果如下:程序运行结果如下:x1=123,x1=x1=123,x1=123,x1=123123,x1=123,x1=123,x1=123x2=123456,x2=x2=123456,x2=123456,x2=123456123456,x2=123456811122a=11,b=22m=-1,177777,ffff,65535n=-13035n=12345678982e,形式输
44、出:尾数中的整数部分占一位,小数点占一位,尾数中的小数部分占5位;指数部分占4位(如e-03),共计11位。也可使用格式符%g,让系统根据数值的大小,自动选择%f或%e格式、且不输出无意义的零。83最简单的最简单的C程序设计程序设计 数据输出数据输出在使用在使用printf()函数时要注意:函数时要注意:1.有些系统要求格式字符必须用小写字母;有些系统要求格式字符必须用小写字母;2.格式控制符中,可包含转义字符;格式控制符中,可包含转义字符;3.格式说明必须以格式说明必须以“%”开头;开头;欲输出字符欲输出字符%则应在则应在“格式控制格式控制”字符串中用字符串中用连续两个连续两个%表示。表示。
45、1.5.不同的系统在实现格式输出时,输出结果可不同的系统在实现格式输出时,输出结果可能会有一些小的差别。能会有一些小的差别。842.格式输入函数格式输入函数scanf()把从输入设备输入的数值按先后顺序存入在内存的把从输入设备输入的数值按先后顺序存入在内存的地址中去。地址中去。u 一般格式一般格式:scanf(格式控制,地址列表格式控制,地址列表)例例 main()main()intint a,b,c;a,b,c;scanfscanf(“%d%d%d”,&a,&b,&c);(“%d%d%d”,&a,&b,&c);printfprintf(“%d,%d,%d”,a,b,c);(“%d,%d,%d
46、”,a,b,c);3 4 53 4 53 3,4 4,5 5 85最简单的最简单的C程序设计程序设计 数据输入数据输入scanf()格式字符格式字符86最简单的最简单的C程序设计程序设计 数据输入数据输入scanf()附加格式说明字符附加格式说明字符87在使用在使用scanf()函数时要注意:函数时要注意:uScanf()函数中的函数中的“格式控制格式控制”后面应当是变量后面应当是变量地址;地址;u如果在如果在“格式控制格式控制”字符串中除了格式说明以字符串中除了格式说明以外还有其他字符,则在输入数据时应输入与这外还有其他字符,则在输入数据时应输入与这些字符相同的字符;些字符相同的字符;u在用
47、在用“%c”格式输入字符时,格式输入字符时,空格字符和空格字符和“转转义字符义字符”都作为有效字符输入;都作为有效字符输入;u在输入数据时,遇到以下情况时该数据认为结在输入数据时,遇到以下情况时该数据认为结束:束:遇空格,或按回车;遇空格,或按回车;遇指定的宽度结束,如遇指定的宽度结束,如“3d”,只取只取3列;列;遇非法输入遇非法输入88 例例 输入三角形的边长,求三角形的面积。输入三角形的边长,求三角形的面积。area=sarea=s*(s-a)(s-a)*(s-b)(s-b)*(s-c)(s-c)s=(a+b+c)/2 s=(a+b+c)/2#include#include stdios
48、tdio.h.h#include math.h#include math.hmain()main()float a,b,c,s,area;float a,b,c,s,area;scanfscanf(%f,%f,%f,&a,&b,&c);(%f,%f,%f,&a,&b,&c);s=1.0/2 s=1.0/2*(a+b+c);(a+b+c);area=area=sqrtsqrt(s(s*(s-a)(s-a)*(s-b)(s-b)*(s-c);(s-c);printfprintf(a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2fn,a,c,b,s);(a=%7.2f,b=%7.2f,c
49、=%7.2f,s=%7.2fn,a,c,b,s);printfprintf(area=%7.2fn,area);(area=%7.2fn,area);3,4,6 a=3.00,b=4.00,c=6.00,s=6.50 area=5.334.6 顺序结构程序设计举例顺序结构程序设计举例89关系运算符和关系表达式905.1 关系运算符和关系表达式1.关系运算符关系运算符u关系运算实际上是两个量的比较,比较的结果只有两种可能:关系运算实际上是两个量的比较,比较的结果只有两种可能:真真(1)、假、假(0)。例如:例如:a 3?当当a=5时,比较的结果为真;时,比较的结果为真;当当a=1时,结果为假。时
50、,结果为假。uC语言提供语言提供6种关系运算符种关系运算符 (小于小于)(大于大于)=(大于或等于大于或等于)=相等相等 !=不等不等 912.关系表达式关系表达式u用关系运算符或者等式运算符将两个表达式连接起来,叫关系表达式。用关系运算符或者等式运算符将两个表达式连接起来,叫关系表达式。u合法的关系表达式:合法的关系表达式:ab、a+bb+c、(a=3)(b=5)、(a=3)(b=5)、ab)(b=0的值为真(在计算机中记为的值为真(在计算机中记为1)。)。u例:例:a=3,b=2,c=1,则则:(1)ab的值为的值为1(2)(ab)=c的值为真(即的值为真(即1)(3)b+cb中中d的值为