52
第第第 第第第第第第 第第第第第第1 第第 C 第第第第第第 第第第第第 第第第第第第 第第第第第 :,,。 2 第第第第第第第第 第第第第第第第第 、,。 3 第第第第第第第 / 第第第第 第第第第第第 / 第第第第第第第4 第第第第第第第 第第第第第 第第第第第 第第第第第第第第第第 、、、、。 5 第第第第第第第第第 、、 N-S 第第第6 第第第第第第第第第第

第三章 顺序程序设计

Embed Size (px)

DESCRIPTION

第三章 顺序程序设计. 本章主要任务: 1 、了解 C 语言语句分类:控制语句,表达式语句,复合语句。 2 、掌握表达式语句,复合语句的构成。 3 、掌握格式化输入 / 输出函数,常用其它输入 / 输出函数的使用。 4 、了解算法概念、算法特性、算法表示、结构化程序设计概念。 5 、了解结构化流程图、 N-S 流程图。 6 、掌握顺序结构程序设计. 一、 C 语句概述. C 语言的语句用来向计算机系统发出操作指令。 - PowerPoint PPT Presentation

Citation preview

Page 1: 第三章 顺序程序设计

第三章 顺序程序设计本章主要任务:

1 、了解 C 语言语句分类:控制语句,表达式语句,复合语句。2 、掌握表达式语句,复合语句的构成。3 、掌握格式化输入 / 输出函数,常用其它输入 /输出函数的使用。 4 、了解算法概念、算法特性、算法表示、结构化程序设计概念。5 、了解结构化流程图、 N-S 流程图。6 、掌握顺序结构程序设计

Page 2: 第三章 顺序程序设计

一、 C 语句概述C 语言的语句用来向计算机系统发出操作指令。

C 程序结构:一个 C 程序可以由若干个源程序文件组成,一个源文件可以由若干个函数和预处理命令以及全局变量声明部分组成,一个函数由数据定义部分和执行语句组成。

Page 3: 第三章 顺序程序设计

C 程序的组成

Page 4: 第三章 顺序程序设计

C 语句分类

1 、控制语句

Page 5: 第三章 顺序程序设计

C 语句分类2 、表达式语句

表达式语句是在表达式最后加上一个“;”组成。例如:

Page 6: 第三章 顺序程序设计

C 语句分类3 、复合语句

用 {} 把一些语句(语句序列,表示一系列工作)括起来成为复合语句,又称语句块、分程序。

一般情况凡是允许出现语句的地方都允许使用复合语句。在程序结构上复合语句被看作一个整体的语句,但是内部可能完成了一系列工作。

Page 7: 第三章 顺序程序设计

二、输入 / 输出及 C 语言的实现

1 、计算机的组成CPU ÄÚ´æ

I/O½Ó¿Ú

Ó²ÅÌ ÈíÇýÏÔʾÆ÷¼üÅÌÊó±ê ´òÓ¡»ú

Ö÷»ú

ÍâΧÉ豸

Page 8: 第三章 顺序程序设计

输入 / 输出

2 、输入 / 输出:从计算机向外部设备(如显示器、打印机、磁盘等)输出数据称为“输出”, 从外部设备(如键盘、鼠标、扫描仪、光盘、磁盘)向计算机输入数据称为“输入”。

输入 / 输出是以计算机主机为主体而言的。

Page 9: 第三章 顺序程序设计

C 语言的输入输出

3 、 C 语言本身不提供输入 / 输出语句,输入 / 输出操作由函数实现。在 C 标准函数库中提供了一些输入 / 输出函数,如 printf 函数,scanf 函数。

不要将两者看作是输入 / 输出语句。实际上完全可以不用这两个函数,而另外编制输入 / 输出函数。

Page 10: 第三章 顺序程序设计

C 语言的输入输出

C 函数库中有一批“标准输入 / 输出函数”,它 是 以 标 准 的 输 入 / 输 出 设 备 ( 一 般 为 终端)为输入 / 输出对象的。其中有: putchar(输出字符) ,getchar (输入字符) ,printf(格式化输出) ,scanf (格式化输入) ,puts(输出字符串) ,gets (输入字符串)。

Page 11: 第三章 顺序程序设计

printf 函数(格式输出函数)

功能:按照用户指定的格式,向系统隐含

的输出设备(终端)输出若干个任意类型的数据。

一般格式: printf( 格式控制字符串,输出表列 )

Page 12: 第三章 顺序程序设计

printf 函数格式

Page 13: 第三章 顺序程序设计

格式控制“ 格式控制”字符串是用双引号括起来的字

符串,它指定输出数据项的类型和格式。包括两种信息:格式说明项:由“ %” 和格式字符组成,如 %d,%f等。格式说明总是由“ %” 字符开始,到格式字符终止。它的作用是将输出的数据项转换为指定的格式输出。输出表列中的每个数据项对应一个格式说明项。普通字符:即需要原样输出的字符。

