第3章 顺序结构程序设计_第1页
第3章 顺序结构程序设计_第2页
第3章 顺序结构程序设计_第3页
第3章 顺序结构程序设计_第4页
第3章 顺序结构程序设计_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、大连理工大学软件学院大连理工大学软件学院1最简单的最简单的C程序设计程序设计顺序程序设计顺序程序设计大连理工大学软件学院大连理工大学软件学院2赋值表达式和赋值语句赋值表达式和赋值语句简单的格式输入与输出简单的格式输入与输出要点要点大连理工大学软件学院大连理工大学软件学院3主要内容主要内容1 1 程序的三种基本结构程序的三种基本结构2 C2 C语句概述语句概述3 3 赋值表达式和赋值语句赋值表达式和赋值语句4 4 数据输入输出的概念及在数据输入输出的概念及在C C语言中的实现语言中的实现5 5 字符数据的输入输出字符数据的输入输出6 6 简单的格式输入与输出简单的格式输入与输出7 7 较复杂的输

2、入输出格式控制较复杂的输入输出格式控制大连理工大学软件学院大连理工大学软件学院41 程序的三种基本结构程序的三种基本结构v一个良好的程序由以下三种基本结构组成:一个良好的程序由以下三种基本结构组成:(1) (1) 顺序结构顺序结构(2) (2) 选择结构选择结构(3) (3) 循环结构循环结构大连理工大学软件学院大连理工大学软件学院5顺序结构顺序结构 数据的输入和传递数据的输入和传递 数据的操作数据的操作 结果的输出结果的输出BeginEndAInputCBOperationOnput1 程序的三种基本结构程序的三种基本结构大连理工大学软件学院大连理工大学软件学院62 C语句概述语句概述C程序

3、源程序文件1源程序文件2源程序文件n预处理命令函数n函数1数据声明函数首部函数体数据声明执行语句C程序的结构:程序的结构:大连理工大学软件学院大连理工大学软件学院7vC C语句分为语句分为5 5类类控制语句控制语句函数调用语句函数调用语句表达式语句表达式语句空语句空语句复合语句复合语句2 C语句概述语句概述一个语句经编译后产生若干条机器指令大连理工大学软件学院大连理工大学软件学院83 赋值表达式和赋值语句赋值表达式和赋值语句1.1.赋值运算符赋值运算符 赋值符号赋值符号“”就是赋值运算符,它的作用是将一个数就是赋值运算符,它的作用是将一个数据赋给一个变量。据赋给一个变量。 例:例: “a=3”

4、2.2.复合的赋值运算符复合的赋值运算符在赋值符在赋值符“”之前加上其他运算符,可以构成复合的之前加上其他运算符,可以构成复合的运算符。运算符。例:例: 等价于等价于 先计算先计算加,再加,再赋给赋给 把常量赋把常量赋给变量给变量 大连理工大学软件学院大连理工大学软件学院92.2.复合的赋值运算符复合的赋值运算符凡是二元(二目)运算符,都可以与赋值符一起组合成凡是二元(二目)运算符,都可以与赋值符一起组合成复合赋值符。有关算术运算的复合赋值运算符有:复合赋值符。有关算术运算的复合赋值运算符有:,*, 语言采用这种复合运算符,一是为了语言采用这种复合运算符,一是为了简化程序简化程序,使程,使程序

5、精练,二是为了序精练,二是为了提高编译效率提高编译效率,能产生质量较高的目标代,能产生质量较高的目标代码。码。3 赋值表达式和赋值语句赋值表达式和赋值语句大连理工大学软件学院大连理工大学软件学院103.3.赋值表达式赋值表达式 v 一般形式为:变量一般形式为:变量 赋值运算符赋值运算符 表达式表达式v 例:例:a=3v 赋值运算符左侧的标识符称为赋值运算符左侧的标识符称为“左值左值” v 赋值运算符右侧的表达式称为赋值运算符右侧的表达式称为“右值右值” v注意注意: 运算表达式和常量就不能作为左值 任何左值都可做右值3 赋值表达式和赋值语句赋值表达式和赋值语句大连理工大学软件学院大连理工大学软

