基本的程序语句.ppt

上传人:牧羊曲112 文档编号:6263632 上传时间:2023-10-11 格式:PPT 页数:127 大小:390.50KB
返回 下载 相关 举报
基本的程序语句.ppt_第1页
第1页 / 共127页
基本的程序语句.ppt_第2页
第2页 / 共127页
基本的程序语句.ppt_第3页
第3页 / 共127页
基本的程序语句.ppt_第4页
第4页 / 共127页
基本的程序语句.ppt_第5页
第5页 / 共127页
点击查看更多>>
资源描述

《基本的程序语句.ppt》由会员分享,可在线阅读,更多相关《基本的程序语句.ppt(127页珍藏版)》请在三一办公上搜索。

1、著名计算机科学家沃思提出:,程序数据结构算法,一个程序包括以下两方面内容:(1)对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构。(2)对操作的描述。即操作步骤,也就是算法。,例如:学生各科成绩及总分排队问题。,(1)成绩的存放 以数组形式(2)排队方法 算法,在此,存放数据的方式直接反映了一种程序语言的数据表达能力。,标识符就是一个名字,用于标志某个事物,由字母、数字、下划线组成且由字母或下划线开头的字符串。,标识符可用来命名变量及作为常量名、函数名、类型名、标号和其他各种用户定义的对象命名。,一个程序内不得有重复名,不允许使用与C语言系统关键字(保留字)相同的标识符。,如

2、:_sum,sum,stu_name,price30等为合法的标识符。,2.2.1 标识符,下面的标识符是不合法的:,Number-of-moves(含有非法字符-)piece flag(含有非法字符空格)5_6_7(数字开头),在定义标识符时应注意以下几点:,1.为了增加可读性,应尽量见名知意。如:sum,area,day,name等等,2.对标识符的命名应常用取简、专用取繁。,3.应尽量避免使用容易混淆的字符。例如:O(大写字母)o(小写字母)0(数字)I(大写字母)l(小写字母)1(数字)Z(大写字母)z(小写字母)2(数字),C语言关键字列表,autobreakcasechar con

3、stcontinuedefaultdo doubleelseenumextern floatforgotoif intlongregisterreturn shortsignedsizeofstatic structswitchtypedefunion unsignedvoidvolatilewhile,1C语言区分大小写,如:Price 和 price,系统会认为是两个不同的标识符。,2标识符的长度一般不超过8个字符,具体情况视不同系统而定。,设允许8个字符。,则:student_ name,student_ number,为同一名字。,2.2.2 变量和常量,变量程序执行过程中可以不断改变

4、其值的一种量。变量包括变量名和变量值。,变量名 用标识符命名,对应一定数量的内存存贮单元,其单元数视变量类型而定。,一、变量,C语言中,(1)变量须先定义,后使用,如:int student,student=30;,则若写成student=30,则未定义,编译时指出其错。,可以在说明变量时赋初值,如int i=9;,错误int a=b=c=9;,正确 int a=9,b=9,c=9;,(2)一旦变量被定义,即可在编译时为其分配相应数量的单元。,(3)一旦变量被定义,其类型便确定。则可检查其运算的合法性。,如:a%b 表示a整除以b的余,则a,b必须为整型量。,变量的一般描述方法:,类型关键字

5、变量名1,变量名2,变量名n;,基本数据类型所占字节数及其取值范围(假定机器的CPU的字长为16位),常量 程序运行过程中不能被改变的量。,一般的数据显式写法均表示常量。,一个数:20 整型常量 15.8 实型常量一个字符a 字符型常量 2 字符型常量一个字符串“fdjfk252”字符串常量,如:,二、常 量,1.整型常量,整型常量就是整型常数。,C语言提供了三种形式:,(1)十进制,如:256,308,120等,一般形式+,其中:为0至9的数码之一;方括号中的内容可有可无。如果有多位数字,第一个数字不能为0。,(2)八进制,以数字0开头表示的整数,如:0235,0146,012等.,一般形式

6、+,其中:为数码0;为0至7的数码之一;方括号中的内容可有可无。,0235=28238515710,014618248610210,012(182)1010,(3)十六进制,以0 x开头的整型数,如:0 x16,0 x128,0 x16=11662210,01281162216829610,一般形式+,其中:为数码0 x或0X;为0至9、a至f、A至F;方括号中的内容可有可无。,八进制整数和十六进制的整数的数制符是必需的 以上3种整型常量的表示形式均可冠以正号或负号 在整型常量的尾部加上字母l或L时,则为长整型常量 一个整型常量也可由它的值确定它的类型,注意:,2.实型常量,实型常量就是实数。

