一章顺序结构

上传人:re****.1 文档编号:569510902 上传时间:2024-07-30 格式:PPT 页数:33 大小:1.07MB
返回 下载 相关 举报
一章顺序结构_第1页
第1页 / 共33页
一章顺序结构_第2页
第2页 / 共33页
一章顺序结构_第3页
第3页 / 共33页
一章顺序结构_第4页
第4页 / 共33页
一章顺序结构_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《一章顺序结构》由会员分享,可在线阅读,更多相关《一章顺序结构(33页珍藏版)》请在金锄头文库上搜索。

1、1AB 顺序结构一般由函数调用语句、说明语句、表达式顺序结构一般由函数调用语句、说明语句、表达式语句和输入输出语句组成。语句和输入输出语句组成。顺序结构:顺序结构:按语句出现先后顺序依次执行的程序结构。按语句出现先后顺序依次执行的程序结构。 顺序结构是程序设计中最简单、最基本的结构,其特点顺序结构是程序设计中最简单、最基本的结构,其特点是程序运行时,按语句书写的次序依次执行,其结构如是程序运行时,按语句书写的次序依次执行,其结构如图所示。图所示。催淳绩躁碌涂椭蜕谅汉庆藐恳甚原傻韧腹敲脖像鼻雨燥焰撇混痪犊噪痢铱一章顺序结构一章顺序结构12 一、一、C C语句的分类语句的分类1. 1. 表达式语句

2、表达式语句2. 2. 函数调用语句函数调用语句3. 3. 控制语句控制语句4. 4. 复合语句复合语句5. 5. 空语句空语句 完成一定的控制功能。包括选择结构控制语完成一定的控制功能。包括选择结构控制语句、循环结构控制语句、其他控制语句。句、循环结构控制语句、其他控制语句。表达式语句由表达式后加上分号表达式语句由表达式后加上分号“;”组组成。成。由函数名、实际参数加上分号由函数名、实际参数加上分号“;”组组成。成。 把把多多个个语语句句用用括括号号括括起起来来组组成成的的一一个个语语句句组称复合语句。组称复合语句。 只有分号只有分号“;”组成的语句称为空语句。空语组成的语句称为空语句。空语句

3、是什么也不执行的语句。在程序中空语句可用来句是什么也不执行的语句。在程序中空语句可用来作空循环体。作空循环体。第第3 3章章 顺序结构顺序结构蒲撕酵学哗娩唯在软膊扑枕扶彻鹿烷揍衙驰寐有映颊屁谰钝蔗维启呈孔龋一章顺序结构一章顺序结构23 二、二、C C语句示例语句示例while(getchar()!=n); /*这里的循环体为空语句。本语句的功能是,只要从键盘输这里的循环体为空语句。本语句的功能是,只要从键盘输入的字符不是回车则重新输入。入的字符不是回车则重新输入。*/第第3 3章章 顺序结构顺序结构a+4*b; 算术表达式语句算术表达式语句4*x,4+y; 逗号表达式语句逗号表达式语句x=4*

4、5; 赋值表达式语句赋值表达式语句(赋值语句赋值语句)printf(“Hello Everyone!”) ; 函数调用分号3.2 数据输入输出一、数据输入输出的概念计算机的输入输出是以计算机主机为主体而言。输入:从外部通过输入设备(如键盘、磁盘输入:从外部通过输入设备(如键盘、磁盘 、光盘、扫描仪等)向计算机输入、光盘、扫描仪等)向计算机输入数据。数据。输出:从计算机向外部设备(如显示屏、打印机、磁盘等)输出数据。输出:从计算机向外部设备(如显示屏、打印机、磁盘等)输出数据。藉踏褂宁笺沪奇妮健旬抄丫皱洗钮纸域易岩洋媳级库骑可衬屯沾忧惭途鹿一章顺序结构一章顺序结构34 第第3 3章章 顺序结构顺

5、序结构二、二、数据输入输出在语言中的实现数据输入输出在语言中的实现调用输入输出库函数实现输入输出操作 语言本身不提供输入输出语句,输入和输出操作是通过调用语言库函数中输入输出函数来实现的。如: printf函数格式输出 putchar函数输出字符 scanf函数格式输入 getchar函数输入字符 puts 函数输出字符串 gets 函数输入字符串2文件开头应有“#include”命令 在调用标准输入输出库函数时,文件开头应有编译预处理命令: #include #include/*/*系统到存放系统到存放C库函数头文件的目录中寻找要包含的文件,此为标准方库函数头文件的目录中寻找要包含的文件,此

6、为标准方式。式。*/或或 #include #include”stdio.hstdio.h”/*/*系统先在用户当前目录中寻找要包含的文件,若找不到,再按标系统先在用户当前目录中寻找要包含的文件,若找不到,再按标准方式查找。准方式查找。*/stdio.h是是”头文件头文件”,包含了与用到的标准输入输出函数有关的信息。头文件,包含了与用到的标准输入输出函数有关的信息。头文件的扩展名为的扩展名为.h,如,如 string.h对字符串进行操作的标准函数对字符串进行操作的标准函数; math.h有关数学的标准函数。有关数学的标准函数。 库函数:是将函数放到一个文件里,供编程人员使用,一般是放到.lib

