《第03章顺序程序设计(四).ppt》由会员分享,可在线阅读,更多相关《第03章顺序程序设计(四).ppt(78页珍藏版)》请在三一文库上搜索。
1、第 3 章,最简单的C程序设计 顺序程序设计,例如:1000元,想存一年。分别计算:活期、一年定期、 存两次半年定期,所得到的本息和。(p38),特点:由上到下,按语句顺序全部执行,无选择和循环,3.1 顺序程序设计,end,解:#include int main() float r1=0.0036, r2=0.0225, r3=0.0198; float p0=1000, p1, p2, p3; p1=p0*(1+r1); p2=p0*(1+r2); p3=p0*(1+r3/2)*(1+r3/2); printf(“p1=%fnp2=%fnp3=%fn”,p1,p2,p3); return
2、0; ,运行结果:,p1=1003.599976,p2=1022.500000,p3=1019.898010,一、常量和变量 1、常量 常量是指在程序运行中,其数值不能被改变的量,(1)整型常量 在语言中,整常数可用以下三种形式表示: 1)十进制 如:123, -456,4 2)八进制-数字0开头,0-7之间数字组成 如:0123表示八进制数123, 转换为十进制=1X82+2X81+3X80=83 -010表示八进制数-10, 即十进制数-8 3)十六进制-0x开头,0-9、A-F之间数字组成 如:0x1A表示16进制数1A, 转换为十进制=1X161+10X160=26; -0x10等于十
3、进制数-16。,end,3.2 数据的表现形式及其运算,end,两种表 示形式,小数 指数,0.123 , 23. , .45 3e(E)-3,注意:字母e(或E)的前后必须有数,且e后面的 指数必须为整数,例:1e3、1.85e-3、-123e-6、-0.1e-3 e3、2.1e3.5、.e3、e, 3x10-3,(2)实型常量,其中 1.85e-3 称为 “标准化的指数形式”。,标准化的指数形式: 在字母e(或E)之前的小数部分中,小 数点左边,有且只有一位非零的数字,end,(3)字符常量, 普通字符:用单引号包含一个字符,例,a, A, 4 abc、a,. 字符的ASCII码(美国国家
4、信息交换标准代码):,每个字符都对应一个ASCII码 见p377 查字符表可知:字符的ASCII码为 0255,例: 字符A的ASCII码的十进制形式为:65 字符B的ASCII码的十进制形式为:66,字符a的ASCII码的十进制形式为: 97,字符b的ASCII码的十进制形式为: 98,观察大小写字母的ASCII码相差多少?,end, 转义字符:以开头的特殊字符序列, n 换行 b 退一格 t 水平制表符(横向跳到下一个制表区) r 回车(光标回到该行的开头) ooo ooo表示1到3位八进制数字 xhh hh表示1到2位十六进制数字,例:101-A x41-A,显示屏上的运行结果:,i,列
5、号:1 2 3 4 5 6 7 8 9,例:转义字符的使用 #include int main() printf(“abtibbjk“); return 0;,(4)字符串常量:是一对双撇号括起来的字符序列.,end,例:合法的字符串常量: “How do you do.“ “CHINA“ “a“ “$123.45“,注意!,a是字符常量, “a“ 是字符串常量,二者不同,(5)符号常量: 用#define指令指定的,代表一个常 量的符号名,.在程序中不能给它赋值。 .定义形式: #define 符号名 常量 .作用:1)可在程序中,用简单、意义直接的符号 名代替一个复杂的常量,从而减少程序
6、中重复书写某些复杂常量的工作量。 2)能做到“一改全改”。 例:#define PI 3.1415926 在程序预处理时(编译前),凡是出现符号名 PI的地方,都将用3.1415926来替换。 如: 2*2.3*PI 就等价于 2*2.3*3.1415926,例: PI=234; 错误,end,(不能给它赋值),例:求半径为5的圆的面积和周长 #define PI 3.1415926 /*.后面不能有 ; #include .出现在程序开头*/,int main() float s, l, r ; r = 5 ; s = r*r*PI ; l = 2*r*PI;,/ s=r*r*3.14159
7、26 ;,/ l=2*r*3.1415926 ;,printf(“s=%f , l=%f ”, s, l);,return 0;,end,. 是用来作为变量名、符号常量名、函数名、类 型名、文件名等的有效字符序列 .C语言规定:标识符只能由字母、数字和下划线 三种字符组成,且第一个字符必须 为字母或下划线。 例如:_22A,lea_1,avg3,day,ACe4 M.J.YR, $_28, #xy, a*b, 8Ta,2、 标识符 (p42),注意,合法,不合法,在C语言中,大小写字母不等效。 因此,a和A,i和I,SUM和sum,分别是两个不同的标识符。,end,11,(这些标识符由系统专用
8、,不能重作其它定义) 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 unsigned union void volatile while _bool _Complex _Imaginary,C语言中的关键字,见378页 附录C (补充), 变量是指以标识符为名字,其值可以改变的量, 一个变量,对应着计算机内存一个存储空
9、间,,存储空间中存放的数据就是变量的值。,3、 变量 (p41),定义形式: 类型名 变量名1, 变量名2, 变量名3 .;,例如:int a,b; int a; int b; float x; char c;,自己设定,满足标识符的规定,如:int, float,char,;不可省,a,23,b,x,c,2,4.8,A,定义了变量后,系统会为不同类型的变量分配 不同大小的存储空间,当中可存相应类型的数。,end, 在同一函数中,变量不能被重复定义。, 使用变量时必须 “先定义,后使用”,例1: int a,b; float a,y; char b,c;,例2: #include int ma
10、in() int x, y, z ; x=24; scanf(“%d”, ,后使用,先定义,end,说明:,跳过常变量,end,4、常变量:有名字的、其值被指定且不能被改变 的变量(了解 p41) 定义常变量的格式: const 类型名 变量名=常数; 例:const int a=3;,区别:,PI:不占内存,预编译后不存在 pi:占内存,有值,值不可改变,#define PI 3.1415926 const float pi=3.1415926;,/a被定义成整常变量,C语言提供了以下几种数据类型:,字符类型,浮点类型,派生类型,数组类型,结构体类型,共用体类型,指针类型,空类型,基本类型,
11、枚举类型,数据类型,end,二. 数据类型,函数类型,整数类型,布尔类型,=整型(C99),二进制,三. 整型数据,1. 整型的分类,.整型数据在内存中的存放形式(了解) 以二进制补码形式存放: 正数的补码:与该数的二进制形式相同 负数的补码:为该数绝对值的二进制形式, 按位取反,再加1。,如: int x=-5;,end,如: int i=5;,5,取反,加1,共八种,有符号基本整型 signed int 有符号短整型 signed short int 有符号长整型 signed long int 有符号双长整型 signed long long int 无符号基本整型 unsigned i
12、nt 无符号短整型 unsigned short int 无符号长整型 unsigned long int 无符号双长整型 unsigned long long int,注意:中括号表示其中的内容是可省的。,类型名标识符,.整型分类:,end,类型 类型名 长度 数的范围 基本型 int 2字节 -3276832767 短整型 short 2字节 -215215-1 长整型 long 4字节 -231231-1 双长整型 long long 8字节 -263263-1 无符号整型 unsigned 2字节 065535=216-1 无符号短整型 unsigned short 2字节 06553
13、5 无符号长整型 unsigned long 4字节 0232-1 无符号双长整 unsigned long 8字节 0264-1 型 long,整型变量的空间及值范围:(以turbo c 为例),end,2. 整型变量 不同类型变量对应的内存空间大小不同。,0 1 1 1,1 1 1 1,1 1 1 1,32767(int),65535(unsigned),-1的补码(int),.存放有符号整数空间中,最左边位为符号位,正:0,负:1,例:#include int main( ) int a=20; unsigned c; /*指定c为无符号整型变量*/ c=a+10;a=c+a; prin
14、tf(“a=%d n c=%un” , a, c); return 0; ,运行结果: a=50 c=30,说明: .可以看到不同种类的整型数据可以进行 算术运算 .无符号整型变量中数据的十进制输出用%u,end,(1) 一个整常数后面加一个字母u或U, 认为是unsigned int型 如:12345u,了解:,(2) 在一个整常数后面加一个字母l或L, 则认为是long int型常量。 例如 123L,例如 unsigned int x; long y; 也可以 x=123; y=123;,end,四.字符型数据,end,1.字符型数据在内存的存放: 一个字符,在内存占一个字节(8位) 存
15、放的是字符的 ASCII码 的二进制,例: b的ASCII码,98,)字符变量的定义形式 例:char c1,c2; 在函数中可以用下面语句对c1,c2赋值: c1a; c2b;,2.字符变量,例:输出字符 a , b 和其ASCII码 #include int main() char c1,c2; c1=a; c2= 98; printf(“%c %cn“,c1,c2); printf(“%d %dn“,c1,c2); return 0; ,运行结果: 97 98,一个字符数据既可以以字符形式输出,也可以 以整数形式输出,end,例,2)字符型数据的分类、存储空间和值的范围:, 查字符表可知
16、(p377字符表) -了解 .首字符的ASCII码为 0: 127号字符ASCII码127: .128号字符ASCII码128: .最后一个字符ASCII码为255:, 有的系统认为字符类型有正负之分,这时有:, 若unsigned char x; 则printf(“%d“,x);结果在0-255,与ASCII码相符, 若char x; 则printf(“%d“,x)结果在-128127 (128 - -128,129 - -127,255- -1),end,说明:C语言允许字符数据与整数直接进行算 术运算。,运行结果: a b,end,例:给出两个大写字母,将它们转换为小写字母输出,#inc
17、lude int main() char c1,c2; c1=A; c2=B; c1=c1+32; c2=c2+32; printf(“%c %c“, c1,c2); return 0; ,五.浮点型数据,end,(1) 浮点型数据在内存中的存放形式 .是按照指数形式存储的。 .系统把一个浮点型数据分成小数部分和指 数部分,分别存放。,符号,小数部分,指数部分,(2) 浮点型的分类 .单精度(float) .双精度(double) .长双精度型(long double),类型名 字节数 数的范围(绝对值) 有效数字 float 4 0, 1.2x10-38 3.4x1038 6位 double
18、 8 0, 2.3x10-3081.7x10308 15位 long double 16 0, 3.4x10-49321.1x104932 19位,(3)浮点型变量的定义 例: float x; double w; scanf(“ %f %lf ”, /*输出x和w的值 */,end,Turbo C中浮点型数据的空间、值的范围:,六.运算符和表达式 1. 基本算术运算符: + (加法运算符,或正值运算符。如:3+5、+3) - (减法运算符,或负值运算符。如:5-2、-3) * (乘法运算符。如:*) / (除法运算符。如:5/2=2 (两个整数相除结果为 -5/2=-2 整型,去掉小数部分)
19、 5.0/2=2.5 % (模运算符,或称求余数运算符,% 两侧均应为 整型数据,如:%的值为),end,习题: 输入一个三位正整数,求出其各个位,然后, 将十位作为百位,将个位作为十位,将百位 作为个位重组该数,输出。,daan,2、自增、自减运算符:+,- - 作用:使变量的值增或 减 例如: +i, i+ 都会使i的值加1 - - i , i - - 都会使i的值减1,end,注意: 自增运算符(+ +),自减运算符(- -) 只能用于变量,而不能用于常量或表达式 例 :+5 8- - (x+5)+,i+与+i的区别: +i是先执行i=i+1后,再使用i的值; i+是先使用i的值后,再执
20、行i=i+1。 (i- -与- -i的区别和+类似) 例如:int i=3; j=+i; i的值先加1变成4, 再赋给j, j的值为 j=1+(+i); j=? j=i+; 先将i的值3赋给j,j的值为3,然后i加1变为4 printf(“%d,%d”,i,j ); 输出为 ? 练习:int i=3; j=3+(i+) j=? i=? j=(- -i)+3 i=? j=?,4,3,end,3、算术表达式和运算符的优先级与结合性 (1) 算术表达式 用算术运算符和括号将运算对象(也称操 作数)连接起来的、符合语法规则的式 子,称为算术表达式。 运算对象可以包括:常量、变量、函数等。 例如: in
21、t a=4,b=7,c=23; a * b / c- 1.5 + a + abs(-8) 是合法的,式中含有变量、常数、函数,end,练习:写出,的C语言合法表达式,例:2 + b - 6 b先与 + 结合,与2先进行加法运算,end,(2)基本算术运算符的优先级 (低于+,- -) (*,/,%)高于 (+,-) 在表达式求值时,按运算符的 优先级 由高到低 次序计算。 (3)基本算术运算符的结合方向(结合性): 左结合性. 左结合性:当一个 操作数 两侧的运算符的优先 级相同时,该 操作数 先参加左边的 运算符的运算。 即运算符的优先级若相同,则从左向 右运算。 右结合性:若 操作数 先参
22、加右边的运算符的运 算,则称为右结合性。,4.不同类型数据间的混合运算,整型、浮点型、字符型 可以进行混合运算。 在进行运算时, 若一个运算符的运算对象类型 不同,系统会自动将它们转换成当中级别高的类型, 然后进行运算。,类型的级别如下:,高 double float long 低 int char, short,例: int x; float y; x+y的结果类型? 先将: y double x double 然后运算: x+y 结果为: double型,end,(必定转换),(必定转换),10 + a + i * f - d / e,(1)10(int) + 97(int),107(in
23、t),(2)5.0(d)*,3.0(d),15.0(d),(3)107.0(d),+,122.0(d),(4)4.0(d) / 2.0(d),2.0(d),-,120.0(d),例: 10 + a + i * f - d / e int i=5; float f=3.0; double d=4.0; long e=2;,(5),end,5.强制类型转换运算符 可以利用强制类型转换运算符将一个表达式的 值转换成所需类型。 .一般形式: (类型名)(表达式) .优 先 级: 高于 基本算术运算符 例如:int a=2; float d; double b; b=(double)a; d=(floa
24、t)(5%3);,单个量时 括号可省,变量a仍为原来类型,将中的值转换成double类型 2.000后送给b,将5%3的值转换成float型,end,运行结果: x=3.600000,i=3,end,例 #include int main() float x; int i; x=3.6 ; i=(int)x; printf(“ x=%f, i=% d n”,x,i); return 0; ,/* 实型转换为整型,舍去小数部分。 x 中的值未变,仍为3.6 */,6.运算符简介 的运算符有以下几类: (1) 算术运算符: + - * / % + - - (2) 关系运算符: = = = | (5
25、) 赋值运算符: = (6) 条件运算符: ?: (7) 逗号运算符: ,,(8) 指针运算符: * 和 (9) 求字节数运算符: sizeof (10)强制类型转换运算符: (类型) (11)分量运算符: .和 - (12)下标运算符: (13)其他,end,例如:i的初值为,如果有下面的函数调用: printf(%d ,%d, i , 1+(+i) ) 在有的系统中,从左至右求值输出,输出“3,5“ 在多数系统中,是自右向左,输出“4,5“ 最好改写成: j = 1+(+i); printf(“%d ,%d“, i,j);,(1)不要写容易误解的式子 例如:(i+)+j 写成了 i+j 的
26、形式 (2)式中不要含有不同系统有不同处理方法的内容,7.有关表达式的几点说明,结果: 4 , 5,end,一.C语句分类: 共分5类,如下:,3.3 C语句概述,(1)控制语句:完成一定的控制功能 if( ) else 条件语句 for( ) 循环语句 while( ) 循环语句 do-while( ) 循环语句 continue 继续语句 break 间断语句 switch( ) 开关语句 goto 转向语句 return 返回语句,(2) 函数调用语句 由一个函数调用加一个分号构成的语句。 例:printf(“This is a C statement.”) ;,(3) 表达式语句 由一
27、个表达式加一个分号构成的语句,例:a = 3 ;,(4) 空语句 只有一个分号的语句: ; / 什么也不做,(5) 复合语句 用一对 把一些语句括起来的语句。 例: z=x+y; t=z/100; printf(“%f “,t); ,运行情况: a=3.670000 b=5.430000 c=6.210000 area=9.903431,#include #include int main() double a=3.67, b=5.34, c=6.21, s, area; s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(“a=%ft b=%
28、f tc=%f n”, a,b,c); printf(“area=%fn”,area); return 0; ,二 . 赋值语句,例: 输入三角形的三边长,求三角形面积。 已知:面积公式area=s(s-a)(s-b)(s-c) s=(a+b+c)/2 ( 先做:1.sqrt()的头文件 2.指出赋值语句 ),1. 赋值运算符: = 作 用:将一个数值或表达式的值赋给一个变量 优先级:见P379 ,排在倒数第二 如: x = 2 + 5 * 6 是将一个表达式的值赋给一个变量.,2 + 5 * 6 =x 是否正确?,思考:,2.复合的赋值运算符 复合的赋值运算符:在赋值符“”之前加上其 他(二
29、元)运算符,如:+, -, *, /, % ,构成 优先级、结合性:和赋值运算符相同,例如: 1) a+=3 等价于 a=a+3,2) x * = y+3 x * = (y+3) x = x *(y+3) (不要错写成x=x*y+3),3. 赋值表达式 变量 赋值运算符 表达式 例:x=4+7 (该表达式的值为左边变量x的值),左值(lvalue): 赋值运算符左侧,值可改变的量,右值(rvalue):赋值运算符右侧的表达式,例:a=3*6,a+b=7,变量可作为左值, 赋值表达式中,右边的 “表达式“ 又 可以是一个赋值表达式. 赋值运算符的结合顺序: “自右而左”,例:a=(b=5) 括弧
30、内的“b=5”是一个赋值表达式 它的值等于5, 再将5送给a 括弧可以不要,即写成 “a=b=5”,例:a=5+(c=6) c=? a=? 整个式子值=?,例:a=b=9 (a=b)=3,* 赋值表达式也可以包含复合的赋值运算符。,求解步骤如下: 先进行“a - =*”的运算, 它相当于=-(*) a = 12-12*12= -132 式子 a-=a*a 的值为 -132 再进行“a + = -132”的运算, 相当于 a = a+(-132) a = -132-132 = -264 整个式子值 = -264,如: a=12,求 a += a -= a*a (自右向左计算),4. 赋值过程中的
31、类型转换,如果赋值运算符两侧的类型不一致, 在赋值 时,系统要自动进行类型转换, 转换为变量所 需类型。, 浮点型数据(包括单、双精度) 整型变量: 舍弃浮点数的小数点以后部分 如: i为整型变量,执行“i=3.56” 结果是 :,i 的值为 3, 以整数形式存储在整型变量i中., 整型数据 单、双精度变量: .数值不变,以浮点数形式存储到浮点型变量中 如: float f; f=23; 先将23转换成float型23.0,再存储在 f 中。 如: double d; d=23; 将23转换成double型23.0,存储到变量d中。, double型数据 float变量: 截取其前面6位有效数
32、字,存放到变量的存储单 元中。 .float型数据 double变量: 数值不变,有效位数扩展到15位,存放到变量的 存储单元中。, 字符型数据 整型变量,是将字符的ASCII码送给整型变量, 占字节多的整数 占字节少的整型变量或字符变量 只将低字节原封不动地送入被赋值变量中,例:int i=289; char c; c=i;,i,.,c,00100001,=33( ! ),例:long a=32767; int b; a=a+1( 32768 ); b=a;,a,.,b,10000000,-32768=,00000000,5. 赋值表达式和赋值语句区别 赋 值 语 句:后面有分号,不可出现在
33、表达式中 赋值表达式:后面无分号,可出现在任何允许表 达式出现的地方。 例: 已知 if 语句的一种合法格式: if(表达式) 语句; 判断下列语句的语法是否正确? 1) if( a0 ) max=a; 2) if( (a=7)0 ) max=a; 3) if( (a=7; ) 0 ) max=a;,例: x=2+(y=3+5;),6. 变量的赋初值,(1)在定义变量的同时给变量初始值 例: int a=3; float f=3.56; char c= a;,例: #include void main() char c= a; c=c+2; printf(“%cn”,c); ,结果 =?,c,
34、int a; float f ; char c; a=3; f=3.56; c= a;,相当于,(2) 给被定义变量的一部分赋初值。 如:int a=0,b,c=5; 表示指定a, b, c为整型变量 其中a初值为 0,c初值为 5 (3) 几个变量赋同一个初值 如:int a=3, b=3, c=3;表示a, b, c的初值都是3 不能写成: int a=b=c=3;,例: 给 a, b 赋初值, 判断a是否大于b, 是输出yes, 否则输出no。(先做) #include int main( ) int a=5, b=67; if(ab) else return 0; ,运行结果: ?,p
35、rintf(“yesn“);,printf(“non”);,no,在调用标准输入输出库函数时, 程序开头应该有: #include “stdio.h” 或: #include ,头文件,3.4 数据的输入输出实现,C语言中输入和输出操作是由函数库中的 标准输入输出函数来实现的。,到系统规定的存放库函数头文件的目录中去寻找,一. printf输出函数 1. 一般格式:printf(格式控制, 输出表列) 函数作用:输出若干个任 意类型的数 据,(1)普通字符: 按原样输出 (2)格式说明: %格式字符,是一些要输 出的数据项 (变量、表达 式、常数),suanji,例:int a=2,b=3,c
36、=4; printf(“a=%d,b=%d,c=%d n“,a, b, c); 结果:a=2,b=3,c=4,2. 格式字符 (1)格式符: 以带符号十进制形式输出整数 几种用法: * %d :按数据的实际长度输出。 %md:为指定的输出宽度。 若数据的位数小于,则左端补空格, 若大于, 则按实际位数输出。 %ld:输出长整型数据。(%mld) 例 int a=-13, b=12345; long c=135790; printf(“%4d,%4d,%ld“, a, b, c ); 输出结果为:,- 13, 12345, 135790,例:int x=6,y=-25; 1. 写出输出下列形式的
37、输出函数: x=_ _ 6,y=_ -25 2. printf(“x=“); printf(“%2dn“,x); printf(“y=“); printf(“%4d“,y); 输出:?,printf(“x=%3d,y=%4d“,x,y),x=_ 6 y=_ -25,(2) c格式符: 用来输出一个字符 用 法: %c , %mc (以m位宽度输出字符) 如: char d=k; 1. printf(“%c“,d); 输出: k 2. printf(“%3c“,99); 输出: ?,_ _ c,(3)s格式符:用于输出字符串 %s :按实际长度输出字符串 %ms :输出的字符串占 m 列 若串长
38、大于m,则全部输出 若串长小于m,则左补空格 %-ms :与%ms相似,只是若串长小于m,字符串向 左靠,右补空格,%m.ns : 输出占m列, 只取字符串中左端n个字符, 输出在m列的右侧,左补空格 %-m.ns:与%m.ns相似,只是靠左输出,右补空格 若 n m:自动按n位宽度输出,例:写出下列字符串的输出 #include void main() printf(“%3s, %7.2s, % .4s, %-5.3sn“ , “CHINA“, “CHINA“, “CHINA“, “CHINA“); ,运行 结果: CHINA, CH, CHIN, CHI,(4) f格式符: 以小数形式输出
39、实数( 包括单、双精度 ) 有以下几种用法: %f :整数部分按实际长度输出, 小数部分输出6位,%mf:输出的数据共占m列: 小数部分:输出6位小数. 整数部分:按实际长度输出 若整数部分长度+6+1m, 左补空格,1位小数点,%-mf:与%mf相似,只是在补空格时,是右补空格,例: float x=23.45; printf(“%11f, %-11f, %2f”, x, x,x); 输出: _ _23.450000,23.450000_ _, 23.450000,%m.nf:输出的数据共占列, 小数部分: 输出n位. 整数部分:按实际长度输出 若n+1+整数部分长度m,左端补空格 %-m.
40、nf:与%m.n相似,只是要补空格时,是在右端补空格,例: 写出下列实数的输出形式。 #include void main() float f=123.456; printf(“%10f,%10.2f, %.2f,%-10.2f”, f, f, f, f ); ,运行结果: 123.456000, _ _ _ _123.46, 123.46 , 123.46_ _ _ _,四舍五入,e格式,例:输出单精度实数时的有效位数(6位) #include void main() float x,y; x=11111.111;y=22222.222; printf(“%f”,x+y); ,运行结果: 3
41、3333.328125,例: 输出双精度数时的有效位数(15位) #include void main() double x,y; x=1111111111111.111111111; y=2222222222222.222222222; printf(“%f”,x+y); ,运行结果: 3333333333333.333010,(5) e格式符: 以规范化指数形式输出实数 可用以下形式: %e:输出的正(负)实数共占13(14)列 正: x.xxxxxxexxx(13列) 负:-x.xxxxxxexxx(14列) 例:printf(“%e“, 123.456); 输出:1.234560e+0
42、02 (注:不同系统的规定略有不同),%m.ne、%-m.ne: m为总宽度,n为小数部分的小数位数 例:f=123.456, printf(“%e%10e%10.2en%-10.2e%.2e“, f,f,f,f,f); 1.234560e+002 1.234560e+002 1.23e+002 13列 13列 10列 1.23e+002 1.23e+002 10列 9列,输 出,例 int a=10; printf(“%d,%o,%x“, a, a, a); 输出:10,(6)格式符: 以八进制形式输出整数 输出的数值不带符号,符号位也一起 作为八进制数的一部分输出。 用法: %o, %lo
43、 ( 长整型的八进制形式 ),0000000000 001 010,12,(7) x 格式符: 以十六进制形式输出整数 用法: %x, %lx ( 长整型的十六进制形式 ),a,0000 0000 0000 1010,八进制3位一组,十六进制4位一组,例:int a=-1; printf(“%d, %o, %x“,a, a, a); 输出: -1,177777,-1在内存单元中的存放形式 (以补码形式存放)为: 1 111 111 111 111 111,1111 1111 1111 1111,八进制3位一组,十六进制4位一组,ffff,*以八进制或十六进制形式输出,不带符号*,输出如下: 1
44、23.468000 1.234680e+002 123.468 10列 13列 10列,例: 若f=123.468,则printf(“%f %e %g”, f, f, f );,(8) g格式符: 用来输出实数 它根据数值的大小,自动选格式或格式 中占宽度较小的一种格式输出, 且不输出无 意义的零。,(9) u格式符: 以十进制形式输出unsigned型数据 用法:%u, %lu,二. scanf输入函数 1.一般格式:scanf(格式控制串, 地址表列),同printf函数基本相同,若干个存放数据的内存地址, 如:变量的地址,例 int a; short b; long c; char ch
45、; float x; double y; scanf(“%d%hd%ld”, 4.68,函数作用: 将输入的数据存入指定的内存(变量)中,1)多个整型、实型数据输入时注意: “格式控制”串中无其他普通字符: 可用一个或多个空格, 回车, 跳格(Tab)键为分隔符 例: scanf(“%d%d“, 可输入: 23 46 或: 23 46,“格式控制”串中若有其他字符: 输入数据时, 对应位置应输入相应字符,例: scanf(“%d , %d“, 可输入: 23,46,例: scanf(“x=%d,y=%d”,&x,&y); 输入:x=2,y=3,2. 使用scanf输入数据时注意问题, scanf(“%c%c”,&c1,&c2): 如输入:ab c1 c2 若输入:a _ b,紧挨着,2)多个字符数据输入时注意:,有其它字符,不能加分隔符,加指定分隔符,输入:w,r, scanf(“%c,%c”,&x,&y);,例:scanf(“%2d%*3d%2d“, 输入:12 345 67 输入:1234567,3) 可指定输入数据所占的列数(该页了解)
链接地址:https://www.31doc.com/p-3417281.html