7、,(1)浮点记数法(十进制形式):,一个实数的表示包括数字和小数点。,如:0.126,523.64等,(2)科学记数法(指数形式):,一个实数的表示包括整数部分、小数点、小数部分和指数部分。,如:12.57e-04、16e-3、1E15。,12.57 e04,指数部分,小数部分,整数部分,小数点,3.字符常量,字符常量是用一对单引号括起来的单个字符。,如 a,A,二者不一样。,注意:数字3和字符3的区别,前者为整型常量,占2个字节;后者为字符常量,占1个字节,3的值为51。由于C语言中的字符常量是按整数值存放的,因此,字符常量可以像整数一样在程序中参与运算。A+4 结果为:69,4.字符串常量

8、,字符串常量是用一对双引号括起来的若干个字符。,如:“Good Morning!”,”128.7369”,字符串存放时,在最后加上“0 空字符。,于是:,注意:字符常量A和字符串常量“A”是不一样的。,“A”,但A,A,1.字符串长度=实际字符个数+1,但最后0不输出.,printf(Good Morning!),此处不写 0,自动加上。,2.单个字符的字符串不能赋给字符变量。,例:char c;,c=a;是错误的。,转义字符:以“”开头后接一个字符或n个字符代表了一种特殊字符常量。,5.转义字符,字符形式,n,t,v,b,r,f,ddd,xxh,功能,换行,横向跳格(即跳到下一个输出区),竖

9、向跳格,退格,回车,走纸换页,反斜杠字符“”,单引号(撇号)字符,1到3位8进制数所代表的字符,1到2位16进制数所代表的字符,特殊字符常量,符号常量就是用一个名字来代表一个常量。,(1)利用宏定义”#define”定义符号常量,如:#define PRICE 30,#define PI 3.1415926,(2)利用”const”来定义,如:const float BT=0.001,const int SUM=100,6.符号常量,例:#define PRICE 30,main(),int num,total;,num=10;,total=num*PRICE;,printf(total=%d

10、,total);,符号常量(一般用大写,以区分变量),符号常量的用处:提高可读性,降低输入错误的可能性,保证一致性.,数组是一种具有相同数据类型的变量的集合。一维数组的定义格式:数据类型数组名 数组大小;如:int a6;数组名:a 6个元素:a0,a1,a2,a3,a4,a5。,2.3 一维简单数组,运算符:运算的符号表示。,C语言有丰富的运算功能,先简述之。,1.算术运算符+,/,%,等,2.关系运算符,=,=,!=,3.逻辑运算符!,&,4.位运算符,&,5.赋值运算符=等,6.条件运算符?等,7.逗号运算符,2.4 基本运算符、表达式及运算优先级,8.指针运算符*,&,9.求字节数运算

11、符 sizeof,10.强制类型转换运算符(类型),11.分量运算符,12.下标运算符,13.其它运算符 如函数的调用(),2.4.1 算术运算符,1.基本的算术运算符,+加法,正值如:3+6,+3,减法,负值如:6 4,5,乘法如:38,/除法如:8/5,%求余如:7%4 的值为3,(1)两个整型数据相除(结果取整)。,5/3 1,使用时千万注意 int/int 可能会出现数据丢失。,(2)“/”中,有一个 float,则结果为double型。,2.自增、自减运算符,+自增1 自减1,+i:先使i值+1,再使用i值;,i+:先使用i值,再使i值+1.,如:(1)i=5;,j=+i;,(2)i

12、=5;,j=i+;,结果不同(1)j=6,i=6(2)j=5,i=6,自增运算符(+)和自减运算符()只能作用于变量,(1)要慎用+、运算符。,有关表达式使用中的问题说明,对于表达式(i+)+(i+)+(i+);我们可能会认为应从左至右:3+4+5=12,#includemain()int i=3,j;j=(i+)+(i+)+(i+);printf(i=%d,j=%dn,i,j);,实际运行结果:i=6,j=9,例:,先对i进行3次自加,结果i的值为6,然后三个i值相加为18。,i+i+i=9 然后再把6赋给i值,如果表达式j=(i+)+(i+)+(i+);改为:j=(+i)+(+i)+(+i