7、文件里的。 有两类库函数,一类是c语言标准规定的库函数,一类是编译器特定的库函数。妄夺喻蓄尔谨掩展尔勋重魄辙巳量低亭闷朋账群搁储炕庙鹃美籍黎味古匡一章顺序结构一章顺序结构4说明:说明:1.输出项也称为输出参数,可以是变量、常量、表达式,输出项之间用逗号输出项也称为输出参数,可以是变量、常量、表达式,输出项之间用逗号“,”隔开。隔开。2.printf函数是将各个输出项的值按照格式控制字符串中指定的格式输出。函数是将各个输出项的值按照格式控制字符串中指定的格式输出。例如:例如:printf(“%d”,5); /*把把5以以%d的形式输出的形式输出*/ printf(“%d”,5-6); /*把表达

8、式把表达式5-6的值的值1以以%d的形式输出的形式输出*/ printf(“%d”,a); /*把变量把变量a的值以的值以 %d的形式输出的形式输出*/3. 格式控制字符串里面包含三种类型的字符:格式控制字符串里面包含三种类型的字符:(1)以)以%开头的格式说明,用于控制输出项的输出格式,其一般形式为:开头的格式说明,用于控制输出项的输出格式,其一般形式为:%修饰符修饰符格式字符格式字符 以以%开头的格式说明的个数和输出项列表中输出项的个数是一一对应的,因此二者开头的格式说明的个数和输出项列表中输出项的个数是一一对应的,因此二者的数目必须一致。的数目必须一致。 (2)转义字符,以反斜线)转义字

9、符,以反斜线“”开头,后面紧跟一个特定的字符,用来代表某个特定的操开头,后面紧跟一个特定的字符,用来代表某个特定的操作。如作。如“n”代表回车。代表回车。(3)普通字符,在显示器上原样输出,主要起解释、说明作用。)普通字符,在显示器上原样输出,主要起解释、说明作用。除了格式说明和转义字除了格式说明和转义字符之外,在格式控制中的其他字符(包含空格)均按原样输出。符之外,在格式控制中的其他字符(包含空格)均按原样输出。5 一、一、printfprintf函数的调用形式函数的调用形式printf(printf(格式控制格式控制, ,输出项列表输出项列表) )在printf函数调用之后加上“,”,就构

10、成了输出语句:printf(“格式控制字符串格式控制字符串”,输出项列表输出项列表);u功能:按控制字符串规定的输出格式,把输出项的值依次输出到系统指定的缺省输出设备,通常为显示器。int a=3,b=4; printf(“a=%d b=%#odn ”, a, b );格式控制字符格式控制字符普通字符普通字符输出项输出项转义字符转义字符“格式控制字符串”输出项1,输出项2,输入项n序冯匆图澳冕侩祸磺哲置酌土卒翠付幽指炎耳厂潍掩诬吗疹骆宜屿查泣都一章顺序结构一章顺序结构56二、格式说明格式说明的一般形式为: %-+0#整数整数1.整数整数2l或或h 格式字符格式字符说明:1.它是由“%”开头,以

11、格式字符(英文字母)结束的一串字符。2. -+0#整数1.整数2l或h为可选项, 中的字符为修饰符,可以控制输出的宽度、精度、小数位数、对齐方式等。3. 格式字符是格式控制(说明)中必须要有的,它控制输出列表里相应输出项数据的输出类型。#includemain()printf(%d,%#o,%#xn,345,345,345);printf(%d,%#o,%#xn,0234,0234,0234);printf(%d,%#o,%#xn,0x6e,0x6e,0x6e);运行结果:345,0531,0x159156,0234,0x9c110,0156,0x6e豆稀绚斥过砌若奴橇换纹席南荆呐廓犹肇戌鲜胃

12、峭符瑶胡烦唆盆幂牧师恶一章顺序结构一章顺序结构67二、格式说明1. 格式字符格式字符格式字符含义d或i表示以十进制形式输出一个带符号的整数o表示以八进制形式输出一个无符号的整数X,x表示以十六进制形式输出一个无符号的整数u表示以十进制形式输出一个无符号的整数f表示以小数形式输出带符号的实数(包括单、双精度)E,e表示以指数形式输出带符号的实数G,g表示由系统决定选择以%f或%e格式输出实数,使得输出的宽度最小(选择占宽度较小的一种格式输出)。c表示输出一个单字符s表示输出一个字符串,直到遇到“0”(空值)p表示输出变量的内存地址%即%,表示输出一个%。注:大写字母表示输出中的字母为大写铺隘争活

13、岂难薪钟赡巫反馈詹幢荷吴冲愉肘部拭深尽毡墅袒回拭炳哥熏骗一章顺序结构一章顺序结构7#includevoid main()int a,b;double x,y;a=9;x=6.5;y=1.9;printf(x+a%4*(int)(x-y)%3/5=%fn,x+a%4*(int)(x-y)%3/5);a=2;b=3;x=4.5;y=6.7;printf(float)(a+b)/3+(int)x%(int)y=%fn,(float)(a+b)/3+(int)x%(int)y );8二、格式说明1. 格式字符#includevoid main()int a,b;double x,y;a=9;x=6.5

14、;y=1.9;printf(x+a%4*(int)(x-y)%3/5=%fn,x+a%4*(int)(x-y)%3/5);a=2;b=3;x=4.5;y=6.7;printf(float)(a+b)/3+(int)x%(int)y=%fn,(float)(a+b)/3+(int)x%(int)y );运行结果:x+a%4*(int)(x-y)%3/5=6.500000(float)(a+b)/3+(int)x%(int)y=5.666667运行结果:x+a*(int)(x-y)/5=6.500000(float)(a+b)/3+(int)x(int)y=5.666667愁哩栏蛆绞灶曝渗郭眉拖牢