6、件学院11 v思考题:思考题:v 下列各式中,下列各式中,a、b、c的值及赋值表达式的值分别是多少?的值及赋值表达式的值分别是多少?a=b=c=15a=(b=6)+3a=(b=7)+(c=2)a=(b=10)*(c=2)3 赋值表达式和赋值语句赋值表达式和赋值语句大连理工大学软件学院大连理工大学软件学院12 3.赋值表达式分析赋值表达式: (a=3*5)=4*3 赋值表达式为左值右值先执行括号内的运算,将先执行括号内的运算,将1515赋给赋给a a,然后执行,然后执行4 4* *3 3的的运算,得运算,得1212,再把,再把1212赋给赋给a a。最后。最后a a的值为的值为1212,整个表达

7、式,整个表达式的值为的值为1212。赋值表达式作为左值时应加括号赋值表达式作为左值时应加括号 a=3*5=4*3?3 赋值表达式和赋值语句赋值表达式和赋值语句大连理工大学软件学院大连理工大学软件学院13 v 赋值表达式也可以包含赋值表达式也可以包含复合的赋值运算符复合的赋值运算符。 例:例: a+=a-=a*av 赋值表达式作为表达式的一种,不仅可以出现在赋值语句中,赋值表达式作为表达式的一种,不仅可以出现在赋值语句中,而且可以而且可以以表达式形式出现在其他语句以表达式形式出现在其他语句(如输出语句、循环语(如输出语句、循环语句等)中句等)中 。 例:例: printf( “%d”,a=b);

8、3 赋值表达式和赋值语句赋值表达式和赋值语句大连理工大学软件学院大连理工大学软件学院14赋值过程中的类型转换赋值过程中的类型转换v 如果赋值运算符两侧的如果赋值运算符两侧的类型一致类型一致,则直接进行赋值。,则直接进行赋值。 例:例:i=6 (假设假设i已定义为已定义为int型型)v 如果赋值运算符两侧的类型不一致,但都是数值型或字符如果赋值运算符两侧的类型不一致,但都是数值型或字符型时,在赋值时要进行型时,在赋值时要进行类型转换类型转换。v 类型转换是类型转换是系统自动系统自动进行的。进行的。3 赋值表达式和赋值语句赋值表达式和赋值语句大连理工大学软件学院大连理工大学软件学院15v转换规则:

9、转换规则: 将将浮点型数据(包括单、双精度)赋给整型变量浮点型数据(包括单、双精度)赋给整型变量时,先对时,先对浮点数取为整,然后赋予整型变量。浮点数取为整,然后赋予整型变量。 将将整型数据赋给单、双精度变量整型数据赋给单、双精度变量时,数值不变,但以浮点时,数值不变,但以浮点数形式存储到变量中。数形式存储到变量中。 赋值过程中的类型转换赋值过程中的类型转换大连理工大学软件学院大连理工大学软件学院16赋值过程中的类型转换赋值过程中的类型转换 将将一个一个double型数据赋给型数据赋给float变量变量时,截取时,截取其前面其前面7位有效数字,存放到位有效数字,存放到float变量的存储单变量

10、的存储单元(元(4个字节)中。但应注意数值范围不能溢出;个字节)中。但应注意数值范围不能溢出;将将一个一个float型数据赋给型数据赋给double变量变量时,数值不时,数值不变,有效位数扩展到变,有效位数扩展到16位,在内存中以位,在内存中以8个字节个字节存储。存储。字符型数据赋给整型变量字符型数据赋给整型变量时,将字符的时,将字符的ASCII码码赋给整型变量。赋给整型变量。大连理工大学软件学院大连理工大学软件学院17将将一个占字节多的整型数据赋给一个占字节少的整型变量一个占字节多的整型数据赋给一个占字节少的整型变量/字符变量字符变量时,只将其低字节原封不动地送到该变量。时,只将其低字节原封

11、不动地送到该变量。 例:例: i=289; /* 已定义已定义i为整型变量为整型变量*/ c=a; /* 已定义已定义c为字符变量为字符变量*/ c=i; /* 将一个占将一个占2字节的字节的int型数据赋给型数据赋给char型变量型变量 */ 注意:要避免进行这种赋值,因为赋值后数值可能发生要避免进行这种赋值,因为赋值后数值可能发生失真失真。如果一定要进行这。如果一定要进行这种赋值,应当保证赋值后数值不会发生变化。种赋值,应当保证赋值后数值不会发生变化。赋值过程中的类型转换赋值过程中的类型转换大连理工大学软件学院大连理工大学软件学院18将将有符号整数赋值给长度相同的无符号整型变量有符号整数赋