13、);,则运行结果:i=6,j=18,这是因为运算时是先取i的原值:3,(2)在表达式中,有的运算符为一个字符,有的为两个字符。,一般地:自左至右尽可能多地将若干字符组成一个运算符。,如:i+j,究竟理解为(i+)+j还是i+(+j)?,#includemain()int i=3,j=3,m;m=i+j;printf(i=%d,j=%d,m=%dn,i,j,m);,运行结果:i=4,j=3,m=6,对语句m=i+j;系统理解为m=(i+)+j;,例:,请注意:不能有这样的语句:,m=i+j;,系统不理解成m=(i+)+(+j),因为+运算符的结合方向从右至左。,但可以写成m=i+(+j);,另外

14、也不能写成:m=i+(+(+j);,(3)在函数调用时要注意参数的计算顺序,printf(i=%d,i+=%dn,i,i+);,int i=3;,int j=3;,printf(j+=%d,j=%d,j,j+);,输出结果:i=4,i+=3,j+=4,j=3,这是因为:参数的计算顺序从右到左。,如:,3.算术表达式,算术表达式:用算术运行运算符和括号将运算对象连接起来,且符合C语法规则的式子。,运算对象:常量、变量、函数等,优先级:(),/,%,+,结合性:同一优先级,自左向右,为左结合性,反之为右结合性。,例:a b/c 1.5+ad e;,类数值型数据间的混合运算:C语言允许双精度、单精度

15、、整型及字符数据之间混合运算。,如:10+a+1.58765.1234 b是允许的。但有一个规则:先转换成同一类型,再计算。,(1),(2),(3),(4),(5),(6),double float,高低,图中“”表示必定转换。如a+b,先转换为int。结果为 int。,转换方法:,long,unsigned,int char,short,即:既使是同一种类型也按 转换。,图中“”:表示低,高型数据运算时,均先转换为高型。,例:10+a+if d/e,其中:i int f float d double e long,(1)10+a:转为int,结果为int,(2)if:转为double,结果为

16、double,(3)(1)+(2):转为double,(4)d/e:转为double,(5)(3)-(4)转为double,则运算时:,2.4.2 关系运算符和关系表达式,关系运算就是比较运算,如:a3为一比较运算,若a=5,则a3成立。结果为“真”,否则,若 a=1,则a3不成立,结果为假。,上述表达式:a3 称为关系表达式。,一、关系运算符及其优先次序,1.、=为同一优先级,=、!=为同一优先级,但前者高于后者。,2.关系运算符优先级低于算术运算符。,C语言提供了六种关系运算符=!=,优先级为:,3.关系运算符优先级高于赋值运算符。,如下图:,算术运算符(+、-、*、/、%),赋值运算符(

17、=),关系运算符,高,低,举例:ca+b c(a+b),ab!=c(ab)!=c,a=bc a=(bc),a=bc a=(bc),、=,=、!=,二、关系表达式,关系表达式的结果值规定为1或0.,如:ab,a+bb+c,(a=3)(b=5),a b,(ab)(bc),1 结果为真(成立),0 结果为假(不成立),定义:用关系运算符将两个表达式(算术、关系逻辑、赋值、字符等表达式)连接起来的式子。,如:当a=3,b=2,c=1时,(ab)=c 成立 1,b+ca 不成立 0,d=ab 则ab值为1,所以d=1.,f=abc ab为1,abc为0,所以f=0.,在使用关系运算符时,应注意以下几点:

18、,1.数学中在判别x是否在区间a,b时,习惯写成ax b。在C语言中不能写成a=x=b,而应写成 a=x&x=b&是逻辑运算符(下一节介绍),2.在判定两个浮点数是否相等时,由于存储上的误差,可能会得到错误的结果。如:1.0/15.0*3.0*5.0=1.0数学中为恒等式 1.0/15.0*3.0*5.0=1.0 C语言中结果可能为假 应改为下面的形式:fabs(1.0/15.0*3.0*5.0)1e-5,2.4.3 逻辑运算符和逻辑表达式,用逻辑运算符将关系表达式、逻辑量连接起来的式子逻辑表达式。,一、逻辑运算符及优先级,三种:&(与)、(或)、!(非),其意义见真值表,a&b 当a,b均为

19、1时,才为1,a b 当a,b中有一个为1时,就为1,!a 当a为1,!a为0,反之为1,由此看到:和&为双目运算符。!为单目运算符。,优先级定义:,2.&和 低于关系运算符,!高于算术运算符,1.!(非)优先于&(与),&优先于,即:!&,例:!a&b xy&c(!a)&b)(xy)&c),二、逻辑表达式,1.逻辑表达式的值与关系表达式值一样,真为1,假为0。,例:(1)a=4 则!a 值为0.此处只要a 0,为真.则!a值为0.,(2)a=4,b=5 a&b为1,前面已定义了逻辑表达式,以下看一看逻辑表达式的值及具体的运算。,(5)4&0 2 为1.,总之,在逻辑运算中,非0值参加逻辑运算