15、惨塌媒靡闲驮乞稳胯竹曙鲜净捏苫镭历绑栖拢一章顺序结构一章顺序结构89二、格式说明 1. 格式字符(1)与整型数据的格式输出有关的格式说明)与整型数据的格式输出有关的格式说明 %d(%i)、 %o、 %X(%x)、%u#includevoid main()int a=123;printf(%d,%o,%X,%x,%un,a,a,a,a,a);printf(%d %o %X %x %un,a,a,a,a,a);printf(%i,%o,%X,%x,%u,a,a,a,a,a);printf(%d %o %X %x %un,a,a,a,a,a); int b=-123;printf(%d,%o,%X,

16、%x,%un,b,b,b,b,b);u或%i: 按十进制整型数据的实际长度输出,正数不输出符号“+” 。u%o:以八进制形式输出整型数据,输出的数值不带符号,符号位也一起作为八进制 数的一部分输出,输出的八进制整数不带前缀0。u%x或%X:以十六进制数形式输出不带前缀0x或0X的正整数。u%u: 以无符号十进制数形式输出整型数据.运行结果:123,173,7B,7b,123123 173 7B 7b 123123,173,7B,7b,123123 173 7B 7b 123-123,37777777605,FFFFFF85,ffffff85,4294967173掌抱血久法喳庞蟹头浅馅匝窗篡音宴

17、圾院墟枪寨嗽旧濒甸悼惫箍醚轴租募一章顺序结构一章顺序结构910二、格式控制二、格式控制1. 格式字符格式字符(2)与实型数据的格式输出有关的格式说明)与实型数据的格式输出有关的格式说明 %f、 %E(%e)、%G、%g#includevoid main()float a=1234.56789;printf(%f,%E,%e,%G,%gn,a,a,a,a,a);double b=1234.56789;printf(%f,%E,%e,%G,%gn,b,b,b,b,b);uf:以小数形式输出实数(包括单、双精度数),不指定字段宽度,由系统自动指定以小数形式输出实数(包括单、双精度数),不指定字段宽度

18、,由系统自动指定字段宽度,使整数部分全部输出,并输出位小数。应当注意,在输出的数字中并非全字段宽度,使整数部分全部输出,并输出位小数。应当注意,在输出的数字中并非全部数字都是有效数字,单精度实数的有效位数一般为部数字都是有效数字,单精度实数的有效位数一般为7-8位;双精度实数的有效位数一般位;双精度实数的有效位数一般为为15-16位。位。u%E或或%e: 以指数形式输出实数以指数形式输出实数(单单,双精度数双精度数)。输出数据为标准指数形式,隐含精度为。输出数据为标准指数形式,隐含精度为6,小数部分,小数部分(尾数)的小数位数为尾数)的小数位数为3,即,即%e输出形式为输出形式为-m.dddd

19、ddexxx,%E输出形式输出形式为为-m.ddddddExxx ,共占列宽度。,共占列宽度。u%G或或%e:根据数值的大小,自动选格式或格式,使得数据的输出宽度最小,且不根据数值的大小,自动选格式或格式,使得数据的输出宽度最小,且不输出无意义的零。输出无意义的零。%g对应输出的指数形式为对应输出的指数形式为-m.ddddddexxx, %G对应输出的指数形对应输出的指数形式为式为-m.ddddddExxx。格式用得较少。格式用得较少。运行结果:1234.567871,1.234568E+003,1.234568e+003,1234.57,1234.571234.567890,1.234568

20、E+003,1.234568e+003,1234.57,1234.57拱授仍窿衫很月颠捶猫脱踏素位析怀汕嫉紊贺蒋酸鬃喇考歧股其淋眨委稿一章顺序结构一章顺序结构1011二、格式控制2. 修饰符修饰符功能-使输出结果左对齐,右边补空格。(默认右对齐)+指定在数据前显示符号(正号或负号)0输出数值时指定左边不使用的空位置自动填0(零)。#在八进制和十六进制数前显示前缀0,0xm(整数1)指定输出数据的宽度,用十进制整数来表示输出数据的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则左端补空格。.n(.整数2)指定输出数据的精度,以“.”开头,后跟十进制整数;如果输出的

21、是数字,则表示输出小数部分的位数(四舍五入);如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。h在d,o,x,u前使用,指定输出精度为short型l(L)在d,o,x,u前使用,指定输出精度为long型在e,f,g前使用,指定输出精度为double型波孜摈脏瞩妥眩抱奋晕接粘邑檄姆胁怔肾弱程眶瘟它忧球循烘恳奠仕佃舵一章顺序结构一章顺序结构1112二、格式控制2. 修饰符(1) 宽度说明:宽度说明: 在在%和格式字符之间加入一个整数来指定输出数据的宽度。和格式字符之间加入一个整数来指定输出数据的宽度。u如果指定的宽度如果指定的宽度m大于数据实际的宽度,大于数

22、据实际的宽度, 则输出数据的左端则输出数据的左端用空格补足;用空格补足;u如果指定的宽度如果指定的宽度m小于数据实际的宽度,则按实际位数输出,小于数据实际的宽度,则按实际位数输出,这时指定的宽度不起作用。这时指定的宽度不起作用。为整型数据指定输出宽度为整型数据指定输出宽度umd: 输出宽度为输出宽度为m的十进制整型数据。的十进制整型数据。umo: 输出宽度为输出宽度为m的八进制整型数据。的八进制整型数据。umx或或%mX:输出宽度为输出宽度为m的十六进制整型数据。的十六进制整型数据。#includemain()int a=1234567;printf(%3d,%12dn,a,a);printf

