第4章顺序结构程序设计.ppt

上传人:本田雅阁 文档编号:2577734 上传时间:2019-04-11 格式:PPT 页数:38 大小:256.01KB
返回 下载 相关 举报
第4章顺序结构程序设计.ppt_第1页
第1页 / 共38页
第4章顺序结构程序设计.ppt_第2页
第2页 / 共38页
第4章顺序结构程序设计.ppt_第3页
第3页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第4章顺序结构程序设计.ppt》由会员分享,可在线阅读,更多相关《第4章顺序结构程序设计.ppt(38页珍藏版)》请在三一文库上搜索。

1、第4章 顺序结构程序设计,本章学习要点: 程序结构的基本概念 格式化输出函数printf() 格式化输入函数scanf() 单个字符输入输出函数getchar()和putchar() 顺序结构程序设计 学习方法建议: 本章是程序设计的基础,建议重点关注C语言输入输出函数的应用格式及使用方法,掌握顺序结构程序设计要点。,4.1程序设计的基本概念,所谓程序设计是指编写一系列语句,输入计算机后经编译产生若干条机器指令,这些机器指令实际是一组指挥计算机完成某些特定操作的命令,通过运行指令,检查这些操作的是否可以完成一个预期的任务。 4.1.1程序结构概述 在第一章中介绍了一个最简单的C程序,该程序即为

2、一个顺序结构程序。 完成一项具体的任务到底需要哪些指令(语句),如何安排这些指令(语句)的执行的先后顺序,这些都会直接影响到程序的结果。而结构化程序设计的理念是由E.W.Dijkstra提出的,使用三种基本控制结构,通过组合和嵌套从而实现任何单一入口和出口的程序设计思想。,1顺序结构,以下就简单介绍这基本的三种程序结构。假设有顺序语句块A和B以及条件语句块P。 1顺序结构 顺序结构程序是所有程序结构中最简单的一种,该程序结构中,语句按其在程序中的先后位置顺序被执行。其程序结构如图4-1所示。,2.选择结构,2选择结构,也称为分支结构 程序需要根据某些条件,进行逻辑判断,而其结果是决定程序的走向

3、的程序结构称为选择程序结构。如图4-2所示。,3循环结构,3循环结构 程序按照一定的条件,重复执行指定的语句块即称为循环程序结构。如图4-3所示。,4.1.2 C程序语句简介,C程序是由函数构成,而函数是由函数说明和函数体组成,其中函数体是函数的核心。与其他高级语言一样,利用函数体中的C语句,向计算机系统发出操作命令,因而C语句是C程序的重要组件,而构成语句的基本元素除了前面介绍关键字、变量、表达式等还有库函数,以下介绍在C程序中常用的输入输出函数。,4.2C程序数据的输入输出,为了让计算机处理各种数据,首先就应该把源数据输入到计算机中;计算机处理结束后,再将目标数据信息以人能够识别的方式输出