20、时被看成1处理.,(3)a=4,b=5 a b为1,(4)a=4,b=5!a b为1,2.一个逻辑表达式中的逻辑运算符并不是一定全部执行.,如:a&b&c.则当a=0(假)时,b,c不需判断。当a=1,b=0,则不需判c.,又如:a b c.当a=1时,b,c均不必判别。,例如:判断年号是否为闰年。,闰年必须满足下列条件中的任意一个:,(2)年号能被400整除。,(1)年号能被4整除但不能被100整除。,设用变量year表示年号,当(year%4=0&year%100!=0)year%400=0)为1时,year为闰年,否则为非闰年。,则:,当(year%4!=0)(year%100=0&ye

21、ar%400!=0)为1时,year为非润年。,如果要判别非闰年可在上述表达式前加非(!)运算符.,当!(year%4=0&year%100!=0)year%400=0)为1时,year为非闰年。,或者:,即:,应用,例一金陵就是南京,设a表示金陵,b表示南京即 a=b,例二前天下雨并且打雷,设m表示前天下雨,b表示前天打雷即 m&n,例三a大于b,或者c不大于0,即 ab!(c0)或者 ab c=0,共有6个,分别如下:,1.,作用:按位取反,如:a=10011010,则:a=01100101,2.,作用:按位左移,如:a=10011010,则:a2=01101000,2.4.4 位运算符及

22、其表达式,3.,作用:按位右移,如:a=10011010,b=01010011,则:a2=11100110(a为有符号数),4.&,作用:按位与(1&1=1,1&0=0,0&0=0),如:a=10011010,则:a&b=00010010,b=01010011,b2=00010100(b为无符号数),5.|,作用:按位或(1|1=1,1|0=1,0|0=0),6.,作用:按位异或(11=0,10=1,00=0),如:a=10011010,则:ab=11001001,b=01010011,如:a=10011010,则:a|b=11011011,b=01010011,位运算符的使用方法,位运算符分

23、为两类:,1.只有一个变量参与运算:,2.有两个变量参与运算:&,|,位运算时,通常采用的是八进制或十六进制数。,2.4.5 条件运算符,问题:当判断条件不论是“真”是“假”,均给同一变量赋值时,能否简化语句书写?,条件运算符为?:三目运算符。,C语言提供以下的条件运算符:,功能:先判表达式1,若非0,则值为表达式2的值,否则为表达式3的值。,一般形式,表达式1?表达式2:表达式3,max=ab?a:b;当ab.max a.否则maxb,注:1.条件运算符优先于赋值运算符.例:max=(ab?a:b)可去掉(),2.条件运算符低于关系运算符和算术运算符。例:max=ab?a:b+1 max=a