23、(%3o,%12on,a,a);printf(%3x,%12xn,a,a);运行结果:运行结果:1234567, 12345674553207, 455320712d687, 12d687Press any key to continue-持婶拉良攀程呜捏堂戚酷粘篇享管架踏含件八涝庆树斡魂完赣狡伤技拒蝉一章顺序结构一章顺序结构1213二、格式控制2. 修饰符(1) 宽度说明宽度说明为实型数据指定输出宽度为实型数据指定输出宽度u%m.nf: 输出位的小数形式,包含输出位的小数形式,包含1位小数点,其中有位小数位数。位小数点,其中有位小数位数。um.ne: 输出位的指数形式输出位的指数形式 ,包含

24、,包含1位小数点,其中有位小数位数。位小数点,其中有位小数位数。注意:注意:当数据的小数位数大于指定的宽度当数据的小数位数大于指定的宽度n时,截去右边多余的数,并对截去的第一时,截去右边多余的数,并对截去的第一位小数做四舍五入处理;当数据的小数位数小于指定宽度位小数做四舍五入处理;当数据的小数位数小于指定宽度n时,在小数的右边添时,在小数的右边添0,使得输出数据的小数位数等于,使得输出数据的小数位数等于n。当数据的实际位数小于当数据的实际位数小于m时,则输出数据的左端用空格补足,使得输出数据的时,则输出数据的左端用空格补足,使得输出数据的位数等于位数等于n ;当数据的实际位数大于;当数据的实际

25、位数大于m时,则按实际位数输出数据,这时指定时,则按实际位数输出数据,这时指定的宽度不起作用。的宽度不起作用。u%mf或或%me:只指定宽度,小数位数按系统指定的形式输出。只指定宽度,小数位数按系统指定的形式输出。u%.nf或或%.ne:不指定宽度,只指定小数位的位数输出形式。不指定宽度,只指定小数位的位数输出形式。堤湾脚其惊葛超泡椒乃右辣蓑皿算搓免食筏个梗阔枷佳脏肢蹿百敝彼俞鞭一章顺序结构一章顺序结构1314(1) 宽度说明宽度说明为实型数据指定输出宽度为实型数据指定输出宽度#includevoid main()float a=1.23456789;printf(%fn%3.1fn%15.4

26、fn%15.10fn,a,a,a,a);double b=1.23456789;printf(%fn%3.1fn%15.4fn%15.10fn,b,b,b,b); double c=1.23456789987654321;printf(%fn%17fn%19.19fn%15.10fn,c,c,c,c); 运行结果:运行结果:1.2345681.2 1.2346 1.23456788061.2345681.2 1.2346 1.23456789001.234568 1.2345681.2345678998765433000 1.2345678999#includevoid main()float

27、 a=1234.5678;printf(%fn%3fn%15fn,a,a,a);double b=1234.5678;printf(%fn%.3fn%.4fn%.7fn,b,b,b,b); 运行结果:运行结果:1234.5677491234.567749 1234.5677491234.5678001234.5681234.56781234.5678000兹九侣陆壁蛤唇页泣帧牺鼠帅囤扮坝族打跌苍皋诚凯面田憎踏誉瓮棠格换一章顺序结构一章顺序结构1415二、格式控制2. 修饰符(2)输出数据左对齐符号)输出数据左对齐符号“-” 格式控制在指定输出数据的宽度后,如果指定的宽度格式控制在指定输出数据的

28、宽度后,如果指定的宽度m大于数据实际的大于数据实际的宽度,宽度, 则输出数据时自动右对齐,左端用空格补足,此时,则输出数据时自动右对齐,左端用空格补足,此时,也可以指定输出也可以指定输出结果左对齐,方法是在宽度前加上结果左对齐,方法是在宽度前加上“-”符号,使输出的数值向左端靠,右端符号,使输出的数值向左端靠,右端补空格。形式如下:补空格。形式如下:-md -mo -mx或或%-mX%-mf %-m.nf %-me 或或%-mfE %-m.ne 或或%-m.nE#includevoid main() float a=1234.5678; printf(%fn%3fn%-15fn,a,a,a);

29、 double b=1234.5678; printf(%fn%.3fn%.4fn%.7fn,b,b,b,b); 运行结果:运行结果:1234.5677491234.5677491234.5677491234.5678001234.5681234.56781234.5678000柔恿服槽陨溪员迷乔员舀样椰脆贯搅眷鱼巩沏匣盎闺池织想宅烈寅忙幽慷一章顺序结构一章顺序结构1516二、格式控制2. 修饰符(3)# :在八进制和十六进制数前显示先导在八进制和十六进制数前显示先导(前缀前缀)0、0x、0Xu#o: 输出带先导输出带先导0的八进制整型数据。的八进制整型数据。u#x: 输出带先导输出带先导0x

30、的十六进制整型数据。的十六进制整型数据。u%#X: 输出带先导输出带先导0X的十六进制整型数据。的十六进制整型数据。运行结果:1234567,1234567 ,1234567, 123456704553207,04553207 ,04553207, 045532070x12d687,0x12d687 ,0x12d687, 0x12d687#includemain()int a=1234567;printf(%-3d,%-12d,%#3d,%#12dn,a,a,a,a);printf(%-#3o,%-#12o,%#3o,%#12on,a,a,a,a);printf(%-#3x,%-#12x,%#

31、3x,%#12xn,a,a,a,a);乘同浑际掖恐吃帅毖台釉蓝久壹氏衅雨冯阐槐蚜真婉两呵澳丝接毙网闸厦一章顺序结构一章顺序结构1617二、格式控制2. 修饰符(4)h:在在d,o,x,u前使用,指定输出精度为前使用,指定输出精度为short型。型。(5)l(L):在在d,o,x,u前使用,指定输出精度为前使用,指定输出精度为long型;型; 在在e,f,g前使用,指定输出精度为前使用,指定输出精度为double型。型。#includemain() int a=3456789;printf(%d,%#o,%#Xn,a,a,a);printf(%hd,%#ho,%#hXn,a,a,a);print