Page 14: 第三章 顺序程序设计

输出列表

“ 输出列表”:是需要输出的一些数据项,可以是表达式。

Page 15: 第三章 顺序程序设计

格式字符 1 、 d 格式符。用来输出十进制整数。

%d, 按照数据的实际长度输出%md , m 指定输出字段的宽度(整数)。如果数据的位数小于 m ,则左端补以空格(右对齐),若大于 m ,则按照实际位数输出。%-md , m 指定输出字段的宽度(整数)。如果数据的位数小于 m ,则右端补以空格(左对齐),若大于 m ,则按照实际位数输出。

%ld ,输出长整型数据,也可以指定宽度 %mld 。

Page 16: 第三章 顺序程序设计

格式字符

2 、 O 格式符。以八进制形式输出整数。

3 、 x 格式符。以十六进制形式输出整数。

4 、 u 格式符。用来输出 unsigned 无符号型数据,即无符号数,以十进制形式输出。

Page 17: 第三章 顺序程序设计

格式字符5 、 c 格式符。用来输出一个字符。一个整数只要它

的值在 0-255 范围内,也可以用字符形式输出。反之,一个字符数据也可以用整数形式输出。

6 、 s 格式符。用来输出一个字符串。

7 、 f 格式符。用来输出实数(包括单、双精度,单双精度格式符相同),以小数形式输出。

Page 18: 第三章 顺序程序设计

格式字符

Page 19: 第三章 顺序程序设计

格式字符应用举例

Page 20: 第三章 顺序程序设计

scanf 函数输入

Page 21: 第三章 顺序程序设计

格式说明

Page 22: 第三章 顺序程序设计

输入注意事项

1 、 scanf 函数中“格式控制”后面应当是变量地址,而不应是变量名。

例如:scanf(“%d,%d”,a,b); 不合法。

原因: C 是传值调用,不能由形参返回值

Page 23: 第三章 顺序程序设计

输入注意事项

2 、如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入数据时在对应位置应当输入与这些字符相同的字符。建议不要使用其它的字符。

Page 24: 第三章 顺序程序设计

输入注意事项

3 、在用“ %c” 格式输入字符时,空格字符和转义字符都作为有效字符输入。 %c 只要求读入一个字符,后面不需要用空格作为两个字符的间隔。

Page 25: 第三章 顺序程序设计

输入注意事项4 、在输入数据时,遇到下面情况认为该数据结束:

( 1 )遇到空格,或按“回车”或“跳格” (tab) 键。( 2 )按指定的宽度结束。( 3 )遇到非法的输入。

Page 26: 第三章 顺序程序设计

输入注意事项

Page 27: 第三章 顺序程序设计

其它输入 / 输出函数

1 、 putchar 函数(字符输出函数)。2 、 getchar 函数(字符输入函数)。3 、 puts 函数(字符串、字符数组中字符串输

出函数)。4 、 gets 函数(字符串输入函数)。

Page 28: 第三章 顺序程序设计

putchar 函数(字符输出函数)一般形式: putchar( 字符表达式 ) ;功能:

向终端(显示器)输出一个字符(可以是可显示的字符,也可以是控制字符或其它转义字符)。

例如:putchar(‘y’); putchar(‘\n’); putchar(‘\101’); putchar(‘\’’);

Page 29: 第三章 顺序程序设计

getchar 函数(字符输入函数)一般形式: c=getchar() ;功能:

从终端(键盘)输入一个字符,以回车键确认。函数的返回值就是输入的字符。

Page 30: 第三章 顺序程序设计

puts 函数(字符串、字符数组中字符串输出函数)

一般形式: puts(char *str) ;功能:

将字符串或字符数组中存放的字符串输出到显示器上。

例如:putstr(“China\nBeijing\n”);

Page 31: 第三章 顺序程序设计

gets 函数(字符串输入函数)

一般形式: gets(char *str) ;功能:

接收从键盘输入的一个字符串,存放在字符数组中。

例如:char s[81];

gets(s);

Page 32: 第三章 顺序程序设计

算法与程序设计

1 、算法及其表示方法。2 、结构化程序设计。3 、算法设计举例。

Page 33: 第三章 顺序程序设计

算法及其表示方法算法:

为解决一个问题而采取的方法和步骤称为“算法”。

对于同一个问题可以有不同的解题方法和步骤,也就是有不同的算法。算法有优劣,一般而言,应当选择简单的、运算步骤少的,既运算快、内存开销小的算法(算法的时空效率)。

Page 34: 第三章 顺序程序设计

算法的 5 大特性

1 、有穷性2 、确定性3 、有 0 个或多个输入(即:可以没有输入,

也可以有输入)。4 、有 1 个或多个输出(即算法必须得到结

果)。5 、有效性。