12、值给长度相同的无符号整型变量时,按字节时,按字节原样赋值。原样赋值。void main() unsigned short a; /* 定义定义a为无符号整型变量为无符号整型变量 */ short b; /* 定义定义b为有符号整型变量为有符号整型变量 */ b=-1; a=b; printf(%un,a); 由于由于a a是无符号整型变量,因此不能用是无符号整型变量,因此不能用%d%d输出格式符,而要用输出输出格式符,而要用输出无符号数的无符号数的“%u”%u”格式符。格式符。运行结果:65535赋值过程中的类型转换赋值过程中的类型转换大连理工大学软件学院大连理工大学软件学院19执行执行“b=

13、a”b=a”时,将时,将a a的两个字节的两个字节( (全全1)1)赋给赋给b b,由于是有符号的整型数,笫,由于是有符号的整型数,笫1 1个二个二进位是进位是1 1表示此数是一个负数,表示此数是一个负数,1616位全位全1 1是是-1-1的补码。的补码。将将无符号整数赋值给长度相同的有符号整型变量无符号整数赋值给长度相同的有符号整型变量时,应注时,应注意不要超出有符号整型变量的数值范围,否则会出错。意不要超出有符号整型变量的数值范围,否则会出错。void main()unsigned short a;short b; a=65535; /* 两个字节两个字节16位全为位全为1 */ b=a;

14、 /* b的数值范围为的数值范围为-3276832767 */ printf(%dn,b);运行结果 -1赋值过程中的类型转换赋值过程中的类型转换大连理工大学软件学院大连理工大学软件学院20v转换规则:转换规则:按存储单元中的存储形式直接传送 赋值过程中的类型转换赋值过程中的类型转换大连理工大学软件学院大连理工大学软件学院21v 赋值语句是由赋值语句是由赋值表达式赋值表达式加上一个加上一个分号分号构成。构成。 v 赋值表达式的作用是将一个表达式的值赋给一个变量。赋值表达式的作用是将一个表达式的值赋给一个变量。v 赋值表达式具有赋值表达式具有计算计算和和赋值赋值双重功能。程序中的计算功能主双重功

15、能。程序中的计算功能主要是由赋值语句来完成。要是由赋值语句来完成。v 语言的赋值语句与其他高级语言的赋值语句之间的差异:语言的赋值语句与其他高级语言的赋值语句之间的差异: (1) 语言中的赋值号语言中的赋值号“”是是一个运算符一个运算符,在其他大多数语,在其他大多数语言中赋值号不是运算符。言中赋值号不是运算符。 (2) 要区别赋值表达式和赋值语句。其他多数高级语言没有要区别赋值表达式和赋值语句。其他多数高级语言没有“赋值表达式赋值表达式”这一概念。这一概念。赋值语句赋值语句大连理工大学软件学院大连理工大学软件学院22注意赋值号注意赋值号“”与等号与等号“= =”= =”的区别的区别以下两者截然

16、不同!以下两者截然不同!if(aif(a= =b) = =b) if(aif(a=b) =b) 赋值语句赋值语句大连理工大学软件学院大连理工大学软件学院23v 程序中对变量赋初值的方法有两种程序中对变量赋初值的方法有两种在定义变量的在定义变量的同时使变量初始化同时使变量初始化(更方便)(更方便)int a=3; /*指定指定a为整型变量,初值为为整型变量,初值为3 */ float f=3.56; /* f为浮点型变量,初值为浮点型变量,初值3.56 */ char c=a; /*指定指定c为字符变量,初值为为字符变量,初值为a */int a=b=c=3;用用赋值语句赋值语句对变量赋值对变量

17、赋值 int a; /*指定指定a为整型变量为整型变量*/ a3; /*赋值语句,将赋值语句,将3赋给赋给a */ 变量赋初值变量赋初值 大连理工大学软件学院大连理工大学软件学院24课堂练习课堂练习v 编程验证:编程验证:v 分别执行以下赋值表达式之后,变量分别执行以下赋值表达式之后,变量a、b、c的值以及赋值的值以及赋值表达式的是分别是多少。表达式的是分别是多少。 (1)a=3; (2)a=2;a*=9; (3)a=b=c=12; (4)a=(b=7)/(c=2); (5)a=4;a+=a-=a*a; (6)a=3*5=4*3;大连理工大学软件学院大连理工大学软件学院25( (一一) )所谓