32、f(%ld,%#lo,%#lXn,a,a,a); #includemain()double b=-345.6789;printf(%f,%e,%gn,b,b,b);printf(%lf,%le,%lgn,b,b,b);3456789,015137425,0X34BF15-16619,0137425,0XBF153456789,015137425,0X34BF15运行结果:运行结果:345.678900,3.456789e+002,345.679345.678900,3.456789e+002,345.679魁思锦皑敢乖绒醚栽备律驼吝驮该诡浦剧动致岿动畴耘岸捌仔愈寒亦锻茵一章顺序结构一章顺序结构

33、1718二、格式控制2. 修饰符(6)+:指定输出数据前显示符号(正号或负号)指定输出数据前显示符号(正号或负号)(7)0:输出数值时指定左边不使用的空位置自动填输出数值时指定左边不使用的空位置自动填0(零)。(零)。#includemain()int a=9876,b=-9876;printf(%i,%in,a,b);printf(%+i,%+in,a,b);printf(%8i,%8in,a,b);printf(%+08i,%+08in,a,b);printf(%-+08i,%-+08in,a,b);运行结果:9876,-9876+9876,-9876 9876, -9876+000987

34、6,-0009876+9876 ,-9876磺抓肩捐青乙褐罗吐毗撅眩似芒蓟各晨裔序彻腋薪事酸食针镇锰汽觉毫录一章顺序结构一章顺序结构1819三、使用函数时的注意事项1. 输出项从右向左计算后,按格式说明的顺序、类型和要求对应输输出项从右向左计算后,按格式说明的顺序、类型和要求对应输出。格式说明和输出项的个数、类型应相同,如不匹配系统不能正出。格式说明和输出项的个数、类型应相同,如不匹配系统不能正确输出确输出.格式说明的个数少于输出项个数,多余的输出项将不输出;格式说明的个数少于输出项个数,多余的输出项将不输出;格式说明的个数多于输出项个数,多余的格式说明将输出随机的格式说明的个数多于输出项个数

35、,多余的格式说明将输出随机的值。值。整型数据按整型数据按%f 输出或者实型数据按输出或者实型数据按%d 输出,均出现输出错误结输出,均出现输出错误结果。果。2. 格式字符除格式字符除X(表示输出的十六进制数用大写字母输出)、(表示输出的十六进制数用大写字母输出)、E(表示输出的指数(表示输出的指数e用大写字母用大写字母E输出)、输出)、G(表示若选用指数形式(表示若选用指数形式输出,则用大写字母输出,则用大写字母E输出)外,必须是小写字母。如输出)外,必须是小写字母。如%d不能写成不能写成%D。3. 实数精度实数精度(有效数字有效数字)由输出项类型控制由输出项类型控制(float6-7位位do

36、uble 15-16位位),对,对float型输出项用型输出项用%lf格式不能增加精度格式不能增加精度;增大增大“整数整数2”可增可增加实数输出的小数位数,但不能增加精度。加实数输出的小数位数,但不能增加精度。鸣龙剃殷汉但坝究天将酒状哑答貌把弦彦枣尊渐胚兔粒去匪奥乍侄唇盛卡一章顺序结构一章顺序结构1920三、使用printf函数时的注意事项4. 若想输出字符若想输出字符“%”,则在格式字符串中用连续两个,则在格式字符串中用连续两个%表示。如:表示。如:printf(“%f%”,1.0/4); 则输出:则输出:0.250000% 5. printf(“%*d”,m,i);将按将按m指定的宽度输出

37、指定的宽度输出i的值,而不是输出的值,而不是输出m的值。的值。printf(“%*.*f”,m,n,i);将按将按m、n指定的宽度和精度输出指定的宽度和精度输出i的的值,而不是输出值,而不是输出m、n的值。的值。6. printf函数的返回值是本次调用输出字符的个数,包括回车等控函数的返回值是本次调用输出字符的个数,包括回车等控制符。制符。7. 尽量不要在输出语句中改变变量的值,以免造成输出结果的不确尽量不要在输出语句中改变变量的值,以免造成输出结果的不确定性。定性。8. 连续输出多个数据时,注意用逗号、空格、回车等区隔数据,避连续输出多个数据时,注意用逗号、空格、回车等区隔数据,避免数据粘连

38、,使输出结果不清晰。免数据粘连,使输出结果不清晰。黑轿誊例阉谓揖猛蜘顾滓纳氰吾揉缚适垃丙键纱烧擒忿蛙咀哮炽歹扎忆警一章顺序结构一章顺序结构2021三、使用printf函数时的注意事项#includemain()float a=1.23456789;int x=12,y=3;printf(%fn,a);printf(%lfn,a);printf(%.16lfn,a);printf(%*.*fn,x,y,a);运行结果:1.2345681.2345681.2345678806304932 1.235顾缮月窿魏嘘怔样篇正嫁佩锯碍裁橱彝江族闻仿行到席颤块厦炎憎泊骄掌一章顺序结构一章顺序结构21说明:说

39、明:1.“变量地址列表变量地址列表”是由要接收数据的各变量地址组成。是由要接收数据的各变量地址组成。变量地址由地址运算符变量地址由地址运算符“& &”后后跟变量名组成,跟变量名组成,如如&a,&b分别表示变量分别表示变量a和变量和变量b的地址。若接收多个数据,则变量地的地址。若接收多个数据,则变量地址之间用址之间用“,”分隔。并且地址列表与格式控制中的格式说明要相匹配。分隔。并且地址列表与格式控制中的格式说明要相匹配。2.scanf函数格式控制的功能是规定输入数据的格式,与函数格式控制的功能是规定输入数据的格式,与printf函数的格式控制相似。但函数的格式控制相似。但是,是,scanf函数格

40、式控制只可以包括格式说明和普通字符,一般不包含转义字符,而且函数格式控制只可以包括格式说明和普通字符,一般不包含转义字符,而且通常仅有格式说明,其形式为通常仅有格式说明,其形式为%修饰符修饰符格式字符格式字符3. 3. 不提倡在不提倡在scanfscanf函数的格式控制中包含普通字符。函数的格式控制中包含普通字符。22 一、一、scanfscanf函数的调用形式函数的调用形式scanf(scanf(格式控制格式控制, ,变量地址列表变量地址列表) )在在scanf函数调用之后加上函数调用之后加上“,”,就构成了输出语句:,就构成了输出语句:scanf(“格式控制字符串格式控制字符串”,变量地址

41、列表变量地址列表);u功能:功能:通过输入设备(键盘)为变量赋值。即按照通过输入设备(键盘)为变量赋值。即按照scanf格式控制指定的输入格式控制指定的输入格式,从键盘输入数据,存入变量地址列表中变量所对应的存储单元。格式,从键盘输入数据,存入变量地址列表中变量所对应的存储单元。“格式控制字符串”&变量1,&变量2,,&变量n#includemain()int a,b,c;printf(请输入三个整数:);scanf(%d%d%d,&a,&b,&c);printf(变量a,b,c的值分别为:%d,%d,%d.n,a,b,c);遏账射针秸销绚铅则波拙滴社龚嗽濒榔椒究牧百赖求万饥煌柜鲤退畜抿畴一章

42、顺序结构一章顺序结构22说明:说明:4. scanf函数中的格式说明与输入项必须一一对应。函数中的格式说明与输入项必须一一对应。 如果格式说明与输入项的类型不一一对应匹配,则不能正确输入,且编译时如果格式说明与输入项的类型不一一对应匹配,则不能正确输入,且编译时不会报错。不会报错。 如果格式说明个数少于输入项个数,如果格式说明个数少于输入项个数,scanf函数结束输入,多余的输入项无函数结束输入,多余的输入项无法得到正确的输入值;如果格式说明个数多于输入项个数,法得到正确的输入值;如果格式说明个数多于输入项个数,scanf函数也结束函数也结束输入,多余的数据作废。输入,多余的数据作废。5. 从

43、键盘输入的数据个数应该与从键盘输入的数据个数应该与scanf函数要求的个数相同,当二者个数不同时函数要求的个数相同,当二者个数不同时系统做如下处理。系统做如下处理。 如果输入数据少于如果输入数据少于scanf函数要求的个数时,函数将等待输入,直到满足要函数要求的个数时,函数将等待输入,直到满足要求或遇到非法字符为止。求或遇到非法字符为止。 如果输入数据多于如果输入数据多于scanf函数要求的个数时,多余的数据将留在缓冲区作为函数要求的个数时,多余的数据将留在缓冲区作为下一次输入操作的数据。下一次输入操作的数据。6. scanf函数有返回值,其值就是本次函数有返回值,其值就是本次scanf函数调

44、用正确输入的数据项的个数。函数调用正确输入的数据项的个数。23 一、一、scanfscanf函数的调用形式函数的调用形式scanf(scanf(格式控制格式控制, ,变量地址列表变量地址列表) )输入项1,输入项2,输入项n&变量1,&变量2,,&变量n孽攀搪素藉材曾早懊梧褐烧滋镊霓爷嫩锑郊尔解敌啸枕脓椰慈霹糊碌议斥一章顺序结构一章顺序结构2324二、格式说明格式说明的一般形式为: %*宽度修饰符宽度修饰符ml或或h 格式字符格式字符说明:1.它是由“%”开头,以格式字符结束的一串字符。2. %*宽度修饰符宽度修饰符ml或或h为可选项, 中的字符为修饰符, 分别是分别是抑制修饰抑制修饰符符*、

45、宽度修饰符、宽度修饰符m、格式修饰符、格式修饰符 l(L)或)或h、。指定输入数据类型指定输入数据类型格式终止符(一般只能用小写)格式终止符(一般只能用小写)遇一付厘鸽阶廉矽柒渴绣暴宠缆样凑仁婶掇蔷尸钥产墨挂拾哭赢雨匪啸院一章顺序结构一章顺序结构2425二、格式说明1. 格式字符及其功能d输入入带符号的十符号的十进制形式整数。制形式整数。i输入入整整型型数数据据,整整型型数数据据可可以以是是十十进制制整整数数,也也可可以以是是带先先导0的八的八进制数,制数,还可以是可以是带先先导0x的十六的十六进制数。制数。o以八以八进制形式制形式输入整数,先入整数,先导0可可带可不可不带.x以十六以十六进制