4、。C语言没有提供专门的输入输出语句,其输入输出操作是由C编译系统提供的库函数来实现的。C语言不提供输入输出语句的目的是使C语言编译系统具有简单、通用性强、可移植性好的优点。 引例4.1程序要求从键盘输入圆柱体的半径和高,计算圆柱体的侧面积和体积后输出计算结果。 main() float radius,high,carea,volume, pi=3.14159; printf (“请输入圆柱体的半径:/n”);,scanf (“%f” , /*输出圆柱侧面积和体积*/ ,程序运行结果如下: 请输入圆的半径:1 请输入圆柱体的高:2 radius=1.00000 high=2.00000 care

5、a = 12.57, volume =6.28,4.2.1 printf函数格式化输出函数,向计算机系统默认的输出设备(一般指终端或显示器)输出一个或多个任意类型的数据。 1printf函数的格式 printf()函数的一般格式如下: printf (格式控制字符串,输出项列表); 用引例中的printf (“radius=%fn”, radius)为例对printf函数的格式说明如下:,(1)格式控制字符串。也称“转换控制字符串”,需要用双引号括起来,通常包含以下三种信息: 格式指示符,其通用格式为: %附加格式说明符类型转换字符,表4-1printf函数常用附加格式说明符,表4-2prin

6、tf函数常用类型转换字符,转义字符:控制输出。见表2-2转义字符及其功能表。引例中printf函数中的“n”就是转义字符,输出时产生一个“换行”操作。 普通字符:需要原样输出的字符。如:引例中printf(“radius=%fn“, radius);语句中的“radius=”就是普通字符。 (2)输出项列表 是需要输出的数据项。如果要输出的数据项多于1个,则相邻2个数据项之间用逗号分开。如引例中printf(“carea =%7.2f, volume =%7.2fn”, carea, volume); 的“carea, volume”。 提示: “格式字符串”中的格式指示符,必须与“输出项列表

7、”中、输出项的数据类型一致,否则会引起输出错误。,2printf函数应用举例,例题4.2对不同类型的数据,输出时使用不同的类型转换字符的应用。 main() int a,b; float c; char ch a=123; b=-1; c=1.23; ch=a; /*用十进制整数的几种不同宽度的的形式,输出整型变量a的值*/ printf(“a=%d, a=%4d, a=%-4d,a=%2dn”, a, a, a, a); /*按带符号十进制、八进制、十六进制、无符号十进制输出b的值*/ printf(“%d, %o, %x, %un”, b, b, b, b);,/*以小数形式输出:按系统默

8、认的宽度(整数全部输出,小数为位6位)输出实型变量c的值;按指定总宽度6位小数位为1位形式输出实型变量c的值*/ printf(“%f, %6.1fn”,c,c); /*按字符和按整数形式输出字符变量ch*/ printf(“%c, %dn”, ch, ch); ,程序运行结果如下: a=123,a=123,a=123,a=123 -1, 177777, ffff, 65535 1.230000, 1.2 a,97,(2) 类型转换字符c输出一个字符(只占一列宽度)。 例题4.3用不同的类型转换字符输出同一变量。 /*例题原代码文件名:LT4_3.C。*/ main( ) char ch=b;

9、 int x=65; printf(“ch=%c,%4c,%dn”, ch, ch, ch); printf(“x=%d,%cn”, x, x); ,运行结果: ch=b,b,98 x=65,A,注意: 在C语言中,整数可以用字符形式输出,字符数据也可以用整数形式输出。,(3) 类型转换字符f输出单、双精度数十进制小数形式(默认6位小数) %f,不指定宽度,由系统自动指定,使整数全部输出,并输出6位小数。 %m.nf 指定输出总宽度是m列(小数点也占一列),其中有n位小数。当数值长度小于m,则左边补空格。 % -m.nf 与 %m.nf基本相同,只是当数值长度小于m时,负号表示在右边补空格。

10、如例题4.2中c=1.23; printf(“%f, %6.1fn”, c, c); 其中:%f是以小数形式按系统默认的宽度(小数点后保留6位)输出实数c,%6.1f按指定总宽度6位,小数点后面1位输出实数c。(注意:计算总宽度时小数点也算1位)所以运算结果是:1.230000, 1.2,(4) 对于实数,也可使用格式符%e,以标准指数形式输出: 不指定输出数据所占的宽度和小数位数,C编译系统自动指定:尾数中的整数部分大于等于1、小于10,小数点占一位,尾数中的小数部分占6位;指数部分占5位(如e-003),其中e占1位,指数符号占1位,指数占3位,共计13位。 %m.ne和% -m.ne,m

11、表示总宽度,n表示数据尾数的小数部分。“-”号表示左对齐。 例题4.4用%e以指数形式输出实数 main( ) float f; f=224.562; printf(“%e,%10.2e”, f, f); ,运行结果: 2.24562e+02,2.25e+02,使用格式符%g,让系统根据数值的大小,自动选择%f或%e格式(选择输出时占宽度较小的一种)、且不输出无意义的零。 (5)%s输出字符串 例题4.5用%s输出一个字符串。 /*例题原代码文件名:LT4_5.C。*/ main( ) printf(“%3s,%7.2s,%.4s,%-5.3sn”, “CHINA”, “CHINA”, “CH

12、INA”, “CHINA”); ,运行结果: CHINA,CH,CHIN,CHI,说明: %m输出的字符串占m列,若字符串长度大于m,则自动突破m的限制,将字符串全部输出。若串长小于m,则左边补空格。 %-ms与(1)基本相同,只是当串长小于m,则右边补空格。 %m.ns输出占m列,但只取字符串左端n个字符。这n个字符输出在m列的右恻,左补空格。 % -m.ns其中m,n含义同上,不同的是n个字符输出在m列的左恻,右补空格。如果nm则自动取n的值,即保证n个字符正常输出。,提示:,1printf()可以输出常量、变量和表达式的值。但格式控制中的格式说明符,必须按从左到右的顺序,与输出项表中的每

13、个数据一一对应,否则出错。 例如,printf(“str=%s, f=%d, i=%fn“, “Internet“, 1.0 / 2.0, 3 + 5, “CHINA“);是错误的。 2格式字符x、e、g可以用小写字母,也可以用大写字母。使用大写字母时,输出数据中包含的字母也大写。除了x、e、g格式字符外,其它格式字符必须用小写字母。 例如,%f不能写成%F。 3格式字符紧跟在“%”后面就作为格式字符,否则将作为普通字符使用(原样输出)。 例如,“printf(”c=%c, f=%fn“, c, f);”中的“c=”和“f=”,都是普通字符。,4.2.2 scanf函数格式化输入函数,1sca

14、nf()函数的一般格式 scanf(“格式控制字符串”, 输入项首地址列表); 如果将引例中的scanf (“%f” , &radius) 和scanf (“%f”, &high)两个合起来,可写为scanf(“%f %f”, &radius, &high),运行引例程序时,从键盘上输入2个实数,分别存入&radius、&high起始的存储单元中,即输入两个实数分别赋给radius和high。 (1)格式字符串。格式字符串可以包含3种类型的字符:格式指示符、空白字符(空格、Tab键和回车键)和非空白字符(又称普通字符)。 格式指示符与printf()函数的相似,空白字符作为相邻2个输入数据的缺

15、省分隔符,非空白字符在输入有效数据时,必须原样一起输入。,输入项首地址表中的地址,可以是变量的首地址,也可以是字符数组名或指针变量。 变量首地址的表示方法:是错误的,少了&符号。 2格式指示符 格式指示符又称格式说明符,与print函数的类似。其一般形式为: % 附加格式说明符 类型修饰符 类型字符,表4-3 scanf函数的类型字符,例如, 在引例的scanf(“%f ”, ,程序运行结果如下: 运行结果: ABCDEF ch1=A,ch2=C,运行该程序时,输入ABCDEF,系统读取的“AB”中的“A”赋给变量ch1;读取的“CDE”中的“C”赋给变量ch2,所以,printf函数的输出结

16、果为:ch1=A,ch2=C。,例题4.7 “*”号附加说明符的应用。 main( ) int a,b; scanf(“%2d%*3d%2d”, a, b); printf(“a=%d, b=%dn”, a, b); 系统会将23赋值给a变量;然后遇到“%*3d”表示读入3位整数即读取482但不赋给任何变量;之后再读取602位整数赋值给b变量。也就是说挑过第2个数据482。所以二个printf函数的输出结果为:a=23,b=60。,运行时从键盘输入: 2348260 a=23,b=60,(3)类型修饰符F、N、h、l。 其含义与printf函数中的一样,分别为远指针、近指针、短整型和长整型。

17、(4)使用注意事项 当运行scanf()函数从键盘上输入数据时,如果相邻2个格式指示符之间,不指定数据分隔符(如逗号、冒号等),则相应的2个输入数据之间,至少用一个空格分开,或者用Tab键分开,或者输入1个数据后,按回车,然后再输入下1个数据。 例如:如果为a输入12,给b输入36 scanf(“%d%d”, 正确的输入操作为:1236 或者:12 36,“格式字符串”中出现普通字符(包括转义字符)一定要原样输入。 例如:scanf(“%d,%d”, ,输入数据时,遇到以下情况,系统认为该数据结束: (1)遇到空格,或者回车键,或者Tab键。 (2)遇到输入域宽度结束。例如“%3d”,只取3列

18、。 (3)遇到非法输入。例如,在输入数值数据时,遇到字母等非数值符号(数值符号仅由数字字符0-9、小数点和正负号构成)。 使用格式说明符“%c”输入单个字符时,空格和转义字符均作为有效字符被输入。 例如,scanf(“%c%c%c”, 假设输入:ABC,则系统将字母“A”赋值给ch1,空格“”赋值给ch2,字母“B”赋值给ch3。,4.2.3单个字符输入输出,1单个字符输出函数 putchar(ch)或putch(ch)函数是C语言专门为输出单个字符而提供的,其功能就是将ch值所对应的一个字符输出到终端设备上(比如:显示器)。其一般格式如下: putchar(ch)或putch(ch); 其中

19、ch可以是一个字符变量、整型变量或常量,也可以是一个转义字符。 例题4.8 putchar() 函数的使用方法。 /*功能:说明putchar()函数的使用方法示例。*/ #include /*编译预处理命令:文件包含*/ main() char ch1=O, ch2=K; int a=33; putchar(ch1); putchar(ch2); /*输出二个字符变量的值*/,putchar(a); putchar(n); /*输出一个整型变量所对应的字符,并换行值*/ putchar(O); putchar(n);/*输出字符 O,并换行*/ putchar(ch2); putchar(n

20、);/*输出ch2的值,并换行*/ putchar(33); putchar(n); /*输出常量33是代表的字符,并换行,33是!的ASCII码*/ ,程序运行结果如下: OK! O K !,2单个字符的输入函数 从系统隐含的输入设备(如键盘)输入一个字符。字符输入函数没有参数,函数值就是从输入设备输入的字符。 格式:getchar()、或getch() 两种格式的区别: getchar()会显示所输入的字符,而getch()不会显示所输入的字符。 单个字符的输入函数只能用于单个字符的输入,一次输入一个字符。,例题4.9 说明getchar()函数的格式和作用。 /*功能:将输入的小写字母转

21、换成大写后输出。*/ #include /*编译预处理命令:文件包含*/ main() char ch1, ch2, ch3; ch1=getchar(); /*输入1个小字母并赋给ch1 */ ch2=getchar(); ch3=getchar(); ch1-=32; /*将小字母转换成大写字母 */ ch2-=32; ch3-=32; putchar(ch1); putchar(ch2) ; putchar(ch3); ,程序运行情况如下: 输入new NEW,注意: 例题4.9运行从键盘输入时,new连续输入再回车,不能 new这样输入, 因为如果这样则n字符给ch1,符给ch2,e字

22、符给ch3,就不对了。,提示:,(1)putchar()函数只能用于单个字符的输出。另外,从功能角度来看,printf()函数可以完全代替putchar()函数。 (2)getchar()函数只能用于单个字符的输入。而且,从功能角度来看,scanf()函数可以完全代替getchar()函数。 (3)在程序中使用putchar()函数和getchar()函数时,必须在程序(或文件)的开头加上编译预处理命令(也称包含命令),即:#include “stdio.h”。表示要使用的函数,包含在标准输入输出(stdio)头文件(.h)中。,4.3 顺序结构程序设计,在顺序结构程序中,各语句(或命令)是按

23、照位置的先后次序,顺序执行的,且每个语句都会被执行到。 4.3.1引例 例题4.10 输入任意二个整数,求它们的和及平均值,然后输出结果。 解决问题的步骤是: 第一步:输入两个数,分别放入变量n1和 n2中 第二步:对输入的数据进行处理,求和、求平均值,并将结果分别放入变量sum和aver 中。 第三步:输出结果。 经过分析后可以写出如下程序以完成例题任务:,例题LT4_10.C /*功能:设计一个顺序结构程序,求二个整数的和及平均值。*/ main() int n1, n2, sum; float aver; printf(“Please input two numbers:”); scan

24、f(“%d, %d”, /*输出结果*/ ,程序运行结果为: Please input two numbers: 5,10 n1=5,n2=10 sum=15, aver= 7.50,4.3.2顺序结构程序组成要素,由此例可以知道一个顺序结构程序一般包括以下几个部分: 1程序开头的编译预处理命令。 在程序中要使用标准函数(又称库函数),除printf()和scanf()外,其它的都必须使用编译预处理命令,将相应的头文件包含进来。 2顺序结构程序的函数体中,是完成具体功能的各个语句和运算,主要包括: (1)变量类型的说明。 (2)提供数据语句。 (3)运算部分。 (4)输出部分。,4.3.3顺序结构程序应用举例,例题4.11 顺序结构程序应用举例,交换两个变量的值。 /*功能:设计一个顺序结构程序,交换两个变量的值*/ #include main() int x, y, temp; scanf(“%d%d”, ,程序输入: 12 34 程序输出结果为: x=12, y=34 x=34, y=12,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1