18、输入输出是以计算机主机为主体而言的所谓输入输出是以计算机主机为主体而言的4 数据输入输出的概念数据输入输出的概念及在及在C语言中的实现语言中的实现显示器显示器,打印机打印机)键盘键盘,鼠标鼠标,扫描仪扫描仪 C提供的提供的IO函数实现内存外部设备进行数据交互功能函数实现内存外部设备进行数据交互功能 它们以库的形式存放在系统中,它们以库的形式存放在系统中, 不是不是c语言文本中的组成部分。语言文本中的组成部分。大连理工大学软件学院大连理工大学软件学院264 数据输入输出的概念数据输入输出的概念及在及在C语言中的实现语言中的实现v标准输出操作 printf() , putchar( ),puts(

19、)v标准输入操作 scanf(), getchar(), gets( )v复杂输入和输出 有格式的有格式的IO函数函数大连理工大学软件学院大连理工大学软件学院27v用用putcharputchar函数输出一个字符函数输出一个字符vputcharputchar函数(字符输出函数):向终端输出一个字函数(字符输出函数):向终端输出一个字符。符。v一般形式为一般形式为 putchar(cputchar(c) ) c可以是字符型变量或整型变量 5 字符数据的输入输出字符数据的输入输出大连理工大学软件学院大连理工大学软件学院28v用用getchargetchar函数输入一个字符函数输入一个字符vgetc

20、hargetchar函数(字符输入函数)函数(字符输入函数): :从终端输入一个字从终端输入一个字符。符。 vgetchargetchar函数没有参数,一般形式为函数没有参数,一般形式为 getchargetchar()()函数的值就是从输入设备得到的字符 5 字符数据的输入输出字符数据的输入输出大连理工大学软件学院大连理工大学软件学院296 简单格式的输入与输出简单格式的输入与输出v用简单的用简单的printfprintf函数输出数据函数输出数据vprintfprintf函数(格式输出函数):向终端(或系统隐函数(格式输出函数):向终端(或系统隐含指定的输出设备)输出若干个任意类型的数据。含

21、指定的输出设备)输出若干个任意类型的数据。vprintfprintf函数的一般格式为:函数的一般格式为: printfprintf(格式控制,输出表列)(格式控制,输出表列) 例:例: printf(”%d,%cn”,i,cprintf(”%d,%cn”,i,c) )大连理工大学软件学院大连理工大学软件学院30printf(格式控制,输出表列)用简单的用简单的printf函数输出函数输出数据数据用双撇号括起来的字符串,也称“转换控制字符串”格式说明:由“”和格式字符组成,如、等。它的作用是将输出的数据转换为指定的格式输出。格式说明总是由“”字符开始的。普通字符:需要原样输出的字符。例如上面pr

22、intf函数中双撇号内的逗号、空格和换行符。需要输出的一些数据,可以是常量、变量或表达式。大连理工大学软件学院大连理工大学软件学院31vprintfprintf函数的例子:函数的例子: printf(“aprintf(“a=%d b=%d”, a, b)=%d b=%d”, a, b) | | | | | | | | 格式说明格式说明 输出表列输出表列若若a=3a=3,b=4b=4输出为输出为 “ “a=3 b=4”a=3 b=4”用简单的用简单的printf函数输出函数输出数据数据大连理工大学软件学院大连理工大学软件学院32v基本的格式字符有以下几种:基本的格式字符有以下几种: d d格式符

23、。按十进制整型数据的实际长度输出。格式符。按十进制整型数据的实际长度输出。 i i格式符。作用与格式符相同,按十进制整型格式符。作用与格式符相同,按十进制整型数据的实际长度输出。一般习惯用数据的实际长度输出。一般习惯用%d%d而少用而少用%i%i。 c c格式符。用来输出一个字符。格式符。用来输出一个字符。 一个值在0255范围内的整数,也可以用 “%c”使之按字符形式输出 用简单的用简单的printf函数输出函数输出数据数据大连理工大学软件学院大连理工大学软件学院33运行结果:, , v例例3.5 3.5 字符数据的输出。字符数据的输出。 #include#include void main