46、形式制形式输入整数先入整数先导0x或或0X可可带可不可不带.u以无符号十以无符号十进制形式制形式输入整数入整数.f以小数形式以小数形式输入浮点数,入浮点数,单精度数用精度数用f,双精度数用双精度数用lf。e以指数以指数输入浮点数,入浮点数,单精度数用精度数用e,双精度数用双精度数用le。c输入一个字符入一个字符.s输入字符串入字符串,直到遇到直到遇到“0”。岁帧尿熙肠厢袖爱壕稻胡耳盼芭庐内篙杉淄让舞怖掖桨韦废载租娶垄衙聋一章顺序结构一章顺序结构2526二、格式说明 1. 格式字符及其功能(1)与整型数据的格式输入有关的格式说明)与整型数据的格式输入有关的格式说明 %d、%i、 %o、 %x、%

47、u#includemain()int a,b,c,d,e;printf(请输入五个整数:);scanf(%d%i%o%x%u,&a,&b,&c,&d,&e);printf(变量a,b,c,d,e的值分别为:%d,%i,%#o,%#x,%u.n,a,b,c,d,e);printf(变量a,b,c,d,e的值分别为:%d,%i,%d,%d,%d.n,a,b,c,d,e);运行过程1:请输入五个整数:11 22 33 44 55变量a,b,c,d,e的值分别为:11,22,033,0x44,55.变量a,b,c,d,e的值分别为:11,22,27,68,55.Press any key to con

