C语言 第三章 算法和基本程序设计
C语言程序设计 第3版 第3章 算法与流程图

输入/输出框
处理框
流程图表示法一般包括三部分:
(1)表示相应操作的框; (2)带箭头的流程线; (3)框内外符
C语言程序设计
2. 流程图
符号表示 简单实例
用流程图表示下面的分段函数。
2x 1 y 0
3x 1
x0 x0 x0
C语言程序设计
3. 程序设计结构
顺序结构 选择结构 循环结构
(4)有零或多个输入:根据算法的不同,有的在实现过程中需要输入一些原始数据,而有 些算法可能不需要输入原始数据;
(5)有一个或多个输出:设计算法的最终目的是为了解决问题,为此,每个算法至少应有 一个输出结果,来反应问题的最终结果。
C语言程序设计
2. 流程图
符号表示 简单实例
流程图常用的符号:
起止框
顺序结构 选择结构 循环结构
循环结构流程图:
某学生在操场上跑步,一共要跑四圈,每一圈 都要跨过障碍,请画出该算法的流程图。
不成立 条件? 成立
A
圈数≤4? 成立
跨障碍
不成立
执行过程:
先判断条件,如果条件成立,执行A,再循环判断条件, 否则,跳出循环。
C语言程序设计
谢谢
C语言程序设计
第3章 算法与流程图
提纲
1.算法定义及特征 2. 流程图表示法 3. 程序设计结构
1. 算法
算法定义 算法特征
定义:
现实生活中解决问题时,一般都要制订一个针对具体问题的步骤和方法,以此为据去实现目标。 将为了解决问题所制订的步骤、方法称为算法(Algorithm)。
计算下面的分段函数。
特征:
(1)有穷性:算法中所包含的步骤必须是有限的,不能无穷无止,应该在一个人所能接受 的合理时间段内产生结果;
C语言第3章(谭浩强)

void main( ) { int a,b,c,d; unsigned u; a=12;b=-24;u=10; c=a+u;d=b+u; printf(“a+u=%d,b+u=%d\n”,c,d); } 运行结果:a+u=22,b+u=-14 结论:不同类型的整型数据可以进行算 术运算。
位数 16
取值范围 -215-(215-1) -32768—+32767 -32768—+32767
Short [int] Long [int]
短整型 长整型
16 32
16 16 32
Unsinged int 无符号整型 Unsinged short [int] Unsinged long [int] 无符号短整 型 无符号长整 型
8
④大写字母与小写字母意义不同, 被认为是两个不同的字符。一般变 量名用小写字母表示。 注意:常量名常用大写、变量名常 用小写!
year Day a_12 _abcdef #123 .com $100 1999Y a=b 1_2_3 +abcedfghi ∏ -5 等
9
3、变量要先定义后使用
可以改为double型) void main( ) {float x;double y; x=123456.789;y=123456.789; printf(“%f, %f”,x,y);} 结果为: 123456.789062, 123456.789000
29
§3.5
字符型数据
一、字符常量 1、在C语言中字符型常量是用单引号括 起来的一个字符。 如:’a‟、’A‟、’3‟、’?‟、’ ’、 ’$‟等。 2、以‚\”开头的转义字符,如\n不代表 字母n,而是代表换行。
c语言程序设计基础教程课后答案