24、()void main() char c=a; char c=a; intint i=97; i=97; printf(%c,%dn,c,cprintf(%c,%dn,c,c);); printf(%c,%dn,i,iprintf(%c,%dn,i,i);); 用简单的用简单的printf函数输出函数输出数据数据大连理工大学软件学院大连理工大学软件学院34格式符,用来输出一个字符串。格式符,用来输出一个字符串。 例:例: printfprintf (,CHINA); ; 输出字符串输出字符串“CHINA”(不包括双引号)(不包括双引号)格式符。用来输出实数(包括单、双精度),格式符。用来输出实

25、数(包括单、双精度),以小数形式输出,不指定整个字段的长度,由系以小数形式输出,不指定整个字段的长度,由系统自动指定。一般的处理方法是:整数部分全部统自动指定。一般的处理方法是:整数部分全部输出,并输出位小数。输出,并输出位小数。用简单的用简单的printf函数输出函数输出数据数据大连理工大学软件学院大连理工大学软件学院35运行结果:.结果中只有前七位是有效数字。由于x和y是单精度变量,所以x+y也只能保证7位的精度,后面几位是没有意义的。 用简单的用简单的printf函数输出函数输出数据数据v例例3.6 输出实数时的有效位数。输出实数时的有效位数。 #includevoid main() f

26、loat x,y; x=11111111.11111111; y=22222222.22222222; printf(%fn, x+y); 大连理工大学软件学院大连理工大学软件学院36运行结果:33333333.333333 x和y是双精度变量,能提供16位精度,但是由于用%f格式输出,只能输出6位小数 ,有两位被省掉了。v例例3.7 3.7 输出双精度数时的有效位数。输出双精度数时的有效位数。 #includevoid main() double x,y; x=11111111.11111111; y=22222222.22222222; printf(%fn, x+y);用简单的用简单的p

27、rintf函数输出函数输出数据数据%17.8f可全部输出可全部输出大连理工大学软件学院大连理工大学软件学院37 (6)(6)格式符,用格式说明格式符,用格式说明 指定以指数形式输出实指定以指数形式输出实数。数。 例:例:printfprintf(,123.456123.456);输出如下);输出如下 1.2345601.234560 e+002e+002 6 6列列 5 5列列C编译系统自动指定给出数字部分的小数位数为位,指数部分占5位 用简单的用简单的printf函数输出函数输出数据数据大连理工大学软件学院大连理工大学软件学院38vscanfscanf函数:按照变量在内存的地址将变量函数:按

28、照变量在内存的地址将变量值存进去。值存进去。v一般格式:一般格式:scanfscanf(格式控制,地址表列)(格式控制,地址表列)同printf函数是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址用简单的用简单的scanf函数输入函数输入数据数据大连理工大学软件学院大连理工大学软件学院39运行情况:运行情况:3 4 5 3 4 5 ( (输入输入a,b,ca,b,c的值,的值,) )3 3,4 4,5 5 (输出(输出a,b,ca,b,c的值)的值)a a在内存中的地在内存中的地址址& &是地址运算符是地址运算符输入数据时,在两个数据之间以一个或多个空格间隔,也可以

29、用Enter键、Tab键。 v 例例3.8 3.8 用用scanfscanf函数输入数据。函数输入数据。v #include#include void main()void main() intint a,b,ca,b,c; ;scanf(“%d%d%d”,&a,&b,&cscanf(“%d%d%d”,&a,&b,&c););printf(“%d,%d,%dn”,a,b,cprintf(“%d,%d,%dn”,a,b,c);); 用简单的用简单的scanf函数输入函数输入数据数据大连理工大学软件学院大连理工大学软件学院40vscanfscanf函

30、数的格式说明与函数的格式说明与printfprintf函数的相似,以开函数的相似,以开始,以一个格式字符结束,中间可插入附加的字符。始,以一个格式字符结束,中间可插入附加的字符。例:例:scanf(”%d%d%d”.&a,&b,&cscanf(”%d%d%d”.&a,&b,&c); ); / /* * 格式控制字符串中包含格式控制字符串中包含3 3个格式说明符个格式说明符%d %d * */ /scanf(”ascanf(”a=%db=%dc=%=%db=%dc=%d”.&a,&b,&cd”.&a,&b,&

31、amp;c); ); / /* * 格式控制字符串中包含格式说明符以外的字格式控制字符串中包含格式说明符以外的字符符 * */ /用简单的用简单的scanf函数输入函数输入数据数据大连理工大学软件学院大连理工大学软件学院41( (1) 1) scanfscanf函数中的函数中的“格式控制格式控制”后面应当是变量地址,而不应后面应当是变量地址,而不应是变量名。是变量名。(2) (2) 如果在如果在“格式控制格式控制”字符串中除了格式说明以外还有其他字字符串中除了格式说明以外还有其他字符,则在输入数据时在对应位置应输入与这些字符相同的字符,则在输入数据时在对应位置应输入与这些字符相同的字符。符。