24、b?a:(b+1)并不是 max=(ab?a:b)+1,3.条件运算符结合性为从右至左.如:ab?a:cd?c:d 相当于 ab?a:(cd?c:d),4.条件表达式不能取代一般的if语句,只有当if 的两 个分支为给同一变量赋值时才可替代if,而,if(ab)printf(%d,a);else printf(%d,b),不可用条件表达式代替,但可表示为:printf(%d,ab?a:b);,5.表达式1、表达式2、表达式3可类型不同。,main()char ch;scanf(%c,printf(%c,ch),例4.4 输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不

25、转换。然后输出最后得到的字符。,符号=为赋值运算符。,2.整型数据赋给实型变量,数值不变,但按实数形式存放.,1.将实型数据(无论单,双精度)赋给整型变量时,舍弃小数.,赋值时,两边类型若不一致,则按以下规则转换:,2.4.6 赋值运算符和赋值表达式,4.将intlong int,进行符号扩展。即:符号扩展,低16位long 的低16位。,5.long int int 则高16位截断。,3.字符型数据赋给整型变量时:,(2)字符带符号整型变量,则字符高位扩展。,(1)字符无符号整型变量,则存入低8位,高8位补零。,6.将unsigned int 型long int高位补0。,而位数相同部分赋值

26、 unsigned int int unsigned long long unsigned short short,原值传送,但数据大小不能超值。如:unsigned int a=32768;int b;b=a;则b的值超出范围,系统赋予它一个另外的值。,a与b的取值对应关系:,b:,0,32767,32768,1,7.非unsigned 型长度相同的unsigned型数据,原样传送(包括符号位),一、复合赋值运算符:在 号之前加一个其它运算符。,C语言规定:凡是二目运算符均可构成复合运算符。,例:a+=3;相当于 a=a+3 x=y+8;相当于 x=x(y+8)x%=3;相当于x=x%3,一

27、般形式:,二、赋值表达式,例:x=10 为一赋值表达式 其中又可以是一个赋值表达式。,例:x=(y=10)相当于 y=10;x=y 由于赋值号为右结合性,于是()可省略,即为:x=y=10;,例:a+=a=aa(设a12),又:a=5+(c=6)c=6,a=11 a=(b=4)+(c=6)b=4,c=6,a=10 a=(b=10)/(c=2)b=10,c=2,a=5,进一步,还可用复合赋值运算符作下列运算:,步骤:aa144.a=a a a=a a a=12 144=132 a+=132 a=a+(132)=264,2.4.7 强制类型转换运算符,形式:(类型名)(表达式),可利用强制类型转换

28、运算符将一个算术表达式转换为所需类型,例如:(double)a 将a转换为double,(int)(x+y)将x+y转换为int,(float)(5%3)将5%3转换为float,注:1.括号不能省略。否则:intx 会理解为变量intx.,又如:(int)(x+y)若省略:(int)x+y会变成只将x转成整型.,2.转换后的类型数据由系统分配一个中间变量存放,而原变量类型不变。若有:float x;,则:(int)x;x本身仍为实型,而(int)x由一个中间变量(整)存放x的整数部分。,例:#includemain()float x,y;int m,n;x=3.6;m=36;n=x;y=m;

29、printf(x=%f,y=%f,m=%d,n=%dn,x,y,m,n);,运行结果:x=3.600000,y=36.000000,m=36,n=3,且:强制类型转换运算优先于算术运算符.,如:若x为float,则x%3不合法。但可用(int)x%3来解决,一般形式:表达式1,表达式2,其计算规则:先计算表达式1,再计算表达式2,最后值为表达式2的值。,例:a=35,a 4,则:先计算3 5,a15,a 4=60,结果为60。,2.4.8 逗号运算符和逗号表达式,又如:(a=35,a 4),a+5,扩展形式:表达式1,表达2,表达式n,结果为20(作为逗号表达式的值),(3)a+5a 即 20

30、a.,(1)3 5=15a,(2)a 4=60(此时a值仍未变),结果为表达式n的值,(1)x=(a=3,63)赋值表达式,x的值18;,(2)x=a=3,6 a 逗号表达式,x的值3.,逗号表达式主要用于某些语句中需一次计算多个表达式值的情况。如在循环语句中。,函数调用中的实参之间虽然用的是逗号间隔,但不是逗号表达式。如:printf(%d,%d,%d,a,b,c);,一.表达式语句,printf(“a=%dn”,a);,表达式加上一个分号(;).如:i=i+1;i+;x+y;其函数调用也可理解为表达式语句.,2.4.9 C语言基本语句结构,空语句,;任何事情都不做.,二.复合语句,用 括起

31、来的一系列语句。如:z=x+y;t=z/100;printf(%f,t);,三.控制语句改变语句的执行顺序,共有5种控制语句:,(1)if()else(条件),(2)switch()(多分支),(4)while()(循环),(5)do while(循环),(3)for()(循环),()表示条件,表示语句,(1)continue;(结束本次循环),(2)break;(中止整个循环或switch结构),(3)goto 标号;(转移),(4)return;(函数返回),四、转向控制语句:,2.5 C语言的基本输入输出函数简介,前面已论述:C语言本身无输入/输出语句,由函数实现,如printf等。,一

32、般:C语言提供了一些标准的输入/输出函数系统函数。,2.5.1 printf 函数格式输出函数,一、printf的一般形式,C语言中使用得最多的一种输出函数,它可一次按格式输出多个不同类型的数据。,printf(格式控制序列,输出表列);,输出表列 用“,”号隔开的变量或表达式序列,其变量的值按对应的格式控制符所指定的格式输出。,格式控制序列用双引号“.”括起来的格式符序列。,格式控制序列由格式说明符和普通字符组成。,2.普通字符 原样输出,1.格式说明符:由%接格式字符组成 如:%f,%d等,例:a=3;b=4;printf(a=%d,b=%d,a,b);,结果:a=3,b=4,无论 a,b

33、中位数多少,均为上述形式:,如:a=123,b=45,二、格式字符,不同类型的数据输出,用不同格式字符:,1.d格式符十进制整数输出。,(1)%d:按数据的实际长度输出。,(2)%md:m表示输出字段宽度。若实际位数m,左边补空格。,如:int i=12345;,printf(i=%10dni=%d,i,i);,则输出结果为:,i=12345,i=12345,如直接用%d,则将出错。,(3)%ld:输出长整数,如要指定宽度,则用%mld即可。,例:long a=1234567;printf(%ld,a);,2.o格式符 按八进制形式输出.,以1的补码形式,int a=1;printf(%d,%

34、o,a,a);,则输出结果:1,177777,注:连符号位一起组成八进制数输出,特例:1存于int单元,如以长整型输出,在%后加l,也可指定宽度m,%mo,3.x格式符以十六进制形式输出整数.,例:int a=1;printf(%x,%o,%d”,a,a,a),输出结果:ffff,177777,1,例:main()unsigned int a=65535;int b=2;printf(a=%d,%o,%x,%un,a,a,a,a);printf(b=%d,%o,%x,%un,b,b,b,b);,a=1,177777,ffff,65535,a=65535,b=2,4.u格式符无符号格式输出整数.

35、,b=2,177776,fffe,65534,运行结果为:,5.c格式符输出一个字符.,注:(1)若有一整型变量,其值在0255之间,则可以字符形式输出.,(2)一个字符型变量亦可以一个整型数据输出.,char c=a;printf(%c,c);,例:main(),char c=a;,int i=97;,printf(%c,%dn,c,c);,printf(%c,%dn,i,i);,运行结果为:a,97 a,97,也可以指定输出字符宽度,如果有,则输出:“a,即c变量输出占3列,前2列补空格.,printf(%3c,c),6.s格式符用来输出一个字符串.,(1)%ms,输出的字符串占m列,如字

36、符串本身长度大于m,则突破m的限制,将字符串全部输出。若串长小于m,则左补空格。,允许一定的编辑即允许%ms,%ms,%m.ns,%m.ns四种形式,每一形式的意义如下:,例:printf(%s,CHINA);,结果:CHINA,(3)%m.ns,输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。,(4)%m.ns,其中m、n含义同上,n个字符输出在m列范围的左侧,右补空格。如果nm,则m自动取n值,即保证n个字符正常输出。,(2)%ms,如果串长小于m,则在m列范围内,字符串向左靠,右补空格。,7.f格式符以小数形式输出单、双精度实数,有以下几种形式:,%m.nf

37、,指定输出的数据共占m列,其中有n位小数。如果值长度小于m,则左端补空格。,%mn.f,与%m.nf基本相同,只是使输出的数值向左端靠,右端补空格。,%f,不指定字段宽度,由系统自动指定,使整数部分全部如数输出,并输出6位小数。,%f%m.nf%m.nf,8.e格式符以指数形式输出单,双精度实数基本形式:%e,结果:1.23456,可有%m.ne和%m.ne的形式,9.g格式符根据实数大小自动选择f格式,或e格式输出单双精度实数。,e+02,例:printf(%e,123.456),printf格式字符总结,格式字符,d,以带符号的十进制形式输出整数(正数不输出符号),o,x,u,c,s,f,

38、e,g,以8进制无符号形式输出整数(不输出前导符o)。,以16进制无符号形式输出整数(不输出前导符0 x)。,以无符号10进制形式输出整数。,以字符形式输出,只输出一个字符。,说明,输出字符串。,以小数形式输出单、双精度数,隐含输出6位小数。,以标准形式输出单、双精度数,数字部分小数位数为6位。,选用f或%e格式中输出宽度较短的一种格式,不输出无意义的0。,许多情况与具体机器或系统有关,最好机器上一试。,表2.5.1 附加格式说明字符,字符,说明,用于长整型整型,可加在格式符d、o、x、u前面。,数据最大宽度,对实数,表示输出n位小数;对字符串,表示截取的字符个数。,输出的数字或字符在域内向左

39、靠。,m(代表一个正整数),.n(代表一个正整数),字母1,2.5.2 scanf函数,功能:在标准输入装置(键盘)上按指定格式 输入各种类型的数据,地址表列 变量的地址或字符串首地址。,形式:scanf(格式控制序列,地址表列),格式控制序列同printf(.),用&(变量名)表示取的地址,如:&a,&b等等。,例:main()int a,b,c;printf(please input 3 number:n)scanf(%d%d%d,运行,机器等待你输入:please input 3 number:3 4 53,4,5,1.scanf函数用地址量接受数据。,2.输入数据的间隔为,Tab,空格

40、,不能为“,”.,3.允许在格式符中插入附加字符。格式字符及附加字符的定义如下表.,scanf格式字符,格式字符,d,用来输入十进制整数。,o,x,c,s,f,e,用来输入八进制整数。,用来输入十六进制整数。,用来输入单个字符。,说明,用来输入字符串,将字符串送到一个字符数组中,在输入时以非空白字符开始,以第一个空白字符结束。字符串以串结束标志 0作为其最后一个字符。,用来输入实数,可以用小数形式或指数形式输入。,和f作用相同,e与f可以互相替换。,scanf附加的格式说明字符,字符,说明,用于输入长整型数据(可用ld,%lo,%lx),以及double型数据(用%lf或%le),用于输入短整

41、型数据(可用%hd,%ho,%hx),表示本输入项在读入后不赋给相应的变量,h,域宽(为一正整数),*,l,指定输入数据所占宽度(列数),4.对于输入unsigned型数据,不用%u,而用%d,%o,%x.,5.指定数据长度时,系统自动截取。,scanf(%3d%3d,例如:int a,b,printf(a=%d,b=%d,a,b),显示:a=123,b=456,7.输入数据不能规定精度.,6.在%后加“*”表示跳过相应的数据,则当输入为12 345 67,则a12 b67,scanf(%2d%*3d%2d,scanf(%7.2f,是错误的,8.在格式控制中除格式说明符外若还有其它字符,则应按

42、顺序原样输入。,例:scanf(%d,%d,则必须输入 21,28,又如:scanf(a=%d,b=%d,c=%d,则输入:a=34,b=58,c=100,提示:输入格式要求比较严格,稍有疏忽,就会出错。,例:int a,b,scanf(%d,%d,printf(a=%d,b=%d,a,b);,则结果显示:a=12345,b=23266(或其他不定的数),显然b的结果是错误的。,若输入:12345(或12345 23456),应输入:12345,23456,形式:putchar(c);,功能:向终端(一般为显示器)输出一个字符,其中c为 字符型或整型变量,用该函数时,须用预编译命令:#incl

43、ude stdio.h,2.5.3 putchar 函数 字符输出函数,举例:,结果:BOY,#include stdio.hmain()char a,b,c;a=B;b=O;c=Y;putchar(a);putchar(b);putchar(c);,putchar(a);putchar(n);putchar(b);putchar(n);putchar(c);putchar(n);,*利用putchar还可输出其它转义字符,结果:B O Y,putchar(101);输出A,putchar();输出,putchar(015);输出,*若将最后一行改为:,3.5.4 getchar 函数,形式:

44、getchar(),功能:从标准输入装置(键盘)上输入一个字符,要求:有#include stdio.h预编译命令,例:#include stdio.h main()char c;printf(”please input a char:n)c=getchar();putchar(c);,程序举例,例1:输入三角形三边,求三角形面积。,程序如下:,#include#include main()float a,b,c,s,area;printf(Please input three sides length:n);scanf(%f,%f,%f,1、不同类型的变量有不同的取值范围。2、要注意正确的使用运算符来达到不同的目的。3、输入、输出功能是通过调用系统函数完成的。4、熟练掌握程序上机调试、运行。,本章小结:,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号