c语言程序设计基础教程课后答案C语言程序设计基础教程课后答案第一章:C语言概述1. 简述C语言的特点。
- C语言是一种结构化编程语言,具有高效、灵活、功能强大等特点。
- 它支持多种编程范式,如过程式编程、结构化编程、面向对象编程等。
- C语言具有较低的抽象级别,接近硬件,因此执行效率较高。
2. C语言的发展历史。
- C语言在1972年由丹尼斯·里奇(Dennis Ritchie)在贝尔实验室开发。
- 它最初是作为UNIX操作系统的系统编程语言而设计的。
第二章:C语言环境和基本语法1. 如何设置C语言的开发环境?- 选择一个C语言编译器,如GCC、MSVC等。
- 安装编译器并配置环境变量,以便在命令行中直接调用编译器。
2. C语言的基本语法结构是什么?- C语言的基本结构包括预处理指令、函数定义、变量声明和语句。
第三章:数据类型、运算符和表达式1. C语言中的基本数据类型有哪些?- 整型(int)、字符型(char)、浮点型(float和double)等。
2. 运算符的分类及其用法。
- 算术运算符:+、-、*、/、%等。
- 赋值运算符:=、+=、-=等。
- 比较运算符:==、!=、>、<等。
- 逻辑运算符:&&、||、!等。
第四章:控制语句1. 条件语句的用法。
- if语句用于基于条件执行代码块。
- switch语句用于多条件选择。
2. 循环语句的用法。
- while循环用于在满足条件时重复执行代码块。
- for循环用于已知迭代次数的循环。
- do-while循环先执行代码块再判断条件。
第五章:数组和字符串1. 数组的基本概念和使用。
- 数组是相同数据类型的元素集合,存储在连续的内存位置。
- 声明数组:int arr[10]; 表示一个包含10个整数的数组。
2. 字符串的表示和操作。
- 在C语言中,字符串是以空字符('\0')结尾的字符数组。
- 使用标准库函数如strcpy、strlen等操作字符串。
C语言高教版第3版第三章三种基本控制结构上课件

„a‟<‘b‟ <‘c‟
关系表达式的值是一个逻辑值,即 【例2.18】判断以下关系表达式的值。 • “真”或“假”。 当 a = 3, b = 2, c = 1,请判断表达式的值 C语言没有逻辑型数据,以1代表“真”, 1. a > b 以“0”代表“假”。 1
2. (a > b) == c
只在a为假时,才判别b的值; 只在a、b都为假时,才判别 c的值
例 a=1;b=2;c=3;d=4;m=1;n=1; (m=a>b)&&(n=c>d)
结果m=0,n=1
【例】逻辑表达式的短路特性。例
复杂逻辑条件的表述
• 判断某一年year是否为闰年 1. 闰年 (year%4==0 && year%100!=0)||(year%400==0)
! 优先级:第2级 结合方向:自右向左
&&
||
优先级:第11级 结合方向:自左向右
优先级:第12级 结合方向:自左向右 /* 等价于(a<=x) && (x<=b)*/ /* 等价于(a>b)&&(x>y) */ /* 等价于 (a==b)||(x==y) */ /* 等价于(!a)||(a>b) */
有一个或多个输出
二、算法的描述工具
自然语言
(通俗易懂, 文字冗长, 容易有“歧义性”)
流程图
(灵活, 自由, 形象, 直观, 易理解, 占篇幅大)
N-S图
(新型流程图, 简洁)
伪代码
(介于自然语言和计算机语言之间, 中英文皆可,格式 自由, 易修改, 不直观, 不容易发现逻辑错误)
计算机语言
(用计算机实现算法, 可以执行出结果, 比如 C 语言)
C语言程序设计 第三章 栈和队列

通常称,栈和队列是限定插入和删除只能在表的“端点”进行的线性表。
线性表栈队列Insert(L,i, x) Insert(S, n+1, x) Insert(Q, n+1, x) 1≤i≤n+1Delete(L, i) Delete(S, n) Delete(Q, 1) 1≤i≤n栈和队列是两种常用的数据类型第三章栈和队列3.1 栈3.2 栈的应用举例3.4 队列学习提要:1.掌握栈和队列这两种抽象数据类型的特点,并能在相应的应用问题中正确选用它们。
2.熟练掌握栈类型的两种实现方法,即两种存储结构表示时的基本操作实现算法,特别应注意栈满和栈空的条件以及它们的描述方法。
3.熟练掌握循环队列和链队列的基本操作实现算法,特别注意队满和队空的描述方法。
重难点内容:顺序栈的相关操作、循环队列的判空判满§3.1 栈(stack)3.1.1栈的类型定义3.1.2栈的表示和实现★栈的定义和特点定义:限定仅在表尾进行插入或删除操作的线性表,表尾—栈顶,表头—栈底,不含元素的空表称空栈。
a n a 1a 2……...栈底栈顶...出栈进栈栈s=(a1,a2,……,an)特点:先进后出(FILO )或后进先出(LIFO )3.1.1栈的类型定义ADT Stack{数据对象:D={ a i| a i ∈ElemSet, i=1,2,...,n, n≥0 }数据关系:R1={ <a i-1, a i>| a i-1, a i∈D, i=2,...,n }约定an 端为栈顶,a1端为栈底。
基本操作:} ADT Stack栈的类型定义InitStack(&S)DestroyStack(&S)ClearStack(&S)StackEmpty(s)StackLength(S)GetTop(S, &e)Push(&S, e)Pop(&S, &e)StackTravers(S, visit())3.1.2 栈的表示和实现顺序栈类似于线性表的顺序映象实现,指向表尾的指针可以作为栈顶指针。
C语言算法及三种基本程序结构