32、(3) (3) 在用在用“”格式输入字符时,空格字符和格式输入字符时,空格字符和“转义字符转义字符”都都作为有效字符输入。作为有效字符输入。 (4) (4) 在输入数据时,空格,在输入数据时,空格, “ “回车回车”、“跳格跳格”(TabTab)键或遇)键或遇非法输入,认为该数据结束。非法输入,认为该数据结束。(5) (5) 对对unsignedunsigned型变量所需的数据,可以用型变量所需的数据,可以用%u%u或或%d%d格式输入。格式输入。 用简单的用简单的scanf函数输入函数输入数据数据大连理工大学软件学院大连理工大学软件学院42v输出数据格式控制输出数据格式控制v 除了上节所介绍

33、的基本的格式控制外,还可以用下面一除了上节所介绍的基本的格式控制外,还可以用下面一些格式符和附加字符。些格式符和附加字符。 为指定的输出字段的宽度。如果数据的位数为指定的输出字段的宽度。如果数据的位数小于,则左端补以空格,若大于,则按实际位数输小于,则左端补以空格,若大于,则按实际位数输出。出。例例: : printfprintf (“%4d,%4d,a,b”); (“%4d,%4d,a,b”);若若: a=123: a=123,d=12345,d=12345,则输出结果为则输出结果为: : 123123,12345123457 较复杂的格式输入与输较复杂的格式输入与输出(自学)出(自学)大连

34、理工大学软件学院大连理工大学软件学院43 %ld%ld 对于对于intint型数据占型数据占2 2字节的系统,在输出字节的系统,在输出长整型长整型数据时要在格式字符数据时要在格式字符d d前面加一个英文字毋前面加一个英文字毋l l。例例: : long a=135790; / long a=135790; /* * 定义定义a a为长整型为长整型变量变量* */ / printf(“%ld,aprintf(“%ld,a););%d只适用于范围为-3276832767的整型数据,超过此范围的整数,应该用%ld输出 说明:说明:如果用的是如果用的是VC+ 6.0VC+ 6.0,由于,由于intin

35、t型和型和longlong型数据都型数据都分配分配4 4个字节,因此用个字节,因此用%d%d可以输出可以输出intint和和longlong型数据,不型数据,不必要用必要用%ld%ld。输出数据格式控制输出数据格式控制大连理工大学软件学院大连理工大学软件学院44 % % 以以8 8进制整数形式输出。由于是将内存单元中的进制整数形式输出。由于是将内存单元中的各位的值(或)按八进制形式输出,因此输出的数各位的值(或)按八进制形式输出,因此输出的数值值不带符号不带符号,即将符号位也一起作为八进制数的一部分,即将符号位也一起作为八进制数的一部分输出。输出。例:例:intint a=-1; a=-1;

36、printf(%dprintf(%d,%o%o,a a,a); a); 在内存单元中的存放形式(以补码形式存放)如下:在内存单元中的存放形式(以补码形式存放)如下: 输出为输出为: : ,1111111111111111用%d输出的结果1,111,111,111,111,111 | | | | | |1 7 7 7 7 7二进数111就是8进数7。因此上面的数用8进制数表示为17777 输出数据格式控制输出数据格式控制大连理工大学软件学院大连理工大学软件学院45 % % 以以1616进制数形式输出整数。同样进制数形式输出整数。同样不会出现负的不会出现负的十六进制数。十六进制数。例:例: int