Page 35: 第三章 顺序程序设计

算法的表示方法

1 、用自然语言表示算法 。2 、用流程图表示算法。3 、用 N-S 流程图表示算法(盒图)。4 、用伪代码表示算法(常常用于算法设计) 5 、用计算机语言表示算法 。

Page 36: 第三章 顺序程序设计

用自然语言表示算法算法可以用自然语言描述的。自然语言

就是人们日常使用的语言,可以是汉语、英语或其它语言。用自然语言表示通俗易懂,但文字冗长,容易出现歧义。自然语言表示的含义往往不太严格,要根据上下文才能准确判断其含义。此外,用自然语言描述分支和循环的算法,不是很直观。因此,除了简单问题,一般不采用自然语言描述算法。

Page 37: 第三章 顺序程序设计

用流程图表示算法

Page 38: 第三章 顺序程序设计

流程图的基本元素

1 、起止框:表示算法的开始和结束。一般内部只写“开始”或“结束”。

2 、处理框:表示算法的某个处理步骤,一般内部常常填写赋值操作。

3 、输入输出框:表示算法请求输入输入需要的数据或算法将某些结果输出。一般内部常常填写“输入…” ,“ 打印 / 显示…” 。

Page 39: 第三章 顺序程序设计

流程图的基本元素4 、菱形框(判断框):作用主要是对一个给定条件

进行判断,根据给定的条件是否成立来决定如何执行其后的操作。它有一个入口,两个出口。

5 、连接点:用于将画在不同地方的流程线连接起来。同一个编号的点是相互连接在一起的,实际上同一编号的点是同一个点,只是画不下才分开画。使用连接点,还可以避免流程线的交叉或过长,使流程图更加清晰。

Page 40: 第三章 顺序程序设计

流程图的基本元素

注释框:注释框不是流程图中必须的部分,不反映流程和操作,它只是对流程图中某些框的操作做必要的补充说明,以帮助阅读流程图的人更好地理解流程图的作用。

Page 41: 第三章 顺序程序设计

采用流程图绘制的三种结构

A

B

Ñ¡Ôñ½á¹¹

p

A B

p

A

˳Ðò½á¹¹

p

A

Ñ »·½á¹¹

p

A

N Y Y N

µ±ÐÍÑ »· Ö±µ½ÐÍÑ »·

a

b

a

b

a

b

a

b

a

bp-Ñ¡ÔñÌõ¼þ p-Ñ »·Ìõ¼þ

Y N NY

Page 42: 第三章 顺序程序设计

流程图的使用特点

用流程图表示的算法直观形象,比较清楚地显示出各个框之间的逻辑关系,因此得到广泛使用。每一个程序编制人员都应当熟练掌握流程图,会看会画。(软件专业水平、资格考试也用这种流程图表示)。

Page 43: 第三章 顺序程序设计

N-S 图

美国学者 I.Nassi , B.Shneiderman 提出了一种新的流程图 N-S 流程图。这种流程图中,完全去掉了带箭头的流程线。每种结构用一个矩形框表示。

Page 44: 第三章 顺序程序设计

N-S 图绘制的三种基本结构

Page 45: 第三章 顺序程序设计

N-S 图的使用特点

1 、比文字描述更加直观、形象,易于理解; 2 、比传统的流程图紧凑易画 3 、废除流程线,整个算法结构是由各个基本

结构按顺序组成。 N-S 流程图的上下顺序就是执行时的顺序。 N-S 图表示的算法都是结构化的算法。

Page 46: 第三章 顺序程序设计

算法设计举例

例 4-2 :对于一个大于或者等于 3 的正整数,判

断它是不是一个素数。(素数,是指除了 1和该数本身之外,不能被其它任何整数整除的数)(疑问? 1 , 2 是否是素数)

Page 47: 第三章 顺序程序设计

分析 根据素数定义,对于一个≥ 3 的正整数 n ,如果 n 只

能被 1 , n 整除,那么 n 是素数;也就是素数必须满足两个条件:

1 、是≥ 3 的正整数 2 、只能被 1 和自身整除(被 1 和自身是肯定可以

整除的),不能被其它 2-(n-1) 的正整数整除 ( 全部不能整除 ) 。反过来理解:任何≥ 3 的正整数 n ,如果能够被2-(n-1) 的任何一个正整数整除 ,那么它一定不是素数。

Page 48: 第三章 顺序程序设计

判断素数算法( N-S 图表示)

Page 49: 第三章 顺序程序设计

判断素数算法(流程图表示)

Page 50: 第三章 顺序程序设计

顺序程序设计举例

1 、输入三角形的三边长,求三角形面积。 为简单起见,设输入的三边长 a,b,c 能构成三角形。从数学知识已知求三角形面积的公式为:

Page 51: 第三章 顺序程序设计

流程图

Page 52: 第三章 顺序程序设计

程序