C语言算法及三种基本程序结构C语言算法及三种基本程序结构大家知道C语言都有哪些算法吗?这些算法的程序结构是怎么样的呢?下面店铺为大家整理了C语言算法及三种基本程序结构,希望能帮到大家!算法做任何事情都有一定的步骤。
为解决一个问题而采取的方法和步骤,就称为算法。
算法是一个基本的概念,但也是一门深奥的学问,小到如何输出九九乘法表,如何对一组数据进行排序,大到如何控制飞行器的姿态,如何让无人机壁障。
这里主要是向大家阐述一下算法的概念,对于初学者,涉及到的算法都很简单,一般不会成为学习的障碍,我们会在后面的实例中逐渐向大家渗透具体的算法。
请大家思考一个问题:如何求1×2×3×4×5的值。
最原始方法:步骤1:先求1×2,得到结果2。
步骤2:将步骤1得到的乘积2乘以3,得到结果6。
步骤3:将6再乘以4,得24。
步骤4:将24再乘以5,得120。
这样的算法虽然正确,但太繁。
改进的算法:S1:使t=1S2:使i=2S3:使t×i,乘积仍然放在在变量t中,可表示为t×i -> tS4:使i的值+1,即 i+1 -> iS5:如果i≤5,返回重新执行步骤S3以及其后的S4和S5;否则,算法结束。
如果计算100!只需将“S5:若i≤5”改成“i≤100”即可。
如果改成求1×3×5×7×9×11,算法也只需做很少的改动:S1:1 -> tS2:3 -> iS3:t×i -> tS4:i+2 -> iS5:若i≤11,返回S3;否则,结束。
该算法不仅正确,而且是计算机较好的算法,因为计算机是高速运算的自动机器,实现循环轻而易举。
三种基本程序结构几乎所有编程语言,包括C语言,都会有三种基本的程序结构:顺序结构、选择结构和循环结构。
顺序结构顺序结构就是一条一条地从上到下执行语句,所有的语句都会被执行到,执行过的语句不会再次执行。
C语言第3章简单程序
这种如同乱麻一样的算法称为BS型算 法,意为一碗面条(A Bowl of Spaghetti),乱无头绪。
• 三种基本结构
Bohra和Jacopini提出了以下三种基本 结构: 顺序结构、选择结构、循环结构
用这三种基本结构作为表示一个良好算 法的基本单元。
三种基本结构的图示:
顺序结构
选择结构
循环结构的图示:
主要内容
3.1 算法概述 3.2 程序的三种基本结构 3.3 C语句综述 3.4 赋值表达式和赋值语句 3.5 数据输入输出的概念 3.6 字符数据的输入输出 3.7 简单的格式输入与输出 3.8 顺序结构程序设计举例
3.1 算法概述
一个程序应包括两个方面的内容: • 对数据的描述:数据结构(data structure) • 对操作的描述:算法(algorithm) 著名计算机科学家沃思提出一个公式: 数据结构 + 算法 = 程序
includestdiohincludestdiohvoidmainvoidmain定义字符变量定义字符变量abc从键盘输入一个字符送给字符变量从键盘输入一个字符送给字符变量a从键盘输入一个字符送给字符变量从键盘输入一个字符送给字符变量b从键盘输入一个字符送给字符变量从键盘输入一个字符送给字符变量c将变量将变量aa的值输出的值输出将变量将变量aa的值输出的值输出将变量将变量aa的值输出的值输出pu• 传统流程图的弊端 传统流程图用流程线指出各框的执行 顺序,对流程线的使用没有严格限制。因 此,使用者可以毫不受限制地使流程随意 地转向,使流程图变得毫无规律,阅读者 要花很大精力去追踪流程,使人难以理解 算法的逻辑。如图:
缺点:难以阅读、修改,使算法的 传统流程图的流程可以是: 可靠性和可维护性难以保证。 解决办法:必须限制箭头的滥用, 即不允许无规律地使流程随意转向, 只能顺序地进行下去。
chap3 算法与基本程序设计
C语言程序设计
第3章 算法与基本程序设计
3.2.3 I/O格式--格式字符
1 2 3 4 5 6 7 8 9 10 %d %o %x、%X %u %c %s %f %e、%E %g %% 十进制格式 八进制格式 十六进制格式 无符号的十进制格式 一个字符格式 字符串格式 实数格式 指数格式 e和f中较短一种格式 百分号本身
2
C语言程序设计
第3章 算法与基本程序设计
3.1 问题引入
#include <stdio.h> main( ) { double x; int a; scanf(“%lf”,&x); x=x*100+0.5; a=x; x=a/100.0;//why? printf(“%f”,x);}
3
试一下运行 时结果
特
束
C语言程序设计
第3章 算法与基本程序设计
3.2.1 字符数据的输入和输出
例: 将输入的大写字母转变为小写字母输出。
#include <stdio.h> main( ) { char ch; ch=getchar(); ch-=32; putchar(ch); }
7
运行时: a 结果: A
24
C语言程序设计
第3章 算法与基本程序设计
3.2.4 格式输入函数 scanf
可以按指定格式从键盘读入任意类型的数据。 格式:scanf( 格式字符串, 地址参数列表 );
格式 适用类型 格式 适用类型 变量的地址列表,可通过取地址运算符 &
%d获取变量地址 int %f float
%ld
%u %lu
123.456001, □□□□123.46, 123.46, 123.46
C语言程序设计基础讲解PPT第3章(第二讲)
14
与 哪 个 if 配 对 ? ⑶ if (c<=100) if (c>=50) printf("50<=c<=100\n"); else printf("c<50\n")
2019/1/8
再例如:
if(a>b) if(a>c) if(a>d) m=1; else m=2; else m=3; 问题:哪一个 else 和哪一个 if 相匹配?
24
2019/1/8
注意:
25
switch语句的书写格式:语句体本身必须用花括 号括起;case和default后面如果有多条语句, 则可以不必使用花括号;case和常量表达式之 间必须有空格;default可以写在语句体的任何 位置,也可以省略不写 break语句可以改变case的语句标号作用,终止 后续case语句序列的执行。 switch语句和break 语句结合,可以实现程序的选择控制(break语 句还可以在循环语句中使用) 允许switch嵌套使用,但同一个switch语句中, 任意两个case的常量表达式值不能相同。
2019/1/8
程序:
#include "stdio.h" main( ) { char ch; ch=getchar( ); if (ch>='A' && ch<='Z') ch=ch+32; printf("%c\n",ch ); } 可使用条件表达式代替
程序运行情况如下: putchar(ch>='A' && ch<='Z' ? ch+32:ch); G putchar (' \n') g
C语言程序设计第3章 顺序结构编程2018版
类型 变量长度(单位:字节) 数值范围
short int
2
-215 ~ 215-1
4
-23311 ~ 23311-1
long
unsigned short
unsigned int
unsigned long
4
-231 ~ 231-1
2
0 ~ 216-1
4
0 ~ 232-1
4
0 ~ 232-1
➢ 整型常量三种形式
例:total = money*num; int money=10, num=10;
注:int money=num=10;
3.2.3 赋值语句
➢ 复合赋值运算符 a += b 等价于 a = a + b a -= b 等价于 a = a – b a *= b 等价于 a = a * b a /= b 等价于 a = a / b a %= b 等价于 a = a % b
案例二:共享单车费用程序运行结果
案例三:孩子身高预测
问题描述:孩子的身高可以利用遗传因素 即利用父母的身高进行预测。女儿身高计 算公式为:女儿成人时的身高=(父高× 0.96 + 母高)÷2 (注:此方法未考虑环 境因素的影响)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【例3.4】 单个字符的输入和输出。 #include <stdio.h> main() { char ch; /*从键盘上读入字符直到“回车”结束*/ ch= getchar(); /*显示输入的第一个字符*/ putchar(ch); putchar(′\n′); /*换行*/ }
运行时,输入xxx<回车> ,在屏幕上显示:x
3.4 顺序结构程序设计
• 1. 表达式语句 • 表达式语句是在各种表达式后加一个分号(;) 形成一个表达式语句。 • 2. 空语句 • 空语句直接由分号(;)组成,常用于控制语句 中必须出现语句之处。它不做任何操作,只在 逻辑上起到有一个语句的作用。例如: • ; • 空语句也是一个语句,不产生任何动作。空语 句常用于构成标号语句,标识程序中相关位置; 循环语句中空循环体;模块化程序中未实现的 模块及暂不链入的模块。
【例3.5】 将小写字母转换成大写。 #include <stdio.h> main( ) { char ch; ch=getche( ); putchar(ch-32); }
若输入b,在屏幕上显示: bB
3. 字符串输入/输出函数
字符串输入函数gets() 用来从键盘读入一串字符。函 数的调用形式: gets(字符串变量名); 在输入字符串后,必须用回车作为输入结束。该回车 符 并 不 属 于 这 串 字 符 , 由 一 个 “ 空 操 作 字 符 (′ \0′ )‖在串的最后来代替它。此时空格不能结束字 符串的输入,gets函数返回一个指针。 字符串输出函数puts(),将字符串数据(可以是字符串 常量、字符指针或字符数组名)显示在屏幕上并换行。 函数的调用形式是: puts(字符串数据);
– 格式输入函数
格式: scanf(“格式控制串”,地址表) 功能:按指定格式从键盘读入数据,存入地址表指定的 存储单元中,并按回车键结束 返值:正常,返回输入数据个数 • 地址表:变量的地址,常用取地址运算符& • 格式字符:d,i,o,x,u,c,s,f,e
第3章 算法和基本程序设计
• • • • • • 3.1 3.2 3.3 3.4 3.5 3.6 算法的概念 结构化程序设计方法 程序的基本结构 顺序结构程序设计 数据的输入输出 C程序的上机步骤
3.1 算法的概念
1.定义: 做任何事情都有一定的步骤。为解决一 个问题而采取的方法和步骤,就称为算法。 2.计算机算法可分为两大类: 数值运算算法:求解数值; 非数值运算算法:事务管理领域。
怎样表示一个算法
用自然语言表示算法 歧义性,描述分支、循环算法不方便 用流程图表示算法 用N-S流程图表示算法 用伪代码表示算法用计算机语言表示算法起止框输入输出框 处理框
判断框 流程线
连接点
• 【例3.1】 求三 个整数的和。 • 求三个整数和的 算法流程图如图 所示。
开始
输入x,y,z
x+y+z => sum
一个著名的公式
• 数据结构+算法=程序
• 数据:计算机所能识别、存储和处理的 对象。数据的动态性。 • 数据结构:确定数据对象及其存储方式, 并定义在这些数据对象上的运算集合。 • 算法:为解决一个问题而采取的方法和 步骤。
算法的特性
• • • • • • • • 1 有穷性 操作步骤是有限的,不是无限的。 2 确定性 每个步骤是确定的,无歧义性。 3 有零个或多个输入 4 有一个或多个输出 5 有效性 每一步骤能有效执行,并得到确定结果。
结构化的程序设计方法
• 基本思路: 把一个复杂问题的求解过
程分阶段进行,每个阶段处理的问题 都控制在人们容易理解和处理的范 围内.
• • • • • 采用的方法: 1 自顶而下 2 逐步细化 3 模块化设计 4 结构化编码
3.3 程序的基本结构
三种基本结构
•1 •2 •3 顺序结构 选择结构 循环结构
A
N-S流程图
B
循环结构的流程图符号
a a
A
A
p1 p2 成立 不成立 b
不成立
b
成立
While型
传统流程图
Until型
循环结构的流程图符号(续)
当p1成立 A
A 直到p1成立 Until型
While型
N-S流程图
一个有用的结论
• 已经证明: •
三种基本结构的顺序组 成可以表示任何复杂的算法 结构。
567 ff 101 567
十六进制无符号整数 int a=255;printf(―%x‖,a); int a=65;printf(―%o‖,a); 八进制无符号整数 不带符号十进制整数 int a=567;printf(―%u‖,a); 单一字符
例 main() { 例 int a=3,b=4;unsigned int u=65535; 例 int a=3,b=4; 字符串 printf(―%s‖,―ABC‖); printf(―%d %d\n‖,a,b); printf(―%d printf(‖u=%d\n",u); %d\n‖,a,b); float a=567.789;printf(―%e‖,a); 指数形式浮点小数 printf(―a=%d , b=%d\n‖,a,b); } printf(―a=%d , b=%d\n‖,a,b); float 小数形式浮点小数 输出结果:u=-1 输出结果: a=567.789;printf(―%f‖,a); 3 4 float a=567.789;printf(―%g‖,a); e和f中较短一种 a=3, b=4
3.5 数据的输入与输出
C语言无I/O语句,I/O操作由函数实现 #include <stdio.h>
★字符输出函数
格式: putchar( c ) 参数: c为字符常量、变量或表达式 功能:把字符c输出到显示器上 返值:正常,为显示的代码值;出错,为EOF(-1)
【例3.3】 字符数据的输出。 #include <stdio.h> main( ) { char a, b; a=′r′; b=′e′; putchar(a); putchar(b); putchar(′d′); putchar(′\n′); }
输 出 sum 的 值
结束
图3.2 求三个整数和的算法
开始 输入m,n m,n为正整数
【例3.2】 求最大公 约数。
求m/n的余数r
r=0?
否
是
n =>m, r =>n
输出n
结束
最大公因数的算法
b|a 表示b整除a或者a整除以b 则 a是b的倍数,b是a的约数
求最大公因数的最普遍的算法是欧几里得算法,它最初 是公元前由欧几里得提出来的,有时也称它为辗转相除 法.表述如下: 设给定m,n(m>n),令r0=m,r1=n,有
rk-2 = qk-1 qk rk + rk =(qk-1 qk +1) rk 则得rk=gcd(rk-1,rk)=gcd(rk-2,rk-1)=…=gcd(r2,r3)=gcd(r1, r2)=gcd(r0,r1)=gcd(m,n).
案例 求1×2×3×4×··×1000 ·· ·· • • • • • S1: 求1×2=2 S2: 求2×3=6 S3: 求6×4=24 •••••• 天啊!共需999 个步骤,太可 怕了。 • • • • • S1: 1 p (p:被乘数) S2: 2 i (i:乘数) S3: p×i p S4: i+1 i S5: 若i≤1000,返回S3; 否则,结束。 • 只需5个步骤,简单。
• 5. 控制语句 • 控制语句有条件判断语句(if、switch),循环 语句(for、while、do-while),转移语句(goto、 continue、break、return)。控制语句根据控 制条件决定程序的执行流程,控制语句不是 顺序执行的。 • 顺序结构是C语言的基本结构,除非指示转 移,否则计算机自动以语句编写的顺序一句 一句地执行C语句。
三种基本结构的特点
•1 •2 •3
•4
只有一个入口 只有一个出口 结构内的每一部分都有机会被执行到
结构内没有死循环
A p A B
顺序结构的流程图符号
a
A A B b B
传统流程图
N-S流程图
选择结构的流程图符号
成立 p 不成立 成立 p 不成立
A
B
A
传统流程图
选择结构的流程图符号(续)
p
成立 不成立
• 3. 函数调用语句 • 由函数调用加上分号组成。 • 4.复合语句是由一对花括号{ }括起的若干个语句, 语法上可以看成是一个语句。复合语句中最后一个 语句的分号不能省略。例如下面是一个复合语句: • { z = x; • x = y; • y =z; • }
• 凡是单一语句可以存在的位置,均可以使用复合语 句。复合语句用在语法上是单一语句,而相应操作 需多条语句描述的情况。
【例3.6】 字符串的输入和输出。 #include <stdio.h> main( ) { char str[80]; gets(str); puts(str); }
当输入为“How are you?‖,则输出为: How are you?
3.5.3 格式输入与输出___格式输出函数
格式:printf(“格式控制串”,输出表) 功能:按指定格式向显示器输出数据 返值:正常,返回输出字节数;出错,返回EOF(-1)
• • • • • • • • •
3.1.2 算法的评价标准 1. 正确性 对任何合法的输入,算法都会得出正确的结果。 2. 可读性 可读性指算法被理解的难易程度。 3. 健壮性(鲁棒性) 健壮性即对非法输入的抵抗能力。 4. 高效率与低存储量需求 通常,效率指的是算法执行时间;存储量指的是算 法执行过程中所需的最大存储空间,两者都与问题 的规模有关。二者往往是一对矛盾,常常可以用空 间换时间,也可以用时间换空间。