48、tinue运行过程2:请输入五个整数:11 22 033 0x44 55变量a,b,c,d,e的值分别为:11,22,033,0x44,55.变量a,b,c,d,e的值分别为:11,22,27,68,55.Press any key to continueu注意:对scanf函数中的%o、%x格式说明,无论输入数据有无先导,都被默认为是八进制数、十六进制数。虐卤充惰涕菩语忱恶壬闸僳肾它必呐姜香童偿疑席蔽验斋隐汀耙灭疟背太一章顺序结构一章顺序结构2627(2)与实型数据的格式输出有关的格式说明)与实型数据的格式输出有关的格式说明 %f、 %e#includemain() float a,b; p

49、rintf(请输入两个实数:n); scanf(%f%e,&a,&b); printf(变量a,b的值分别为:%f,%en,a,b);运行过程1:请输入两个实数:11.122.2变量a,b的值分别为:11.100000,2.220000e+001u注意:对scanf函数中的%f、%e格式说明,无论输入数据是小数形式还是指数形式,均可被正确输入,这是由实型数据的存储形式决定的。运行过程2:请输入两个实数:11.1e1 22.2e3变量a,b的值分别为:111.000000,2.220000e+004拱逢蹦恰沃蒲褂钳馋兵鸵煽彻铬慎班锑泽鸡淘尿副料践好喘蛾夸尿穗垛抉一章顺序结构一章顺序结构2728(

50、3)宽度修饰符)宽度修饰符m:用于用于指定输入数据所占的宽度(列数),系统自动按指定输入数据所占的宽度(列数),系统自动按m截截取所需数据。但输入数据时不能规定精度,即不能指定小数位数的宽度。取所需数据。但输入数据时不能规定精度,即不能指定小数位数的宽度。#includemain() float a,b; printf(请输入两个实数:); scanf(%4f%3e,&a,&b); printf(变量a,b的值分别为:%f,%en,a,b);运行过程2:请输入两个实数:22334455变量a,b的值分别为:2233.000000,4.450000e+002Press any key to co

51、ntinue运行过程3:请输入两个实数:11223344变量a,b的值分别为:11.000000,2.200000e+001Press any key to continueu注意:对scanf函数中的宽度修饰符m,由于系统把输入的数据当做数据流处理,因此当连续输入的数据不能满足输入项时,运行程序将等待输入,直到输入的数据满足要求为止。运行过程1:请输入两个实数:12345变量a,b的值分别为:123.000000,4.500000e+001亥乞世燕镍撮过姻柞狗弄恋惺福鸯嗡赚猿倡沮惜葬撇烈硅筐赴函攘驳淀唁一章顺序结构一章顺序结构2829二、格式控制1. 格式字符(4)(赋值)抑制修饰符)(赋值

52、)抑制修饰符*:表示读入该输入项,但是读入以后不赋予相应的表示读入该输入项,但是读入以后不赋予相应的变量,即跳过该输入值。变量,即跳过该输入值。“*”的作用通常在当有一批数据时,若不想要其中某的作用通常在当有一批数据时,若不想要其中某些位置的数据,就可以用此方法跳过该部分的数据。些位置的数据,就可以用此方法跳过该部分的数据。#includemain() float a,b; printf(请输入两个实数:); scanf(%*2f%4f%3e,&a,&b); printf(变量a,b的值分别为:%f,%fn,a,b);(5)长度修饰符)长度修饰符 l(L)和)和 h:l(L)加在加在d、o、x

53、、u前,用于输入长整型数据,前,用于输入长整型数据,加在加在f、e前用于输入前用于输入double型数据;型数据;h加在加在d、o、x前,用于输入短整型数据前,用于输入短整型数据. VC6.0环境下,输入短整型(环境下,输入短整型(short int),格式控制必须用),格式控制必须用% hd;输入双精度;输入双精度(double),格式控制必须用),格式控制必须用%lf或或%le。否则,数据不能正确输入。否则,数据不能正确输入。运行过程1:请输入两个实数:11 22 33 44 55变量a,b的值分别为:22.000000,33.000000Press any key to continue

54、运行过程2:请输入两个实数:1122334455变量a,b的值分别为:2233.000000,445.000000启性赦摇废莉继淤只晒畜镍徊臼均款妹日髓颊墨辙疽捆专羊勃贬倔核角筛一章顺序结构一章顺序结构2930三、使用scanf函数从键盘输入数据时如何分隔数据. 1. 当当scanf函数中只有格式说明没有其他的普通字符时,函数中只有格式说明没有其他的普通字符时,输入的数据之间可以用输入的数据之间可以用空格、回车键、跳格键空格、回车键、跳格键Tab(制表符)等间隔符隔开,间隔符数量不限。即使在(制表符)等间隔符隔开,间隔符数量不限。即使在格式说明中指定了输入宽度,也同样可以用此方法输入。格式说明