37、int a= -1; a= -1; printf(“%x,%o,%d”,a,a,aprintf(“%x,%o,%d”,a,a,a);); 输出结果为输出结果为 ffffffff,177777177777,-1-1 同样可以用同样可以用 “%1x”%1x”输出长整型数,也可以指定输出输出长整型数,也可以指定输出字段的宽度,如字段的宽度,如“%12x”%12x”。 输出数据格式控制输出数据格式控制大连理工大学软件学院大连理工大学软件学院46 % % 用来输出无符号用来输出无符号(unsigned)(unsigned)型数据,以十进型数据,以十进制整数形式输出。一个有符号整数(制整数形式输出。一个有

38、符号整数(intint型)也可型)也可以用以用%u%u格式输出;反之,一个格式输出;反之,一个unsignedunsigned型数据也可型数据也可以用以用%d%d格式输出。按相互赋值的规则处理。格式输出。按相互赋值的规则处理。unsignedunsigned型数据也可用型数据也可用%o%o或或%x%x格式输出。格式输出。 c c 用来指定输出字符数据的宽度用来指定输出字符数据的宽度m m 如果有如果有printf(“%3c”,c); printf(“%3c”,c); 则输出则输出“ “ a”a”,即变量输出占列,前列,即变量输出占列,前列补空格。补空格。输出数据格式控制输出数据格式控制大连理工

39、大学软件学院大连理工大学软件学院47Turbo C 2.0Turbo C 2.0环境下的运行结果环境下的运行结果: : a=-1a=-1,177777177777,ffffffff,6553565535b=-2b=-2,177776177776,fffefffe,6553465534VC+6.0VC+6.0环境下的运行结果环境下的运行结果: : a=65535a=65535,177777177777,ffffffff,6553565535=-2=-2,3777777777637777777776,fffffffefffffffe,42949672944294967294v例例3.9 3.9 无

40、符号数据的输出。无符号数据的输出。#include#include void main()void main() unsigned unsigned intint a=65535;int b=-2; a=65535;int b=-2;printf(“aprintf(“a=%=%d,%o,%x,%un”,a,a,a,ad,%o,%x,%un”,a,a,a,a););printf(“bprintf(“b=%=%d,%o,%x,%un”,b,b,b,bd,%o,%x,%un”,b,b,b,b);); 输出数据格式控制输出数据格式控制大连理工大学软件学院大连理工大学软件学院48 指定输出的字符串占列。

41、如果字符串本身长度大于,则指定输出的字符串占列。如果字符串本身长度大于,则突破的限制,将字符串全部输出。若串长小于,则左补空格。突破的限制,将字符串全部输出。若串长小于,则左补空格。 - - 如果串长小于,则在列范围内,字符串向左靠,右补空如果串长小于,则在列范围内,字符串向左靠,右补空格。格。 .n.n 输出占列,但只取字符串中左端个字符。这个字符输出占列,但只取字符串中左端个字符。这个字符输出在列的右侧,左补空格。输出在列的右侧,左补空格。 . . 其中、含义同上,个字符输出在列范围的左侧,其中、含义同上,个字符输出在列范围的左侧,右补空格。如果,则自动取值,即保证个字符正常输出。右补空格

42、。如果,则自动取值,即保证个字符正常输出。. . 指定输出的实数共占列,其中有位小数。如果数值长指定输出的实数共占列,其中有位小数。如果数值长度小于,则左端补空格。度小于,则左端补空格。 . .与与. .基本相同,只是使输出的数值向左端靠,右基本相同,只是使输出的数值向左端靠,右端补空格。端补空格。输出数据格式控制输出数据格式控制大连理工大学软件学院大连理工大学软件学院49v 例例3.10 3.10 字符串的输出。字符串的输出。#include#include void main()void main() printf(“%3s,%7.2s,%.4s,%-5.3sn”, “CHINA”, pr

43、intf(“%3s,%7.2s,%.4s,%-5.3sn”, “CHINA”, “CHINA”, “CHINA”, “CHINA”);“CHINA”, “CHINA”, “CHINA”); 运行结果:运行结果:CHINA,_CH,CHIN,CHI_CHINA,_CH,CHIN,CHI_ 输出数据格式控制输出数据格式控制大连理工大学软件学院大连理工大学软件学院50v 例例3.11 3.11 输出实数时指定小数位数。输出实数时指定小数位数。#include #include void mainvoid main()() float f=123.456;float f=123.456;printf(

44、“%fprintf(“%f %10f %10.2f %.2f% -10.2f %10f %10.2f %.2f% -10.2fn”n”,f f,f f,f f,f f,f);f);运行结果:运行结果:123.456001 123.456001 123.456001123.456001 _123.46 123.46 _123.46 123.46 123.46123.46_ 输出数据格式控制输出数据格式控制大连理工大学软件学院大连理工大学软件学院51运行结果:运行结果:r1= 1.53r1= 1.53r2= 21.83r2= 21.83r3= 123.71r3= 123.71v 例例3.123.1

