第二章 算法、简单的C程序设计.ppt
《第二章 算法、简单的C程序设计.ppt》由会员分享,可在线阅读,更多相关《第二章 算法、简单的C程序设计.ppt(48页珍藏版)》请在三一文库上搜索。
1、第二章 算法和最简单的 C 程序设计,本章要点: 掌握了解算法的基本概念与特征 掌握熟悉结构化程序设计的基本概念 掌握算法的表示方法,2.1 算法 一、算法的概念 Nikiklaus Wirth 公式 程序 = 数据结构 + 算法 数据结构:对数据的描述,在程序中指定数据的 类型和数据的组成形式。 算法:对操作的描述,即解决问题的方法和步骤。 程序 = 数据结构 + 算法 + 程序设计方法 + 语言工具 + 环境,2.1 算法 二、算法的特性 1. 有穷性 一个算法包含的操作步骤应当是有限的。 2. 确定性 一个算法的含义应当是唯一的,算法中的每一个 步骤应当是确定的,不应产生 “ 歧义性 ”
2、。 3. 有零个或多个输入 4. 有一个或多个输出 5. 有效性 算法中的每一步都应当能有效地执行, 并得到正确的结果。,三、简单算法举例 1. 求 12 3 4 5 ( 即 5! ) 算法一: 步骤1: 12 得 2 ; 步骤2: 23 得 6; 步骤3: 64 得 24 ; 步骤4: 245 得 120 ;,2.1 算法,算法二: 设 p 为被乘数, i 为乘数,采用循环算法。 S1 : 使 p = 1 ; S2 : 使 i = 2 ; S3 : 使 p i p S4 : 使 i + 1 i S5: 如果 i 不大于5 则返回重新 执行 S3 , S4 ,S5 ; 否则, 算法结束。,2.
3、1 算法,三、简单算法举例 1. 求 12 3 4 5 ( 即 5! ),2. 对一个大于或等于3的正整数,判断它是不是 一个素数。 算法一: 将 n 作为被除数,将 2 到 ( n 1 ) 各个整数轮流作为除数,如都不能被 整除,则 n 为素数。,2.1 算法,三、简单算法举例,算法二: 将 n 作为被除数,将2到n/2(或者是 2 到 n1/2 ) 各个整数轮流作为除数,如都不能被整除,则n为 素数。 S1: 输入 n 的值 S2: i = 2 ( i 作为除数 ) S3: n 被 i 除,得余数 r S4: 如r= 0,则输出“不是素数”,反之执行 S5 S5: i + 1 i S6:
4、如果 i n 1 , 返回 S3 ; 否则输出 “是素数 ”结束。,2.1 算法,三、简单算法举例,自然语言 传统流程图 结构化流程图 伪代码 PDA图。,2.1 算法,四、算法的表示方法,1. 传统流程图 特点: 用一些规定的图框表示各种操作。 直观形象,易于理解。 常用的ANSI规定图形符号如图:,起始或结束框,输入输出框,判断框,处理框,流程线,连接点,注释框,2.1 算法,四、算法的表示方法,用传统流程图来表示求 5!。,2. 程序的三种基本结构 一个程序只能由三种基本结构(或由它们派生出来的结构)组成,这三种结构为: (1) 顺序结构 (2) 选择结构 (3) 循环结构,A,顺序结构
5、 选择结构 循环结构,3. 用 N S 流程图表示算法 N S 结构化流程图是根据美国学者 I . Nassi和 B.Shneiderman 1973年提出的算法来描述的, 属于无流线的流程图,简称 N S 图。,真 P1 假 当 P2 为真 真 P3 假 A B C,一般情况,N S 图的特点: 比自然语言描述更直观、形象、易于理解。 比传统流程图紧奏易画。 图中的上下顺序就是执行时的顺序,符合 “自顶向下,逐步细化”的结构化程序设计要求。,求 5!的 N S 流程图,判断素数的 N S 流程图,表达式语句: 表达式;,2.2 C 语句概述 C语句包括:,控制语句 ( 9 ) 种 if (
6、) else ; for ( ) ; while ( ) ; do while ; continue ; break ; switch ; goto ; return,控制语句,1,函数调用 语句 例如: y = cos(0.5); y = sin(cos(0.5); printf(“Hello”);,函数调用语句,2,复合语句 格式 语句1; 语句 n ; ,复合语句,5,空语句: ;,2.3 赋值语句 赋值语句由赋值表达式加上分号构成。 如: a = b ; C语言中将赋值表达式和赋值语句分开来, 其目的是增加表达式的种类和使用范围。 如: (1) if ( x 0 ) (2) if (
7、(a = b ) 0 ) t = a ;,2.4 字符数据的输入输出 C 程序的输入和输出完全依靠调用标准输入和输出函数来完成。 常用的 4个I/O 函数为 : scanf ( ) getchar ( ) printf ( ) putchar ( ),输出单个字符,输出转义字符,3.4 字符数据的输入输出 一、putchar 函数 (字符输出函数 ) 作用: 向终端(即系统隐含指定的输出设备, 如显示器,打印机) 输出一个字符。 格式: putchar ( ch ) ; 其中: ch 代表一个字符型或整型变量, 也可以是一个字符常量或整型常量。,输出单个字符 # include /* 包含I/
8、O库有关变量定义和宏定义 */ main ( ) char a , b , c ; a = B ; b = O ; c = Y ; putchar ( a ) ; putchar ( b ) ; putchar ( c ) ; 输出结果: BOY,例如,输出单个转义字符 # include main( ) putchar ( 101 ) ; putchar ( ) ; putchar (n ) ; 输出结果: A,重点,输出单个字符,输出转义字符,3.4 字符数据的输入输出 一、putchar 函数 (字符输出函数 ) 作用: 向终端(即系统隐含指定的输出设备, 如显示器,打印机) 输出一个字
9、符。 格式: putchar ( ch ) ; 其中: ch 代表一个字符型或整型变量, 也可以是一个字符常量或整型常量。,输出单个字符 # include /* 包含I/O库有关变量定义和宏定义 */ main ( ) char a , b , c ; a = B ; b = O ; c = Y ; putchar ( a ) ; putchar ( b ) ; putchar ( c ) ; 输出结果: BOY,重点,输出单个转义字符 # include main( ) putchar ( 101 ) ; putchar ( ) ; putchar (n ) ; 输出结果: A,重点,3.
10、4 字符数据的输入输出,二、 getchar 函数 (字符输入函数),作用: 从终端(即系统隐含指定的输入设备 ( 如键盘),输入一个字符。,说明: 1. 执行时,输入字符并按回车键后,才将其输入到缓冲区,只读取一个字符给变量。 getchar 函数接收的一个字符,可以赋给char型或 int 型变量,也可不赋给任何变量。 3.使用 putchar 和 getchar 函数需用预编译命令#include 将 “stdio.h” 包括进去。,例3.2:从键盘输入一个字符再输出。,从键盘输入一个字符再输出。 #include “stdio.h” main ( ) char c ; c = getc
11、har( ) ; putchar ( c ) ; 若输入 : a 则输出 : a,实例,示例2,示例1,格式控制,输出表列,3.5 格式输入与输出 一、printf 函数 (格式化输出函数 ) 1. 格式: printf( , ); 作用: 向系统终端(或隐含的输出设备) 输出若干 个指定类型的数据。,2. 格式字符(共 9 种) 作用:控制不同类型数据的不同格式输出。 (1) d格式符:用于输出十进制整数 %d:按整型数的实际长度输出。 %md:m为指定的输出数据宽度,若数据位 数 m 则左补空格,反之则将数据全部输出。 %md:左靠齐,右补空格。 % ld:输出长整型数据。,格式控制: 由
12、双引号括起来的字符串表示,包括格式说明和普通字符两部分。,输出表列: 需要输出的数据,可以是: 常量,变量,表达式 ,函数,字符串常量 。,使用示例: main( ) int a=3, b=2; printf(“%d,%d”, a , b); printf(“sum is%d”, a+b); printf(“%d”, 123) ; printf(“%c”, getchar( ); ,main() int a=123,b= 12345 ; long c = 135790 ; printf(“%4d,%4dn”, a, b); printf(“%4dn”, a) ; printf(“%ldn”,
13、c) ; printf(“%8ld”, c) ; 输出: 123 , 12345 123 135790 135790,格式控制,输出表列,rintf 函数使用示例: main( ) int a=3, b=2; printf(“%d,%d”, a , b); printf(“sum is%d”, a+b); printf(“%d”, 123) ; printf(“%c”, getchar( ); ,举例,main() int a=123,b= 12345 ; long c = 135790 ; printf(“%4d,%4dn”, a, b); printf(“%4dn”, a) ; print
14、f(“%ldn”, c) ; printf(“%8ld”, c) ; 输出: 123 , 12345 123 135790 135790,格式控制: 由双引号括起来的字符串表示,包括格式说明和普通字符两部分。,重点,输出表列: 需要输出的数据,可以是: 常量,变量,表达式 ,函数,字符串常量 。,重点,3.5 格式输入与输出 一、printf 函数 (格式化输出函数 ) 1. 格式: printf( , ); 作用: 向系统终端(或隐含的输出设备) 输出若干 个任意类型的数据。,2. 格式字符(共 9 种) 作用:控制不同类型数据的不同格式输出。 (1) d格式符:用于输出十进制整数 %d:按
15、整型数的实际长度输出。 %md:m为指定的输出数据宽度,若数据位 数 m 则左补空格,反之则将数据全部输出。 %md:左靠齐,右补空格。 % ld:输出长整型数据。,格式控制: 由双引号括起来的字符串表示,包括格式说明和普通字符两部分。,输出表列: 需要输出的数据,可以是: 常量,变量,表达式 ,函数,字符串常量 。,使用示例: main( ) int a=3, b=2; printf(“%d,%d”, a , b); printf(“sum is%d”, a+b); printf(“%d”, 123) ; printf(“%c”, getchar( ); ,main() int a=123,
16、b= 12345 ; long c = 135790 ; printf(“%4d,%4dn”, a, b); printf(“%4dn”, a) ; printf(“%ldn”, c) ; printf(“%8ld”, c) ; 输出: 123 , 12345 123 135790 135790,示例,格式控制,输出表列,示例1,rintf 函数使用示例: main( ) int a=3, b=2; printf(“%d,%d”, a , b); printf(“sum is%d”, a+b); printf(“%d”, 123) ; printf(“%c”, getchar( ); ,重点,
17、示例2,main() int a=123,b= 12345 ; long c = 135790 ; printf(“%4d,%4dn”, a, b); printf(“%4dn”, a) ; printf(“%ldn”, c) ; printf(“%8ld”, c) ; 输出: 123 , 12345 123 135790 135790,格式控制,格式控制: 由双引号括起来的字符串表示,包括格式说明和普通字符两部分。,重点,输出表列,输出表列: 需要输出的数据,可以是: 常量,变量,表达式 ,函数,字符串常量 。,重点,示例,d格式符说明: 在指定输出数据宽度,且实际宽度和指定宽度不等时,系统
18、默认补空格。但可以改为补零。, 如希望数据输出宽度随计算结果而定,则可在 % 和格式字符之间加一个 号,且数据宽度由紧跟在 “控制字符串”后面的常量或变量的值确定。,如: int a = 123 ; printf ( “% 05d ” , a ) ; 输出: 00123,如:int i = 15 printf ( “ % d n ” , 8 , i ) ; 输出为: 15 又如: printf ( “ % d n ” ,k ,x ) ; 又如: int x , k ; printf ( “ % d n ” , k , x ) ;,补零或是补空格?,补零或是补空格? main() int a=1
19、23 ; printf(“%05d”, a ); 输出: 00123,提问,数据输出宽度的动态控制 main() int i = 15, k; printf (“%d n”, 8, i ) ; k = i 10; printf(“%dn”, k, i ) ; 输出为: 15 15,了解,d格式符说明: 在指定输出数据宽度,且实际宽度和指定宽度不等时,系统默认补空格。但可以改为补零。, 如希望数据输出宽度随计算结果而定,则可在 % 和格式字符之间加一个 号,且数据宽度由紧跟在 “控制字符串”后面的常量或变量的值确定。,如: int a = 123 ; printf ( “% 05d ” , a
20、) ; 输出: 00123,如:int i = 15 printf ( “ % d n ” , 8 , i ) ; 输出为: 15 又如: printf ( “ % d n ” ,k ,x ) ; 又如: int x , k ; printf ( “ % d n ” , k , x ) ;,补零或是补空格?,补零或是补空格? main() int a=123 ; printf(“%05d”, a ); 输出: 00123,提问,示例,数据输出宽度的动态控制 main() int i = 15, k; printf (“%d n”, 8, i ) ; k = i 10; printf(“%dn”
21、, k, x ) ; 输出为: 15 15,了解,域宽控制,s 格式符,(2) c 格式符: 用于输出一个字符 %c 控制字符常量或字符变量的输出。,(3) s 格式符: 输出一个字符串 %s %ms:规定输出字符串占的列宽。字符串 长度 m 时,全部输出。反之则右靠齐,左补 空格或左靠齐,右补空格。 %m.ns:规定输出字符串所占列宽,只取 字符串中左端 n个字符。输出右靠齐,左补空 格或左靠齐,右补空格。当 n m 时, 则 m 自动取 n 的值以保证 n 个字符正输出。, %mc:指定输出数据宽度,右靠齐,左补空格 %mc:左靠齐,右补空格。,例 3.3 void main ( ) ch
22、ar c = a ; int i = 97 ; printf(“%c”,a); printf(“%c,%dn”, c, c); printf(“%c,%dn”, i, i); ,如: char c = a ; printf (“ %3c ” , c ) ; 输出: a 又如: printf ( “ %3c %3c ” , a , b ) ; 输出: a b,例 3.4 void main ( ) printf (“%3s ,%7.2s ,% .4s,% 5.3s n” , “CHINA” “CHINA”, “CHINA”, “CHINA”) ; 输出: CHINA , CH , CHIN ,
23、CHI,例 3.3,c 格式符 用于输出一个字符 例 3.3 void main ( ) char c = a ; int i = 97 ; printf(“%c”,a); printf(“%c,%dn”, c, c); printf(“%c,%dn”, i, i); ,重点,c 格式符域宽控制 main( ) char c = a ; printf(“%3cn” , c ) ; printf(“%3c%3c”, a, b ); 输出: a a b,重点,s 格式符 输出一个字符串 void main ( ) printf(“%3s,%7.2s,%.4s,%5.3s n”, “CHINA” “
24、CHINA”, “CHINA”, “CHINA”) ; 输出: CHINA , CH , CHIN , CHI,示例,(2) c 格式符: 用于输出一个字符 %c 控制字符常量或字符变量的输出。, %mc:指定输出数据宽度,右靠齐,左补空格 %mc:左靠齐,右补空格。,例 3.3 void main ( ) char c = a ; int i = 97 ; printf(“%c”,a); printf(“%c,%dn”, c, c); printf(“%c,%dn”, i, i); ,如: char c = a ; printf (“ %3c ” , c ) ; 输出: a 又如: prin
25、tf ( “ %3c %3c ” , a , b ) ; 输出: a b,(3) s 格式符: 输出一个字符串 %s %ms:规定输出字符串占的列宽。字符串 长度 m 时,全部输出。反之则右靠齐,左补 空格或左靠齐,右补空格。 %m.ns:规定输出字符串所占列宽,只取 字符串中左端 n个字符。输出右靠齐,左补空 格或左靠齐,右补空格。当 n m 时, 则 m 自动取 n 的值以保证 n 个字符正输出。,例 3.4 void main ( ) printf (“%3s ,%7.2s ,% .4s,% 5.3s n” , “CHINA” “CHINA”, “CHINA”, “CHINA”) ; 输
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第二章 算法、简单的C程序设计 第二 算法 简单 程序设计
链接地址:https://www.31doc.com/p-11929806.html