




已阅读5页,还剩122页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
著名计算机科学家沃思提出:,程序数据结构算法,一个程序包括以下两方面内容: (1)对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构。 (2)对操作的描述。即操作步骤,也就是算法。,例如:学生各科成绩及总分排队问题。,(1) 成绩的存放 以数组形式 (2) 排队方法 算法,在此, 存放数据的方式直接反映了一种程序语言的数据表达能力。,标识符就是一个名字,用于标志某个事物,由字母、数字、下划线组成且由字母或下划线开头的字符串。,标识符可用来命名变量及作为常量名、函数名、类型名、标号和其他各种用户定义的对象命名。,一个程序内不得有重复名,不允许使用与C语言系统关键字(保留字)相同的标识符。,如: _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语言关键字列表,auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while,1C语言区分大小写,如:Price 和 price,系统会认为是两个不同的标识符。,2标识符的长度一般不超过8个字符,具体情况视不同系统而定。,设允许8个字符。,则: student_ name,student_ number,为同一名字。,2.2.2 变量和常量,变量程序执行过程中可以不断改变其值的一种量。变量包括变量名和变量值。,变量名 用标识符命名,对应一定数量的内存存贮单元,其单元数视变量类型而定。,一、变量,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必须为整型量。,变量的一般描述方法:,类型关键字 变量名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等.,一般形式 +,其中: 为数码0;为0至7的数码之一;方括号中的内容可有可无。,0235=28238515710,014618248610210,012(182)1010,(3) 十六进制,以“0x“开头的整型数,如: 0x16, 0x128,0x16=11662210,01281162216829610,一般形式 +,其中: 为数码0x或0X;为0至9、a至f、A至F;方括号中的内容可有可无。, 八进制整数和十六进制的整数的数制符是必需的 以上3种整型常量的表示形式均可冠以正号或负号 在整型常量的尾部加上字母l或L时,则为长整型常量 一个整型常量也可由它的值确定它的类型,注意:,2. 实型常量,实型常量就是实数。,(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. 字符串常量,字符串常量是用一对双引号括起来的若干个字符。,如:“ 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,功能,换行,横向跳格(即跳到下一个输出区),竖向跳格,退格,回车,走纸换页,反斜杠字符“ ”,单引号(撇号)字符,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“,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. 求字节数运算符 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=5;,j=i+;,结果不同 (1) j=6,i=6 (2) j=5,i=6,自增运算符(+ +)和自减运算符( )只能作用于变量,(1) 要慎用+、 运算符。,有关表达式使用中的问题说明,对于表达式(i+)+(i+)+(i+) ; 我们可能会认为应从左至右: 3+4+5=12,#include main( ) 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);,则运行结果: i=6, j=18,这是因为运算时是先取i的原值:3,(2) 在表达式中,有的运算符为一个字符,有的为两个字符。,一般地: 自左至右尽可能多地将若干字符组成一个运算符。,如: i+j, 究竟理解为(i+)+j还是i+(+j)?,#include main( ) 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);,另外也不能写成: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语言允许双精度、单精度、整型及字符数据之间混合运算。,如: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, 结果为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. 关系运算符优先级高于赋值运算符。,如下图:,算术运算符 (+、-、*、/、%),赋值运算符 (=),关系运算符,高,低,举例: 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.,在使用关系运算符时,应注意以下几点:,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均为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值参加逻辑运算时被看成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 & year%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 位运算符及其表达式,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,位运算符的使用方法, 位运算符分为两类:,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= ab? 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 输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。,符号“ = “为赋值运算符。,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。,而位数相同部分赋值 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,一般形式: ,二、赋值表达式,例: 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 强制类型转换运算符,形式: (类型名) (表达式),可利用强制类型转换运算符将一个算术表达式转换为所需类型,例如: (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的整数部分。,例: #include main( ) float x,y; int m,n; x=3.6; m=36; n=x; y=m; 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 即 20a.,(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语言基本语句结构,空语句,; 任何事情都不做.,二. 复合语句,用 括起来的一系列语句。 如: 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等。,一般: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中位数多少, 均为上述形式:,如: 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, %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格式符无符号格式输出整数.,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列,如字符串本身长度大于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, 指定输出的数据共占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,e,g,以8进制无符号形式输出整数(不输出前导符o)。,以16进制无符号形式输出整数(不输出前导符0x)。,以无符号10进制形式输出整数。,以字符形式输出,只输出一个字符。,说明,输出字符串。,以小数形式输出单、双精度数,隐含输出6位小数。,以标准形式输出单、双精度数,数字部分小数位数为6位。,选用f或%e格式中输出宽度较短的一种格式,不输出无意义的0。,许多情况与具体机器或系统有关,最好机器上一试。,表2.5.1 附加格式说明字符,字符,说明,用于长整型整型,可加在格式符d、o、x、u前面。,数据最大宽度,对实数,表示输出n位小数; 对字符串,表示截取的字符个数。,输出的数字或字符在域内向左靠。,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 5 3, 4, 5,1.scanf函数用地址量接受数据。,2. 输入数据的间隔为,Tab, 空格, 不能为“ ,”.,3. 允许在格式符中插入附加字符。格式字符及附加字符的定义如下表.,scanf格式字符,格式字符,d,用来输入十进制整数。,o,x,c,s,f,e,用来输入八进制整数。,用来输入十六进制整数。,用来输入单个字符。,说明,用来输入字符串,将字符串送到一个字符数组中,在输入时以非空白字符开始,以第一个空白字符结束。字符串以串结束标志 0作为其最后一个字符。,用来输入实数,可以用小数形式或指数形式输入。,和f作用相同,e与f可以互相替换。,scanf附加的格式说明字符,字符,说明,用于输入长整型数据(可用ld, %lo, %lx)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年销售团队季度目标制定指南
- 物业公共设施维护管理办法
- 法律文书申请书写作模板合集
- 高处作业吊篮安装拆卸工岗位操作规程考核试卷及答案
- 小学二年级下册数学口算训练题选
- 物料索道操作工基础考核试卷及答案
- 塑料焊工基础考核试卷及答案
- 矿车修理工协同作业考核试卷及答案
- 海岸带隧道工程影响评价分析
- 显示器件流程变革分析报告
- 2025年度反洗钱阶段考试培训试考试题库(含答案)
- 收割芦苇施工方案
- 辽宁省沈阳市2025-2026学年七年级上学期第一次月考数学试卷(含答案)
- 小学生日常行为规范知识竞赛试题(附答案)
- 2025年食品安全员考试题库及答案
- 民宿入住免责协议书范本
- 岭南版小学美术四年级上学期教学进度计划
- 管廊运维招聘题库及答案
- 人教版部编三年级上册道德与法治一课一练(含答案)
- (高清版)《建筑施工作业劳动防护用品配备及使用标准》JGJ184-2009
- 全国BIM大赛一等奖获奖项目参赛PPT(76页)
评论
0/150
提交评论