版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章 最简单的C程序设计-顺序程序设计,2,3.1 顺序程序设计举例 3.2 数据的表现形式及其运算 3.3 C语句 3.4 数据的输入输出,主要内容,3,3.1 顺序程序设计举例,例3.1将华氏温度转化为摄氏温度。,分析:利用上面的公式,其中f代表华氏温度,c代表摄氏温度 例3.2见课本38页,4,3.2数据的表现形式及其运算,3.2.1 常量和变量,5,概念,在程序运行过程中,其值不能被改变的量。,分类,字面常量(直接常量): 12 -44.6 a Hello! 符号常量:用一个标识符代表一个常量。,字符串常量,符号常量的定义,格式:#define 常量名 字面常量 举例:#define
2、 PRICE 100 #define PI 3.14 #define C1 a,习惯上常量名用大写, 变量名用小写。,意义,1、含义清楚。 2、在需要改变一个常量时,能够做到“一改全改”。,符号常量的定义放在 函数外面。,1 常 量,6,常量举例(求某商品总价),#include #define PRICE 100 /定义符号常量 int main() int sum; sum=PRICE*20; printf(%dn,sum); return 0; ,单价符号常量,数量直接常量,7,表示方法,十进制: 123, -456, 0 八进制: 0123, -0456, 十六进制: 0 x123,
3、-0 x456,以数字0开头,以0 x开头,1) 整型常量的表示方法,分类,基本整型(数据范围与int型一样) 长整型 (在数值后面加“L(l)”, 数据范围与long int型一样),如123l,315L,类型匹配规则,一个整型常量,可以赋给能容纳下其值的整型变量,8,表示方法,十进制小数形式: 123. 34,-0.0045, 0.0 指数形式: E(e) 如0.23e2 ,-0.45e-3, 3.0+5,规范化指数形式,数字和小数点组成,2)浮点类型常量,关于分类,浮点型常量是double型的。一个浮点型常量,可以赋给一个浮点变量(float型或double型)。,9,指数形式(数符+小
4、数部分+指数部分),小数部分占的位数越多,数的有效 数字越多,精度越高.指数部分占的 位数越多,表示的数值范围越大.,浮点类型存储方式,浮点型数据在内存中是按指数形式存储的。,规范化指数形式:小数部分采用纯小数形式,且最高位不为0。,举例:3.14159在内存中的存放形式为:,10,表示方法,用单引号括起来的一个字符. a A 9 = ? ,不同的两个字符,转义字符,3)字符类型常量,语言还允许使用一种特殊形式的字符常量,就是以反斜杠 开头的转义字符。,将后面的字符转换 为另外的意义.即是 一种控制符号.,11,12,概念,4)字符串常量,用一对双引号 括起来的若干字符序列,字符串长度,字符串
5、中字符的个数。长度为0的字符串(即一个字符都没有的字符串)称为空串,表示为 (一对紧连的双引号)。,存储方式,C语言规定:在存储字符串常量时,由系统在字符串的末尾自动加一个0作为字符串的结束标志。,注意:没有专门的字符串变量。如果想将一个字符串放在变量中保存和处理,必须使用字符型数组或者字符指针,13,思考?,1、 字符串常量How do you do.和Good morning.的长度分别是多少?,2、 字符串C:msdosv6.22和I say: Goodbye! 在C语言中的字符串常量形式如何表示?,3、 字符串CHINA在内存中的实际存储形式是怎样的?占用多少个字节的内存空间?,14和
6、13,C:msdosv6.22和I say:Goodbye!,占用字节而非字节内存空间,14,注意: 1、a是字符, a是字符串。 2、 不能把一个字符串赋给一个字符变 量。如c=a、c=Hello! 都是错误的。 3、C语言中没有字符串变量,可以用字符数组来表示。,15,举例,#include int main() printf(abcbdnxyz); printf(“rlmntopqn); return 0; ,abd lmn opq,实际中,不会 这样使用!,#include int main() printf(x4Fx4Bx21n); /* 等价于printf(OK!n); */ pr
7、intf(x15 xABn); return 0; ,! ,结果:,结果:,例3.5,16,5)符号常量,格式:#define 常量名 字面常量 举例:#define PRICE 100 #define PI 3.14 #define C1 a 使用符号常量的好处: 1)含义清楚。 2)在需要改变程序中多处用到的同一个常量时,能做到”一改全改“。,17,概念,其值可以改变的量称为变量。,2、 变 量,要素,(1)变量名。每个变量都必须有一个名字变量名,变量命名遵循标识符命名规则。 (2)变量值。在程序运行过程中,变量值存储在内存中。在程序中,通过变量名来引用变量的值。,18,标识符 ident
8、ifier,1、标识符就是一个名字(如常量名、变量名、函数名)。 2、组成:只能由字母、数字、下划线组成。且第一个字符必须为字母或下划线。 3、长度:标识符的有效长度随系统而异,如果超长,则超长部分被舍弃。VC+6.0中规定最大长度为247个字符。Turbo C中的最大长度为32. 4、标识符命名的良好习惯见名知意,例如,name(姓名)、age(年龄),19,下列标识符是否合法,为什么? sum a1 b2 s_name 123 #ss a.b.c 1a8bc,思 考 ?,合法,不合法,20,变量定义,数据类型 变量名, 变量名2;,习惯上,变量名用小写字母。 常量名用大写字母。,#defi
9、ne PRICE 100,21,方式: 1、定义变量的同时赋初值(也叫变量初始化)。 格式: 数据类型 变量名=初值, 变量名2=初值2; 2、通过一个赋值语句给变量赋初值。 格式 : 变量名=初值;,变量赋初值,出现在函数体 的声明部分,出现在函数体 的执行部分,int a,b=3;,int a,b; b=3;,22,1、程序中用到的变量必须“先定义(declare),后使用”。 2、C语言的关键字不能用作变量名。 3、C语言对英文字母的大小写敏感,即同一字母的大小写,被认为是两个不同的字符。对于变量的定义而言,int i,I;是定义了两个不同的变量。 4、定义变量时,给几个变量赋相同的初值
10、, 应写成 : int a=3,b=3,c=3; 不能写成: int a=b=c=3; 5、给变量赋值时,正常情况下应给变量赋相同类型的数据。若给变量赋与其类型不同的数据时,需进行类型转换。,关于变量以及变量赋初值的几点说明,23,变量举例,include int main() int student,age; int if=adrress=1; float score=90; stadent=2; Age=20.7; printf(%d %d %d %f,if,student,age,score); return 0; ,本程序中有几处错误?,undeclared identifier,错误
11、: 1、if:为关键词 2、int if=address=1;应分别赋初值。 3、stadent:未定义的标识符,拼写错误 4、Age:未定义的标识符,大小写敏感。,24,3、常变量,常变量是指前面加const定义的变量,这种变量的特点是其值只能通过初始化给定,在其存在期里总代表着同一个值,不允许再赋值。如: const int num=10; const double PI=3.1415926; const double E=2.71828; 注意:课本42上的思考:常变量和符号常量的区别。,25,3.2.2数据类型,C语言要求在定义所有的变量时都要指定变量的类型,常量也是区分类型的。 为什
12、么用计算机运算时,要指定数据的类型呢?,26,数据类型,基本类型,整型 字符型 浮点型 布尔型,派生类型,数组类型 结构体类型 共用体类型,指针类型,空类型,单精度型 双精度型,在程序中对用到的 所有数据都必须指 定其数据类型.,?,不同类型的数据,所占 内存的字节数不同, 对 应的操作也不相同。,C的数据类型,函数类型,枚举类型,27,计算机内部的数据我们通称为量,描述一个量,我们从如下4个方面来考虑:,一个量,名字:为方便编程,以一个合法的字符串(标识符)来表征对该量的使用。,值/内容:某个时刻量的大小。根据值在程序执行过程中是否可以修改产生了常量和变量的概念。,存储地址:在内存的什么位置
13、保存该量。对于一些深层低端编程人员或者特定程序而言,地址是不可缺少的一种概念/工具。,类型: 决定了量的基本操作和性质。同地址结合,产生了空间大小和值域的概念。,对于量的访问,高级语言一般提供的是名字,而汇编中往往直接面对地址的概念来处理。,28,1、在内存中的存储方式 整型数据在内存中是以补码表示的。(参见教材P44),3.2.3 整型数据,29,例如: 求-10的补码表示(按16位存储)。,-10的原码,1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0,除符号位外各位取反,1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1,末位加1,1 1 1 1 1 1 1 1
14、 1 1 1 1 0 1 1 0,则得到-10的二进制补码的表示。,30,2、整型变量的分类,分类及取值范围,表示可以省略,各类型整型变量占用的内存字节数,随系统而异。,说明:C语言标准并没有规定各种整数类型的表示范围,只规定了long型的表示范围不能小于int类型,不同的C语言系统规定不同。,TC中的数据类型,31,32,注意:在C99中新增了一种数据类型: long long int 或 long long,一般分配8个字节,但许多C编译系统尚未实现。C标准只要求long型数据长度不短于int型,short不长于int型。,33,注意: 常量无unsigned型。但一个非负整型常量,只要它
15、的值不超过相应变量的值域(即取值范围),也可以赋给unsigned型变量。,#include int main() long int c,d=9L; unsigned int e=-3 , f; f =5; c=-6; printf(%ldn%ldn%un%u,c,d,e,f); return 0; /%ld是输出长整型数据,举例,-6 9 4294967293 5,tc运行结果,(P46),34,3.2.4、字符型数据,存储方式,以ASCII码存储,占一个字节(参见教材),类型及范围,char 大小写英文字母,数字,运算符,标点符号等,注意:字符型数据与整型数据在存储方式上的相似性使得两者之
16、间可以通用。但字符型数据的表示范围是:0255。,举例,字符变量ch中存放字符a,其ASCII码为97,在内存中以二进制形式存放,其格式如下:,0 1 1 0 0 0 0 1,ch,1、字符与字符代码,35,例 字符变量的字符形式输出和整数形式输出。 #include int main() char ch1,ch2; ch1=a; ch2=b; printf(“ch1=%c,ch2=%cn”,ch1,ch2); printf(“ch1=%d,ch2=%dn”,ch1,ch2); return 0; “%c”是输出字符时使用的格式符。,2、字符变量举例1,一个字符型数据,既可以字符形式输出,也可
17、以整数形式输出,ch1=a,ch2=bch1=97,ch2=98,程序运行结果:,36,字符类型举例2,允许对字符数据进行算术运算,此时就是对它们的ASCII码值进行算术运算,例字符数据的算术运算(参考教材的ASCII码表)。 #include void main() char ch1,ch2; ch1=a; ch2=B; /*字母的大小写转换*/ printf(ch1=%c,ch2=%cn,ch1-32,ch2+32); /*用字符形式输出一个大于256的数值*/ printf(ch1+200=%dn, ch1+200); printf(ch1+200=%cn, ch1+200); prin
18、tf(ch1+256=%dn, ch1+256); printf(ch1+256=%cn, ch1+256); ,ch1=A,ch2=b ch1+200=297 ch1+200=) ch1+256=353 ch1+256=a,程序运行结果:,37,总结:字符与字符串的区别有哪些?,定界符不同:字符常量使用单引号,而字符串常量使用双引号; 长度不同:字符常量的长度固定为1,而字符串常量的长度,可以是某个整数; 存储要求不同:字符常量存储的是字符的ASCII码值,而字符串常量,除了要存储有效的字符外,还要存储一个结束标志0。,38,3.2.5 浮点型数据,在VC中long double由8字节构成
19、 在codeblocks中由12字节构成 可用例3.3.1测试,39,例3.3.1,#include int main() printf(the length is %dn,sizeof(long double); return 0; ,40,上例是在codeblocks中实验的结果。 因此,在ANCI C中并未具体规定每种类型数据的长度、精度和数值范围。随着系统的升级和计算机硬件水平的提高,每种类型的数据的范围都会有所增大。,41,浮点型数据的舍入误差,由于浮点型变量是由有限的存储单元组成的,因此能提供的有效数字总是有限的。在有效位以外的数字将被舍去。因此可能会产生一些误差。,42,例,#i
20、nclude int main() float a,b; a=123456.789e5; b=a+20; printf(%fn,b); ,将a和b改为double类型再试试,43,3.2.6怎样确定常量的类型,整型常量:不带小数点的数值是整型常量,但应注意其有效范围。 浮点型常量:凡以小数形式或指数形式出现的实数,是浮点型常量,在内存中以指数形式存储。C编译系统中把浮点型常量都按双精度处理。,44,(一)C运算符简介 (二)算术运算符和算术表达式 (三)赋值运算符和赋值表达式 (四)逗号运算符和逗号表达式,3.2.7运算符与表达式,45,(一)、C运算符简介,详见55页!,46,基本算术运算符
21、,+ - * / %,说明,例: 5/3=1 -5/3=-1,模运算符或求余运算符,算术表达式,用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的式子。,优先级和结合性,先乘除、后加减,有括号先算括号。 自左至右,常量、变量、函数等,说明,如果一个运算符两侧的数据类型不同,先自动进行类型转换,使二者具有同一类型,然后进行运算。,两个整数相除的结果为整数,舍去小数部分。 当商为负数时,多采用“向零取整”的方法。,求余运算的两侧均应为整数 例:5%3=2,例: a*b/c-1.5+a,(二)算术运算符和算术表达式,47,自增、自减运算符,作用:自增运算符()使单个变量的值增1;
22、 自减运算符()使单个变量的值减1。,例,i=3; A) j=+i; j=i+; j=-i+;,i=i+1,i=i-1,? j,i,A) j=4 i=4 j=3 i=4 j=-3,格式: 前置:+i , -i (在使用i之前,使i的值加(减)1) 后置:i+ , i- (在使用i之后,使i的值加(减)1),+和-结合方向 是“自右至左”,48,例,i=3; A) c=(i+)+(i+); B) a=i+; b=i+; c=a+b;,? c, i,A) c=6 i=5 B) c=7 i=5,两处i值都为3,例,? i, j,i=4 j=4 表达式的值:7,自左而右组合,例,i=3; printf
23、(“%d,%d”,i,i+),?,4, 3,函数参数自右至左求值,有的系统中,从左至右求值,输出“3,3”。,49,(1) 自增、自减运算是语言特有的,常用于循环语句中,使循环控 制变量加(或减),以及指针变量中,使指针指向下(或上)一个地址。 (2) 自增、自减运算符,不能用于常量和表达式。 例如,5+、-(a+b)等都是非法的。 (3) +和-的结合方向为自右至左。(P58) (4) 如果对一个变量的自增自减运算,单独构成语句,而不是作为表达式的一部分时,前置和后置运算效果一样,都是使变量自加。 如i+;和 +i;是一样的,都是使i加。 (5) 在表达式中,连续使用同一变量进行自增或自减运
24、算时,很容易出错,所以最好避免这种用法。,说明,50,4、不同类型数据间的转换(隐式转换(自动转换),转换发生条件,运算转换-不同类型数据混合运算时 赋值转换-把一个值赋给与其类型不同的 变量时 输出转换-输出时转换成指定的输出格式 函数调用转换-实参与形参类型不一致时 转换,先转换、后运算,51,转换规则,详见教材54页,1、纵向向上的箭头表示不同类型的 转换方向(由低类型转化为高类 型),不表示转换所经的步骤。 2、横向向左的箭头表示必须的转换。,隐式转换(自动转换),52,int i; float f; double d; long e; i=2; f=2.5; d=3.9; e=3;
25、,10+a+i*f-d/e,int,double,double,double,double,思考:根据已知变量定义及赋值语句,计算以下表达式的值,并说明每一步所得结果的数据类型。,53,5、显式转换(强制转换),一般形式,(要转换成的数据类型)(被转换的表达式) 注:当被转换的表达式是一个简单表达式时,外面的一对圆括号可以缺省。,举例,float x,y; x=2.3 ; y=4.5; (int)(x+y) / 6 (int) (int)x+y / 6.5 (double),说明,强制转换得到的是所需类型的中间变量,原变量或表达式的类型不变。,54,#include void main() f
26、loat x; int i; x=3.6; i=(int)x; printf(x=%f,i=%d,x,i); ,思考:以下程序的输出结果是什么?,x=3.600000,i=3,程序运行结果:,结论:较高类型向较低类型转换时可能发生精度损失问题,55,举例:已知三角形的边长a、b、c,求三角形周长的一半。,#include void main() float a,b,c,s; a=3;b=4;c=5; s=1/2 * (a+b+c); printf(s=%8.2f,s); ,s= 0.00,程序运行结果:,?,s= 6.00,程序运行结果:,改为:1.0/2 (1/2.0) 或 (float)1
27、/2 (1/(float)2),56,3.3.1 C语言的语句 与其它高级语言一样,语言也是利用函数体中的可执行语句,向计算机系统发出操作命令。按照语句功能或构成的不同,可将语言的语句分为五类。 1.控制语句 控制语句完成一定的控制功能。语言只有条控制语句,又可细分为三种: ( 1)选择结构控制语句 if()else, switch() (2)循环结构控制语句 dowhile(), for(), while(), break, continue (3)其它控制语句 goto, return,3.3 C语句,57,2. 函数调用语句 函数调用语句由一次函数调用加一个分号(语句结束标志)构成。 例
28、如,printf(This is a C function statement.); 3. 表达式语句 表达式语句由表达式后加一个分号构成。最典型的表达式语句是,在赋值表达式后加一个分号构成的赋值语句。 例如,num=5 是一个赋值表达式,而num=5;却是一个赋值语句。 4. 空语句 空语句仅由一个分号构成。显然,空语句什么操作也不执行。 例如,下面就是一个空语句: ;,58,5. 复合语句 复合语句是由大括号括起来的一组(也可以是1条)语句构成。例如: main() /*复合语句。注意:右括号后不需要分号。*/ 复合语句的性质: (1)在语法上和单一语句相同,即单一语句可以出现的地方,也可
29、以使用复合语句。 (2)复合语句可以嵌套,即复合语句中也可出现复合语句。,59,59,#include #include void main() float a,b,c,p,s; printf(请输入三角形的三边:); scanf(%f%f%f, ,请输入三角形的三边:3 4 5 s=6.00,分析,a,b,c:表示三角形的三边。 p:中间变量。 p=(a+b+c)/2 s:三角形面积。 以上变量均为实型。,?,若输入 3 4 8 -2 -3 9,运行情况:,例3.4给出三角形的三边长,求三角形面积。,3.3.2最基本的语句-赋值语句,60,60,include void main() int
30、 num1,num2,num3,sum; float aver; printf(请输入三个整数:); scanf(%d,%d,%d,例,输入任意三个整数,求它们的和及平均值。,num1,num2,num3:表示三个整数。 sum:求和结果 aver:平均值,分析,?数据类型,请输入三个整数:3,6,10 num1=3,num2=6,num3=10 sum=19,aver= 6.33,3.0改为3可以么?,61,1、赋值运算符,简单赋值运算符:= 复合赋值运算符:+=, -=,*=,/=,%= ,简单赋值运算符的一般形式为: 变量 = 表达式 它的作用是将一个表达式的值赋给一个变量。,复合赋值运
31、算的一般格式为: 变量 双目运算符 = 表达式 复合赋值运算符 它等价于:变量 = 变量 双目运算符 (表达式)。只有当表达式简化为一个变量或一个常数时,两边的括号可以省略。,2、复合赋值运算符,62,例1,float a; int b; a=1.2; b=a*3;,? b,b=3,例2,a+=3; x*=y+8,a=a+3; x=x*(y+8),例3,a=b=5; a=7+(b=8),? a,b,a=5 ;b=5 a=15;b=8,自右而左 的结合性,3、赋值表达式,格式: 赋值表达式的值:被赋变量的值,类型转换,转换条件:当赋值运算符两侧的数据类型不一致时 转换原则:转换为被赋值变量的类型
32、。具体见P59。,63,注意:赋值表达式左侧的标识符称为“左值”;右侧的表达式称为“右值”。并不是任何对象都可以作为左值的,变量可以作为左值,而表达式和常变量不能。 赋值表达式中的“表达式”又可以是一个赋值表达式如:a=(b=5) 赋值表达式作为左值时应加括号, 如:(a=3*5)=4*3/这种写法在codeblocks是不允许的。 赋值表达式也可以包含复合的赋值运算符。 如:a+=a-=a*a 赋值表达式还可以出现在其他语句中,如输出语句和循环语句等中。,64,4、赋值过程中的类型转换,如果赋值运算符两侧的类型一致时,则直接进行赋值。 如果赋值运算符两侧的类型不一致时,但都是算数类型时,在赋
33、值时要进行类型转换。转换规则为: 1)将浮点型数据赋给整型变量时,先对浮点数取整,舍弃小数部分,然后赋予整型变量。 2)将整数数据赋值给单、双精度变量时,数值不变,但以浮点数形式存储到变量中。 3)将一个double型数据赋值给float变量时,现将双精度数转化为单精度,即支取67位有效数字,存储到float变量的4个字节中。 4)字符型数据赋给整型变量时,将字符的ASCII代码赋给整型变量。 5)将一个占字节多的整型数据赋给一个占字节数少的整型变量或字符变量时,只将其低字节原封不动地送到被赋值的变量。,65,逗号运算符和逗号表达式,逗号运算符,,,逗号表达式,表达式1,表达式2, ,表达式n
34、,说明,1、逗号表达式的求解过程为自左至右,依次计算各表达式的值,最后一个表达式的值即为整个逗号表达式的值; 2、逗号运算符的优先级最低。 3、使用逗号表达式的目的通常是想分别得到各个表达式的值,而并非一定要得到整个表达式的值。 4、常用于for循环语句中,除此以外很少使用。,66,例1,a=3 a=(3*5,a*4),? a,a=12,例2,a=3 a=3*5,a*4,? a,a=15 表达式的值为60,例3,(a=3*5,a*4),a+5,? a,a=15 表达式的值为20,67,3.4数据的输入和输出,3.4.1输入输出举例 例3.5求方程 ax2+bx+c=0 的解。a,b,c由键盘输
35、入,设b2-4ac0。 分析:,68,#include #include int main() double a,b,c,disc,x1,x2; scanf(%lf,%lf,%lf, ,69,69,说明,1、所谓输入输出是以计算机为主体而言的。 2、输入输出操作是由函数实现的。,标准输入输出函数,printf( ) scanf( ) putchar( ) getchar( ) puts( ) gets( ),预编译命令,在使用C语言库函数时,要用预编译命令#include将有关的头文件包括到用户源文件中。,举例,#include main() printf(Hello! ); ,#includ
36、e stdio.h,注:在TC环境中,若使用printf()或scanf()函数,则前面的预编译命令可以省略!在VC+环境中不能省略!,(一)、C的输入与输出,3.4.2有关数据输入输出的概念,70,70,格式,printf(格式控制字符串 ,输出列表);,说明,1、 格式控制字符串是用双撇号引起来的字符串,包括三种信息: (1)格式说明:由%和格式字符组成。 (如%d、%f) (2)普通字符:需要按原样输出的字符。 (3)转义字符: (如t、n、b、r等) 2、输出列表是需要输出的一些数据,可以是表达式。,将输出的数据转换为指定的格式输出。,1、格式输出printf函数,作用,向终端(或系统
37、默认的输出设备)输出若干个任意指定类型的数据。,71,71,例2,#include void main() int a,b; a=3; b=4; printf(输出结果为:); printf(%d %dn,a,b); printf(a=%d, b=%dn,a,b); printf(a+b=%d,a+b); ,输出结果为:3 4 a=3, b=4 a+b=7,例1,printf(sum=%d n %c, x, ch);,普通字符,格式说明,转义字符,如果x=100,ch= A ,那么下面的输出语句将输出什么结果?,输出列表,sum=100 A,72,72,格式说明必须以开始,以格式字符结束。 一
38、般形式如下: % 标志 宽度 .精度 l 格式字符,-,-,n,m,d/f/c/u/s等,长整型整数,输出数据向左靠拢,输出数据最小宽度,对实数:输出小数点位数; 对字符串:截取字符的个数,格式说明的一般形式,73,73,格式字符,格式字符 格式说明,d, i 以带符号的十进制数输出整数(正数不输出符号) c 以字符形式输出,只输出一个字符 f 以小数形式输出单、双精度数,隐含6位小数 e,E 以指数形式输出实数 o 以八进制无符号形式输出整数(不输出前导符0) x,X 以十六进制无符号形式输出整数(不输出前导符0 x) ,P81,附加格式说明字符,格式字符,74,74,1)d格式符(输出十进
39、制数) 具体用法:%d按整型数据的实际长度输出 %md m指定输出数据的宽度; 若数据位数小于m,则左端补以空格; 若数据位数大于m,则按实际位数输出; 例: a=123;b=12345; printf(%4d,%4d,a,b); %ld 输出长整型的数据 例: long a=135790; printf(“%ld”,a);正确 printf(“%d”,a); 错误 %mld 输出长整型,m指定宽度,原理同%md 注意:int型数据能用%d和%ld输出; 而long型数据只能用%ld输出,不能用%d输出.,75,75,#include main() int num1=123; long num
40、2=123456; /*用4种不同格式,输出int型数据num1的值*/ printf(num1=%d,num1=%5d,num1=%-5d,num1=%2dn, num1,num1,num1,num1); /*用3种不同格式,输出long型数据num2的值*/ printf(num2=%ld,num2=%8ld,num2=%5ldn,num2,num2,num2); printf(num1=%ldn,num1); ,格式输出举例d格式符,76,76,(2)o格式符(输出八进制整数) 具体用法:%o,%lo,%mo,%mlo 注意:输出的数值不带符号位 (3)x格式符(输出十六进制整数) 具体
41、用法:%x,%lx,%mx,%mlx 注意:输出的数值不带符号位 (4)u格式符(以十进制形式输出unsigned数据,即无符号数) 具体用法:%u, 注意:int型也可用%u来输出; unsigned型也可以用%d,%o,%x的形式输出. 例:#include stdio.h int main() unsigned int a=4294967295; int b=-2; printf(a=%d,%o,%x,%un,a,a,a,a); printf(b=%d,%o,%x,%un,b,b,b,b); ,77,77,(5) f格式符(以小数形式输出实数(单、双精度), 具体用法: %f 宽度固定不
42、变 float型:6位小数,7位有效数字 double型:6位小数,16位有效数字 %m.nf m列,n位小数,左补空格 %-m.nf m列,n位小数,右补空格 示例:#include “stdio.h” void main() double x, y; x=1111111111111.111111111; y=2222222222222.222222222; printf(%f,x+y); ,78,78,综合举例,float x,y; x=111111.111; y=222222.222; printf(%f,x+y);,333333.328125,整数部分全部输出, 小数部分输出6位,因有
43、效位数为7位,因此 后面数字不准确。,float x=123.456; printf(%f,x); printf(%10f,x); printf(%10.2f,x); printf(%.2f,x); printf(%-10.2f,x);,123.456001 123.456001 123.46 123.46 123.46,实数最常用的 两种输出格式,格式输出举例f格式符,79,79,(6)e格式符(以指数形式输出实数) %e 系统自动给定6位小数位和5位指数位(e占1位, 指数符号占1位,指数占3位);共13位 例:#include “stdio.h” void main() double f
44、=123.456; printf(%e %10e %10.2e %.2e %-10.2e,f,f,f,f,f); ,80,80,float x=123.456; printf(%e,x); printf(%10e,x); printf(%10.2e,x); printf(%.2e,x); printf(%-10.2e,x);,综合举例,1.234560e+002 1.234560e+002 1.23e+002 1.23e+002 1.23e+002,输出: 1.234560e+002,指数部分,尾数部分,格式输出举例e格式符,2 6 5,总宽度为 13,81,81,(7)g格式符(根据实数大小
45、,自动选取f或e格式中,输出宽度较小的一种,且不输出无意义的零值) 例: #include “stdio.h” void main() double f=123.468; printf(%f %e %g,f,f,f); ,82,82,(8)c格式符: %c , %mc 用来输出一个字符 注意:一个整数,只要值在0-255之间,可以采用字符形输出;反之,一个字符也可以采用整数形式输出。例: #include “stdio.h” void main() char c=a; int i=97; printf(%c,%dn,c,c); printf(%c,%dn,i,i); printf(%c,%dn
46、,i,c); ,83,83,格式输出举例c格式符,#include void main() char c=A; int i=65; printf(c=%c,%5c,%dn,c,c,c); printf(i=%d,%c,i,i); ,c=A,A,65 i=65,A,注意,在C语言中,整数可以用字符形式输出,字符数据也可以用整数形式输出。将整数用字符形式输出时,系统首先求该数与256的余数,然后将余数作为ASCII码,转换成相应的字符输出。,84,84,(9) s格式符(用于输出一个字符串) 具体用法: %s printf(%s,china); %ms 左补空格 %-ms 右补空格 %m.ns 输
47、出m列,取字符串左端n个字符,左补空格 %-m.ns 输出m列, 取字符串左端n个字符,右补空格 例:#include “stdio.h” void main() printf(%3s,%7.2s,%.4s,%-5.3sn, CHINA,CHINA,CHINA,CHINA); 输出结果: CHINA, CH,CHIN,CHI 注意:%m.ns若省略了m,%.n则取m=n,85,85,格式输出举例s格式符,#include void main() printf(%s,%5s,%-10s,Internet,Internet,Internet); printf(%10.5s,%-10.5s,%4.5
48、sn,Internet,Internet,Internet); ,Internet,Internet,Internet, Inter,Inter,Inter,输出:,系统输出字符和字符串时,不输出单引号和双引号。,注意,86,86,格式,scanf(格式控制字符串 ,地址列表);,说明,1、 格式控制字符串与printf函数类似。可以包含以下三种类型 的信息: 格式说明:与printf类似,以开始,以一个格式字符结束; 空白字符(空格、t、n):输入多个数据时的缺省分隔符,可以省略,在输入数据时可以以任一种空白字符分隔; 普通字符(照原样输入)。 2、 “地址表列”是由若干个地址组成的列表,各
49、地址之间用逗号分隔。如变量的地址表示为: scanf(%d%d,34 3,4,int a,b; scanf(%d,%d,3 , 4 3,4,格式输入举例d格式符,注意,举例,当输入多个数据时,若各个格式说明之间没有其他字符,则系统默认使用空格键、回车键和Tab键进行间隔;若格式说明之间有其他字符,则必须照原样输入。,3 4 3,4,88,88,float a; scanf(%f,输入: 3.2,float a; scanf(%3.2f,格式输入举例f格式符,注意,举例,当输入浮点型数据时,不能规定精度。如果指定了精度,编译时不会报错,但输入的数据将不可预知。,3.200000,输出:,输入:
50、3.218,-107374176.000000,输出:,89,89,char ch1,ch2,ch3; scanf(%c%c%c,格式输入举例c格式符,注意,举例,使用格式说明符%c输入单个字符时,空格和转 义字符均作为有效字符被输入。,输入: abc,ch1=a,ch2= ,ch3=b,输出:,其中:ch2的值为空格。,90,90,%d 输入十进制整数 %o 输入八进制整数 %x 输入十六进制整数 %c 输入单个字符 %s 输入字符串,必须和数组结合; 从第一个空白字符开始,遇空格或回车符结束. %f , %e 输入实数,小数,指数皆可,二者可以互换 %ld %lo %lx 用于long型 %lf %le 用于double型 %hd %ho %hx 用于short型 %md %mx %mo %mc %mf %me 列宽m0。 %*d %*x %*o %*c %*f %*e 输入后,不赋给相应的变量。 /见课本84页例题,91,91,对scanf函数几点说明: (1) scanf中有%u (2)输入数据时,指定
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年南充职业技术学院单招职业倾向性考试题库及1套完整答案详解
- 2026年保定理工学院单招综合素质考试题库(含答案详解)
- 2026年南昌工学院单招职业倾向性考试题库附答案详解(培优b卷)
- 2026年佳木斯职业学院单招职业技能测试题库及参考答案详解1套
- 2026年北海康养职业学院单招职业技能测试题库含答案详解(黄金题型)
- 2026年信阳职业技术学院单招职业适应性测试题库附答案详解(培优b卷)
- 2026年内蒙古商贸职业学院单招职业适应性测试题库含答案详解(考试直接用)
- 2026年南充文化旅游职业学院单招职业倾向性考试题库附答案详解(考试直接用)
- 2026年兰州资源环境职业技术大学单招综合素质考试题库带答案详解(轻巧夺冠)
- 2026年克拉玛依职业技术学院单招职业适应性测试题库含答案详解(综合卷)
- 2025年海南工商职业学院单招综合素质考试题库附答案解析
- 2026中国邮政集团有限公司江门市分公司招聘备考题库及一套答案详解
- 微生物菌剂培训课件
- 围术期应激反应的麻醉调控策略
- 2026年考研法硕(非法学)专业基础398模拟卷(试卷+解析)
- 2025年江苏省连云港市中考英语试卷
- 杠铃深蹲课件
- (人教A版)选择性必修一高二数学上册 全册综合测试卷-基础篇(原卷版)
- 矿山大型设备防腐施工方案
- 淋浴房技术知识培训课件
- 人教版(2024)七年级上册英语Unit1-7各单元语法专项练习题(含答案)
评论
0/150
提交评论