55、中指定了输入宽度,也同样可以用此方法输入。2. 当当scanf函数中除了格式说明还有其他的普通字符函数中除了格式说明还有其他的普通字符(通配符)(通配符)时,那么时,那么在给变在给变量输入值时,必须在输入数据的对应位置把这些通配符一摸一样、一字不漏的量输入值时,必须在输入数据的对应位置把这些通配符一摸一样、一字不漏的敲进去。否则,不能正确读入数据。因此,敲进去。否则,不能正确读入数据。因此,scanf函数调用尽量不用通配符,只函数调用尽量不用通配符,只要有格式说明。要有格式说明。u注意:注意:在输入数据时,每行数据在按下回车键(在输入数据时,每行数据在按下回车键(enter键)之前,可以键)之

56、前,可以任意修改,按下回车键后,就不能再修改。任意修改,按下回车键后,就不能再修改。四、使用scanf函数从键盘输入数据时如何判断数据已经结束输入数据时,遇以下情况认为该数据输入结束:输入数据时,遇以下情况认为该数据输入结束: 按指定的宽度结束;按指定的宽度结束; 遇空格,或遇空格,或“回车回车”键,或键,或“Tab”键;键; 遇非法输入。遇非法输入。#includemain() int a,b; printf(请输入两个数:); scanf(%4d%3d,&a,&b); printf(变量a,b的值分别为:%d,%dn,a,b);运行过程:请输入两个数:11 3.3变量a,b的值分别为:11

57、,3注:注:因为接受的是整型数据,因为接受的是整型数据,当遇到当遇到”.”时,就认为遇到时,就认为遇到了非法输入,所以只能把了非法输入,所以只能把d点点(.)之前的数据赋给变量之前的数据赋给变量b。醋绝铱源拽吴镇畦谓禄囱闻鉴讽民釜骡烹段高钝育韭拖枷摔致地旋洒但汰一章顺序结构一章顺序结构303.5 顺序结构举例顺序结构举例教材例教材例3.1 程序如下:程序如下: #includemain() int x,y,t; /*定义变量*/ printf(Enter x&y:n); /*操作提示*/ scanf(%d%d,&x,&y); /*输入x、y的数值*/ printf(x=%d y=%dn,x,y

58、); /*输出x、y的数值*/t=x;x=y;y=t; /*交换x、y的值*/ printf(x=%d y=%dn,x,y); /*输出x、y的数值,验证交换是否正确*/顺序结构的程序特点:顺序结构的程序特点:(1)程序是按照所编写的语句顺序执行的。)程序是按照所编写的语句顺序执行的。(2)程序中的每一条语句有且仅有一次被执行。)程序中的每一条语句有且仅有一次被执行。运行过程1:Enter x&y:1234x=12 y=34x=34 y=12Press any key to continue(1)定义变量x、y,键盘输入两个变量x,y的值(2)输出x和y的值(3)交换x和y的值:借助另一变量t

59、,实现两变量值互换t=x; /*将x之值赋值给t */x=y; /*将y之值赋值给x */y=t; /*将t之值赋值给by*/(4)再输出x和y多溪尺畜勤挛风邵纵熄厉癸溢晴碑谬共孽懒林找贺剃竹耸顾扮几龙箍钵惺一章顺序结构一章顺序结构313.5 顺序结构举例顺序结构举例课堂练习:习题3.19。流程图如下:输入三个变量x、y、z的值计算x、y、z的平均值,并保留到小数点后一位数输出x、y、z平均值u分析问题中需要变量x、y、z,定义double型变量x、y、z 。u用scanf函数为变量x、y、z赋值。u计算x、y、z的平均值,将其存在变量t,须先定义double型变量t。u对变量t小数点后的第二

60、位数进行四舍五入。习题3.19参考代码:#includemain() double x,y,z,t; printf(请输入三个实数x、y、z:); scanf(%lf%lf%lf,&x,&y,&z); t=(x+y+z)/3;t=t+0.05; t=(int)(10*t);t=t/10; printf(x+y+z)/3=%fn,t);运行过程:请输入三个实数x、y、z:45.67 7.412 33.698(x+y+z)/3=28.900000Press any key to continueu用printf函数输出t的值。u顺序结构程序设计的一般步骤:顺序结构程序设计的一般步骤:1.分析问题中

61、有哪些变量及其数据类型,然分析问题中有哪些变量及其数据类型,然后按后按C语法定义该变量。语法定义该变量。2.对已知变量赋值。对已知变量赋值。3.根据问题处理已知变量和未知变量,写出根据问题处理已知变量和未知变量,写出相应的相应的C语句。语句。4.输出处理结果。输出处理结果。低哈圭皋苟刁蔬川湘糙裕治液绿船抿隧路劈声棺鸽壬氰询爬按弄拈碟荤奴一章顺序结构一章顺序结构3233 本章学习了顺序结构的基本组成和执行原理、数据的格式输出和格式输入、简单顺序结构程序的设计。 1. 要求同学们复习了解C语句的分类及其构成,熟记并掌握printf函数和scanf函数的格式和使用,弄清格式控制字符串的含义、格式控制字符串中不同字符的作用、输入输出项列表的含义,能模仿进行简单顺序结构程序的设计。 2. 完成教材习题3.1-3.20。 3. 思考:格式输入函数和格式输出函数在功能和使用场合上有哪些异同。33肄阜艰然畴次入秉封谩侗惮弃直踊纽澡淬笛墩悠瞻罐郑哲蜕肉粥莫誓仙理一章顺序结构一章顺序结构33

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号