45、2求求3 3个圆的周长,输出结果时上下按小数点对个圆的周长,输出结果时上下按小数点对齐,取两位小数。齐,取两位小数。 #include #include #define PI 3.1415926#define PI 3.1415926void main ( )void main ( ) double r1=1.53,r2=21.83,r3=123.71,s1,s2,s3; double r1=1.53,r2=21.83,r3=123.71,s1,s2,s3; s1=2.0 s1=2.0* *PIPI* *r1;r1; s2=2.0 s2=2.0* *PIPI* *r2;r2; s3=2.0 s

46、3=2.0* *PIPI* *r3;r3; printf(r1=%10.2fnr2=%10.2fnr3=%10.2fn,r1,printf(r1=%10.2fnr2=%10.2fnr3=%10.2fn,r1,r2,r3);r2,r3); 输出数据格式控制输出数据格式控制大连理工大学软件学院大连理工大学软件学院52 m.ne和-m.ne 、和“”字符的含义与前相同。此处指拟输出的数据的小数部分(又称尾数)的小数位数。若123.456,则: printf(%e %10e %10.2e %.2e %-10.2e,f,f,f,f,f); 输出如下: 1.234560e+002 1.234560e+00

47、2 1.23e+002 1.23e+002 13列 13列 10列 9列 1.23e+002 10列说明: 未指定,自动使. 超过给定的列,乃突破列的限制,按实际长度输出。 第3个数据共占列,小数部分占列。 只指定,未指定,自动使等于数据应占的长度。 第5个数据应占列,数值只有列,由于是“”, 数值向左靠,右补一个空格。(注:有的C系统的输出格式与此略有不同) 输出数据格式控制输出数据格式控制大连理工大学软件学院大连理工大学软件学院53 (10)%g 用来输出实数. 它根据数值的大小,自动选格式或格式(选择输出时占宽度较小的一种),且不输出无意义的零。 例:若123.468,则printf(

48、,);输出如下:123.468000 1.234680e+002 123.468 10列 13列 10列说明:用格式输出占列,用格式输出占列,用格式时,自动从上面两种格式中选择短者(今以格式为短)故占列,并按格式用小数形式输出,最后3个小数位为无意义的,不输出,因此输出123.468,然后右补3个空格。格式用得较少。输出数据格式控制输出数据格式控制大连理工大学软件学院大连理工大学软件学院54说明:说明:v除了除了X X,E E,G G外,其他各式字符必须用小写。外,其他各式字符必须用小写。v可以在可以在printfprintf函数中的函数中的“格式控制格式控制”字符串中包含字符串中包含转义字符

49、。转义字符。v一个格式说明必须以一个格式说明必须以“%”%”开头,以开头,以9 9个格式字符之个格式字符之一为结束,中间可以插入附加格式字符。一为结束,中间可以插入附加格式字符。v想输出想输出% %,则应该在格式控制字符串中用连续两个,则应该在格式控制字符串中用连续两个% %表示表示输出数据格式控制输出数据格式控制大连理工大学软件学院大连理工大学软件学院55格式字符格式字符说明说明d, id, i用来输入有符号的十进制整数用来输入有符号的十进制整数 u u用来输入无符号的十进制整数用来输入无符号的十进制整数 o o用来输入无符号的八进制整数用来输入无符号的八进制整数 x X x X 用来输入无

50、符号的十六进制整数用来输入无符号的十六进制整数( (大小写作用相同大小写作用相同) ) c c用来输入单个字符用来输入单个字符 s s用来输入字符串,将字符串送到一个字符数组中,在用来输入字符串,将字符串送到一个字符数组中,在输入时以非空白字符开始,以第一个空白字符结束。输入时以非空白字符开始,以第一个空白字符结束。字符串以串结束标志字符串以串结束标志作为其最后一个字符作为其最后一个字符 f f用来输入实数,可以用小数形式或指数形式输入用来输入实数,可以用小数形式或指数形式输入 e E g G e E g G 与作用相同,与、与作用相同,与、g g可以互相替换可以互相替换( (大小写作用大小写作用相同相同) ) 表.scanf格式字符 输出数据格式控制输出数据格式控制大连理工大学软件学院大连理工大学软件学院56字符字符说明说明l l用于输入长整型数据(可用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论