第2章_算法---程序的灵魂_[谭浩强_C程序设计_(第四版)]
C语言程序设计(第四版) 谭浩强 课件 PPT 完整版
语句
printf语句中的“\n‖是换行
符
<
>
C语言程序设计
第/* example1.1 calculate the sum of a and b*/ #include <stdio.h> 预处理命令 /* This is the main program */ void main() 注释 { int a,b,sum; /*定义变量*/ 函数 a=10; b=24; 语句 sum=add(a,b); printf(”sum= %d\n",sum); } printf语句中的“ %d ‖是表
C语言程序设计
第一章 C语言概述
C语言结构特点
函数与主函数
程序由一个或多个函数组成 必须有且只能有一个主函数main(),可以放在程序中任一 位臵 程序执行从main开始,在main中结束,其它函数通过嵌 套调用得以执行。
程序语句
C程序由语句组成 用‚;‛作为语句终止符
注释
C语言程序设计
第一章 C语言概述
Turbo C集成开发环境
配臵要求
UNIX,PC-DOS,MS-DOS,UCDOS操作系统 硬盘容量约2M,448K RAM运行空间
安装Turbo C
创建子目录 Install 若不是可安装盘,将文件拷贝到对应的目录下
TC
*.* *.*
INCLUDE SYS
Alt +x Alt+F ,Q
帮助Help
F1 Ctrl+F1
<
>
C语言程序设计
第一章 C语言概述
常用热键 基本操作:
F10-----调用主菜单 F2------存盘 F3------打开 F1------帮助信息 Alt+F9------Compile Ctrl+F9------Run Alt+F5------User Screen Alt+X ------退出Tc
C程序设计(第四版)
( int
{ int z; if (x>y) z=x; else z=y; return (z); }
x, int 声明部分
执行部分
y)
合法是空函数:void dump( ) { }
2015-4-2 山东大学管理学院 戚桂杰 10
1.3 简单的C程序介绍
(4)一个C程序总是从main函数开始执行的。
2015-4-2 山东大学管理学院 戚桂杰 17
2.2 简单算法举例
1 1 1 1 1 1…… 1 1 1 1 1 1 例2. 4 求 2 23 34 4 9999100 100
算法如下: S1:sign=1 S2:sum=1 S3:deno=2 S4:sign=(1)×sign S5:term=sign×(1/deno) S6: sum=sum+term S7:deno=deno+1 S8:若deno<=100返回S4;否则算法结束。
C程序设计(第四版) 谭浩强 著
山东大学管理学院 戚桂杰
目录
• • • • • • • • • • • 程序设计和C语言 算法——程序的灵魂 最简单的C程序设计——顺序程序设计 选择结构程序设计 循环结构程序设计 利用数组处理批量数据 利用函数实现模块化程序设计 善于利用指针 用户自己建立数据类型 对文件的输入输出 常见错误分析
2015-4-2
山东大学管理学院 戚桂杰
13
第2章 算法——程序的灵魂
• 程序=数据结构+算法+程序设计方法+语言工具和环境
• 数据结构:对数据的描述,即在程序中指定数 据的类型和数据的组织形式。 • 算法:对操作的描述,即操作步骤。 2.1 什么是算法 • 为解决一个问题而采取的方法和步骤。 • 计算机算法分为数值运算算法、非数值运算算 法
C语言程序设计(谭浩强版)第二章
不应是中断程序的执行,而应是返回一个
表示错误或错误性质的值,以便在更高的
抽象层次上进行处理。
算法设计的原则
4.高效率与低存储量需求
通常,效率指的是算法执行时间; 存储量指的是算法执行过程中所需 的最大存储空间, 两者都与问题的规模有关。
算法设计的原则
算法的时间复杂度
第二章 程序的灵魂——算法
2.1 算法的概念 2.2 算法的简单举例
2.3 算法的特性 2.4 怎样表示一个算法 2.5 结构化程序设计方法
算法的概念
计算机应用: 提取数学模型—设计算法— 编程—测试—应用
程序设计=数据结构+算法
数据结构:对数据的描述 算法:对操作的描述 除此之外程序设计还包括:程序设计方法, 和程序设计语言
怎样表示一个算法
例4的伪代码表示法如下 开始 读入整数n 置sum的初值为0 置k的初值为1 执行下面的操作: 如果k为奇数,置item=1/k 如果k为偶数,置item=-1/k sum=sum+item 直到k>n 打印sum的值 结束
算法设计的原则
算法设计的原则
设计算法时,通常应考虑达到以下目标: 1.正确性 2.可读性 3.健壮性 4.高效率与低存储量需求
从算法中选取一种对于所研究的问题 来说是 基本操作 的原操作,以该基 本操作 在算法中重复执行的次数 作 为算法运行时间的衡量准则。
结构化程序设计方法
采用结构化算法写成的计算机程序是结构 化程序。要编写出结构化程序,经常采用 的方法是结构化程序设计方法。这种方法 的基本思路是: 把给定的问题按层次(纵方向)、分阶段 (横方向)分解为一系列易于编程解决的 小问题,然后对应着这些分解的小问题, 设计结构化的算法,最后采用语言将算法 描述出来。这样一种程序设计方法就是结 构化程序设计方法。
c程序设计第四版(谭浩强著)第2章_算法
如果题目改为:求1×3×5×……×1000 算法只需作很少的改动: S1:1→p S2:3 → i S3:p×i → p S4:i+2 → i S5:若i≤11,返回S3。否则,结束。
C程序设计(第三版)
C程序设计(第三版)
50
2.4.5 用伪代码表示算法 • 概念:伪代码是用介于自然语言和计算机 语言之间的文字和符号来描述算法。 • 特点:它如同一篇文章一样 ,自上而下地 写下来。每一行(或几行)表示一个基本操 作。它不用图形符号,因此书写方便 、格 式紧凑,也比较好懂,也便于向计算机语 言算法(即程序)过渡。 • 用处:适用于设计过程中需要反复修改时 的流程描述。
C程序设计(第三版)
开始
置t的初值为1
置i的初值为2 当i<=5,执行下面操作: 使t=t×i 使i=i+1 {循环体到此结束} 输出t的值 结束
54
2.4.6 用计算机语言表示算法 • 概念:用计算机实现算法。计算机是无法 识别流程图和伪代码的。只有用计算机语 言编写的程序才能被计算机执行。因此在 用流程图或伪代码描述出一个算法后,还 要将它转换成计算机语言程序。 • 特点:用计算机语言表示算法必须严格遵 循所用的语言的语法规则,这是和伪代码 不同的。 • 用处:要完成一件工作,包括设计算法和 实现算法两个部分。设计算法的目的是为 了实现算法。
C程序设计(第三版) 6
2.2 简单算法举例
例2.1: 求1×2×3×4×5
步骤1:先求1×2,得到结果2 步骤2:将步骤1得到的乘积2再乘以3,得到结果6 步骤3:将6再乘以4,得24 步骤4:将24再乘以5,得120
如果要求1×2×…×1000,则要写999个步骤
C语言第二章谭浩强第四版
第二章 程序的灵魂
信息技术教研室
什么是算法
计算机算法可分为两大类别:
数值运算算法 非数值运算算法 数值运算的目的是求数值解 非数值运算包括的面十分广泛,最常见的是用 于事务管理领域
第二章 程序的灵魂
信息技术教研室
简单的算法举例
求1×2×3×4×5× 例2.1 求1×2×3×4×5 …×1000
第二章 程序的灵魂
信息技术教研室
简单的算法举例
例2.3 判定2000—2500年中的每一年是否闰年,并 将结果输出。 闰年的条件: (1)能被4整除,但不能被100整除的年份都是闰 年,如2008、2012、2048年 (2)能被400整除的年份是闰年,如2000年 不符合这两个条件的年份不是闰年 例如2009、2100年
1t
2i t*it i+1i N i>5 Y 输出t
结束
第二章 程序的灵魂
信息技术教研室
例2.7: 例2.2的算法用流程图表示。有50个学生,
要求将成绩在80分以上的学生的学号和成
绩输出。
如果包括输入数据部分
开始 1i Y gi≧80 N
开始 1i 输入ni、gi
输出ni、gi i+1i N i>50 Y 结束
①
③
③
① 起止框 位置不够 判断框
防止交叉 输入输出框
处理框
② 连接点 注释框
流程线
开始
例2.6 将例2.1的算法用流 程图表示。 求1×2×3×4×5 如果需要将最后结果输出:
1t
2i t*it i+1i N
i>5
Y
结束
开始
例2.6 将例2.1的算法用流 程图表示。 求1×2×3×4×5 如果需要将最后结果输出:
C程序设计第四版谭浩强完整版课后习题答案
C程序设计(第四版)(谭浩强)第一章课后习题答案#include<>代码均调试成功,若有失误大多不是代码问题.自已找找.int main(){printf("Welcome to \n");return 0; }#include<>int main(){int a,b,sum;a=5;b=4;sum=a+b;printf("The sum is %d .\n",sum);return 0;}P008 调用函数比较两个数的大小.#include<>int main(){int max(int x,int y); int a,b,c;scanf("%d,%d",&a,&b); c=max(a,b); printf("The max is %d .\n",c);return 0;}int max(int x,int y) {int z; if (x>y)z=x;elsez=y;return(z); }P015 三个数的大小.(数字0表示课后练习题)#include<>int main(){int a,b,c,d; int max(int x , int y , int z); printf("Please input 3 numbers :\n");scanf("%d %d %d",&a,&b,&c);d=max(a,b,c); printf("The max is :%d .\n",d); }int max(int x , int y , int z){int m;if (x>y && x>z) m=x;if (y>x && y>z)m=y;if (z>y && z>x)m=z;return (m); }C程序设计(第四版)(谭浩强)第2章课后习题答案算法——程序的灵魂P017 计算机1-5相乘的积.#include<>int main(){int i,s=1; for(i=1;i<6;i++) {s=s*i; n",s);return 0;}#include<> int main(){int i,s=1; for(i=1;i<12;i++) 可以是i=i+2{if(i%2!=0) s=s*i;elsecontinue; }printf("The sum is %d .\n",s);return 0;}暂时没法做.年的概念是地球围绕太阳一周的时间(所谓公转周期)称为一年,这个周期是相当稳定的,很长时间也不会变动1秒,但是真正的一年是天(目前)。
《C程序设计》最全的错误勘误-谭浩强要哭了资料
谭浩强《C程序设计》(第四版)错误不完全汇集谭浩强《C程序设计》(第四版)错误不完全汇集 (1)前言 (25)p12 (25)p16 (26)第一章程序设计和C语言 (27)1.2 什么是计算机语言 (27)p1 (27)p2 (27)p2 (27)p3 (27)p3 (27)1.3 C语言的发展及其特点 (29)p4 (29)p4 (30)p4 (31)p5 (32)p5 (33)p5 (34)p5 (34)p5 (35)p5 (36)1.4 最简单的C语言程序 (37)p6 (37)p6 (37)p6 (37)p6 (37)p7 (38)p7 (38)p8 (39)p9 (39)p9 (39)p9 (39)p10 (39)p10 (40)p10 (40)p11 (40)p11 (40)p12 (40)p10~12 (41)1.5 运行C程序的步骤与方法 (42)p13 (42)p14 (42)1.6 程序设计的任务 (43)p14 (43)习题 (45)p15 (45)第二章算法——程序的灵魂 (46)p16 (46)p16 (46)p16 (47)2.1 什么是算法 (47)p16~17 (47)2.2 简单的算法举例 (48)p17 (48)p18 (48)p19~20 (48)p20 (48)p21 (48)p21 (49)2.3 算法的特性 (49)p21 (49)2.4 怎样表示一个算法 (49)p22 (49)p26 (50)p26 (50)p28 (50)p29 (51)p31 (51)p32 (51)p33 (51)2.5 结构化程序设计方法 (52)p34 (52)第三章最简单的C程序设计——顺序程序设计 (53)P37 (53)P37 (54)3.1 顺序程序设计举例 (55)P37 (55)P37~38 (55)P38 (56)P38 (56)P38 (56)P38 (57)P38 (57)P39 (58)P39 (58)3.2数据的表现形式及其运算 (58)P39 (58)P39 (59)P39 (59)P37 (59)P39~41 (60)p40 (61)p40 (61)p41 (61)p41 (62)p41 (62)p41 (62)p41 (62)P42 (63)P42 (63)P42 (63)P42 (63)P42 (63)P42 (65)p43 (65)p44 (65)p44 (66)p44 (66)p45 (66)p45 (66)p45 (66)p46 (66)p46 (67)p47 (67)p47 (68)p47 (68)p47 (68)p47 (68)p48 (69)p48 (69)p48 (69)p48 (69)p49 (76)p49 (76)p49 (76)p49 (76)p49~51 (77)P50 (78)P50 (78)P50 (78)P50 (79)P51 (79)P51 (79)3.2.6 怎样确定常量的类型 (79)P51 (79)P51 (79)P51 (80)P51 (80)P51~52 (80)3.2.7 运算符和表达式 (80)P52 (80)P53 (81)P53 (81)P53 (81)P53 (81)P53 (81)P53 (82)P53 (82)P53 (82)P54 (82)P54 (82)P54 (83)P54 (83)P54 (83)P54 (83)P54 (84)P54 (87)P54 (87)P54 (88)P54 (88)P54 (88)P54 (89)P54 (89)P54~55 (89)P55 (91)P55 (91)P56 (91)P56 (91)P56 (92)P57 (92)P57 (92)P58 (92)P59 (92)P59 (93)P60 (93)P60 (93)P60 (93)P61 (94)P61 (94)P61 (94)P61 (94)P62 (96)P62 (96)P63 (96)P63 (96)P64 (97)P64 (97)P64 (97)P65 (98)3.4 数据的输入输出 (98)p66 (98)P67 (99)P67 (99)P67 (99)P67 (99)P67 (99)P67 (99)P68 (101)P69 (101)P69 (101)P70 (102)P70 (102)P73 (102)P73~74 (102)P74 (103)P74 (103)P74 (103)P75 (103)P76 (103)P76 (104)P76 (104)P77 (104)P78 (105)P78 (105)P79 (105)P79 (105)P79 (106)P79 (106)P79 (106)P79 (106)P80 (106)P82 (106)第4章选择结构程序设计 (107)4.1 选择结构和条件判断 (107)P85 (107)P86 (107)4.1 用if语句实现选择结构 (107)P87 (107)P89 (108)P90 (108)P91 (109)4.3 关系运算符合关系表达式 (110)P91 (110)P92 (110)4.4 逻辑运算符和逻辑表达式 (110)P92~93 (110)P93 (111)P94 (112)P95 (112)P97 (113)4.5 逻辑运算符和逻辑表达式 (113)P97 (113)P98 (114)P99 (114)4.6 选择结构的嵌套 (114)P100 (114)P100~101 (114)P101~102 (115)4.7用switch语句实现多分支选择结构 (116)P103 (116)P104 (116)4.8 选择结构程序综合举例 (117)P105 (117)P106 (117)P108~109 (118)P111 (120)第5章循环结构程序设计 (120)P116 (120)5.3 用do...while语句实现循环 (121)P117 (121)P118 (121)P118~119 (122)5.4 用for语句实现循环 (122)P120 (122)P121 (122)P122 (123)P123 (123)P124 (123)5.5 循环的嵌套 (124)P124~125 (124)5.6 几种循环的比较 (124)P125 (124)5.7 改变循环执行的状态 (125)P126 (125)P127 (125)P128~129 (125)5.8循环程序举例 (126)P131 (126)P132 (126)P133 (127)P134 (128)P135 (128)P137 (129)P137~138 (130)P138 (131)P138~139 (131)P139~140 (132)第6章利用数组处理批量数据 (132)6.1 怎样定义和引用一维数组 (132)P142 (132)P143 (132)P144 (134)6.1.2 怎样引用一维数组 (134)P147 (134)6.2 怎样定义和引用二维数组 (135)P149 (135)P150 (135)P153 (135)P154 (136)P154~155 (137)P156 (137)P156~157 (139)P157 (140)p160 (141)p161 (142)p162 (143)p163 (143)p164 (144)p165 (145)p165~166 (146)p167 (148)p168 (149)第7章用函数实现模块化程序设计 (150)7.1 为什么要用函数 (150)p170 (150)p171 (151)p172 (152)p172 (153)7.2怎样定义函数 (153)p172 (153)p173 (155)p174 (156)7.2.2 定义函数的方法 (156)7.3 调用函数 (157)p174~175 (157)7.3.1 函数调用的形式 (157)p175 (158)p176 (159)p177 (160)p178 (161)p179 (163)7.4 对被调用函数的声明和函数原型 (164)p180 (164)p181 (165)p182 (166)7.5 函数的嵌套调用 (167)p183 (167)p184 (168)7.6 函数的递归调用 (169)p185 (170)p186 (171)p191 (174)7.7 数组作为函数参数 (174)p192 (175)p193 (176)p194 (178)p195 (180)p196 (181)p197 (182)p198 (183)7.8 局部变量和全局变量 (183)p199 (183)P200 (184)P201 (184)P202 (185)P203 (186)7.9 变量的存储方式和生存期 (186)P204 (186)P205 (187)P206 (188)P207 (188)P208 (189)P208~212 (190)P209 (190)P210 (191)P212 (192)P213 (193)7.10 关于变量的声明和定义 (194)P214 (194)7.10 内部函数和外部函数 (196)P215 (196)P216 (196)P216~217 (196)P217 (197)第8章善于利用指针 (197)P220 (197)P220~221 (198)P221 (198)P222 (199)P223 (199)P224 (199)P225 (199)P226 (201)P227 (201)P228~229 (202)P228~229 (202)P230 (202)P231 (203)P232 (203)P233 (204)P233~234 (204)P235 (205)P236 (205)P237 (205)P238 (205)P239 (206)P239~240 (207)P241 (209)P241~242 (209)P242~243 (210)P243 (210)P244 (211)P245 (213)P246 (213)P247 (214)P248 (215)P249 (216)P251~252 (217)P252 (217)P252~253 (218)P254 (220)P255 (221)P256 (222)P257 (222)P257~258 (222)P258 (223)P258~259 (224)P259 (224)P259~260 (225)P260~261 (226)P261 (226)P262 (227)P263 (228)P264 (228)P265 (229)P266 (230)8.5 指向函数的指针 (231)P268 (231)P269 (232)P268~269 (232)P269 (233)P270 (234)P271~272 (234)8.6 返回指针值的函数 (236)P274 (236)P275 (237)P276 (237)P277 (238)P278~279 (238)P280 (240)P 282 (240)P 282 (240)P 283 (241)P 283 (241)P 283 (241)P 284 (241)P 284 (242)P 285 (242)P 285 (242)P 285 (242)P 285 (243)P 285 (243)P 285 (243)P 285 (243)P 285 (244)P 286 (244)P 286 (244)P 286 (244)P 286 (245)P 286 (245)P 286 (245)P 286 (245)P 286 (246)P 286 (246)P 287 (246)P 287 (246)P 287 (247)P 287 (247)P 287 (248)P 287 (248)P 287~288 (249)P 289 (250)P 289 (250)P 289 (250)P 289 (251)P 289 (251)P 289 (251)P 289 (252)P 289 (252)P 289 (252)P 289 (253)P 289 (253)P 289 (253)P 289 (253)P 289 (254)P 289 (254)P 289 (254)P 289 (255)P 289 (255)P 289 (255)P 289 (255)P 289 (256)P 289 (256)P 289 (256)P 289 (256)P 289 (257)P 289 (257)P 289 (257)P 289 (257)P 289 (257)P 289 (258)P 290 (258)P 290 (258)P 290 (258)P 290 (258)P 290 (259)P 290 (259)P 290 (259)P 290 (259)P 291 (259)P 291 (260)P 291 (260)P 291 (260)第9章用户自己建立数据类型 (260)P 293 (260)P 293 (260)P 294 (261)P 295 (261)P 296 (262)P 298 (262)P 298 (262)P 298 (263)P 299 (263)P 299 (263)P 300 (264)P 300 (264)P 301 (265)P 301~302 (265)P 302 (266)P 303 (266)P 303 (267)P 305 (267)P 305 (267)P 306 (267)P 306 (268)P 306 (268)P 309 (268)P 309 (268)P 310 (268)P 310~311 (269)P 311 (269)P 311 (269)P 311 (270)P 311 (270)P 312 (270)P 313 (270)P 313~314 (271)P 315 (272)P 316 (273)P 317 (274)P 317 (274)P 317 (274)P 318 (275)P 318 (275)P 318 (275)P 318 (275)P 319 (276)P 319 (276)P 320 (276)P 320 (276)P 320 (277)P 320 (277)P 320 (277)P 322 (278)P 322 (278)9.6 使用枚举类型 (279)P 323 (279)P 323 (279)P 323 (279)P 324 (279)P 324~326 (279)P 326 (280)P 326 (281)P 327 (281)P 327 (281)P 327 (281)P 327 (281)P 328 (281)P 329 (282)P 329 (282)P 329 (282)P 329 (282)P 330 (282)第10章对文件的输入输出 (282)P 331 (282)P 331 (283)P 331 (283)P 331 (283)P 331 (283)P 331 (283)P 331 (283)P 332 (283)P 332 (284)P 332 (284)P 332 (284)P 332 (284)P 332 (284)P 332 (284)P 333 (284)P 334 (285)P 334 (285)P 334 (285)P 335 (285)P 335 (285)P 335 (286)P 336 (286)P 336 (286)P 336 (286)P 336 (286)P 336 (286)P 336 (287)P 336 (287)P 337 (287)P 337 (287)P 337 (287)P 337 (287)P 338 (288)P 338 (288)P 338~339 (288)P 340 (289)P 340 (290)P 341 (290)P 341 (290)P 341 (290)P 341 (291)P 341 (291)P 341 (291)P 341 (291)P 341 (291)P 341 (291)P 342 (292)P 342 (292)P 342 (292)P 343 (292)P 343 (292)P 344 (292)P 345~346 (293)P 346 (293)P 346~347 (293)P 347 (294)P 347 (294)P 347~348 (294)P 348 (295)P 348 (295)P 348 (296)P 348 (296)P 348 (296)P 349 (296)P 349 (297)P 350 (297)P 350 (297)P 350 (297)P 350 (297)P 350~351 (297)P 351 (298)P 351 (298)P 351 (298)P 352 (298)P 353 (298)P 354 (299)P 354 (299)P 354 (299)P 354 (299)P 354 (299)第11章常见错误分析 (299)P 355 (299)P 355 (300)P 355 (300)P 356 (300)P 356 (300)P 356 (300)P 357 (300)P 357 (301)P 357 (301)P 357~358 (301)P 358 (301)P 358 (302)P 360 (302)P 361 (302)P 363 (302)P 363 (302)P 363 (302)P 363~364 (303)P 365 (303)P 366 (303)P 367 (304)P 367 (304)P 368 (304)P 368 (305)P 369 (305)P 370 (306)P 372 (306)P 373 (306)P 377 (306)P 377 (306)P 378 (306)P 378~379 (306)P 379 (307)P 379 (307)P 380 (307)P 380 (307)P 380 (307)P 380 (308)P 380 (308)P 380 (308)P 380 (308)P 380 (308)P 381 (308)P 380 (308)P 380 (309)P 381 (309)P 381 (309)P 381 (309)P 381 (309)P 381 (310)P 381 (310)P 382 (310)P 382 (310)P 383 (310)P 383 (310)P 384 (311)P 384 (311)P 384 (311)P 384 (311)P 385 (311)P 386 (311)P 386 (312)P 386 (312)P 386 (312)P 386 (312)P 387 (312)P 387 (312)P 387 (313)P 387 (313)P 387 (313)P 388 (313)P 389 (314)P 389 (314)P 389 (314)P 389 (314)P 389 (314)P 389 (315)P 389 (315)P 389 (315)P 389 (315)参考文献 (315)P 389 (315)《C程序设计(第四版)学习辅导》部分 (316)P14 (316)P14~16 (318)P17 (318)P17 (318)P18 (319)P18 (319)P18 (319)P19 (319)P19 (319)P20~23 (319)P25~26 (320)P29 (322)P30~31 (322)P35 (323)P37~38 (324)P40 (324)P42~43 (325)p43~44 (327)P47~48 (329)P51~52 (330)P52~53 (331)P54 (333)P55~56 (336)P57 (339)p57~58 (340)p61 (342)p61 (342)p61~62 (342)P63 (346)P65~66 (347)P67 (349)P68 (349)P69 (351)p71 (352)P71~72 (353)p72 (354)p72~73 (355)P74 (356)P74~75 (356)P75~76 (358)P76 (359)P76~77 (359)P77 (364)P77~78 (364)P78~79 (366)P79 (367)P80 (369)P81 (370)P82 (372)P82~84 (373)P83 (374)P84 (375)P85 (375)P87 (376)P88~90 (376)P91~92 (379)P92 (382)P93 (383)P94 (385)P94~96 (385)P96 (394)P96~97 (394)P96~97 (395)P99 (397)P99~100 (397)P106~107 (398)P108 (401)P109~110 (401)P112 (403)P112 (404)P117 (404)P117 (404)P117~120 (405)P120~121 (421)P121~122 (421)P122 (430)P122 (430)P122~123 (430)p123 (431)p124 (432)p124 (432)p124~125 (433)P125 (434)P125 (434)P125 (434)126 (435)126 (435)126 (435)126 (435)126 (436)127 (436)128 第九章 (436)128 (437)128 (438)129 (438)129 (438)129~130 (439)130~131 (440)P131 (441)P 131~132 (441)P 133~134 (442)P 134~136 (442)第11章预处理命令 (468)P177 (478)P177 (478)P177 (478)P177 (479)P178 (479)P178 (479)P178 (479)P179 (479)P179 (480)P179 (480)P179 (480)P179 (480)P180 (480)P181 (480)P181 (480)P181 (481)P181 (481)P181 (481)P182 (481)P182 (481)P182 (481)P182 (482)P182 (482)P183 (482)P183 (482)P183 (482)P183 (482)P183 (483)P183 (483)P183 (483)P184 (483)P184 (483)P184 (483)P184~185 (484)P185 (484)P185 (484)P186 (484)P186 (486)P186 (486)P187 (486)P188 (486)P188 (487)P189 (487)P192 (487)P192 (487)P192 (487)P192 (488)P192 (488)第12章位运算 (488)P193 (488)P193 (488)P193 (489)P193 (489)P193 (489)P193 (489)P193 (489)P193 (489)P194 (489)P194 (490)P194 (490)P195 (490)P195 (490)P197 (491)P197 (491)P197 (491)P198 (491)P198 (491)P198 (492)P199 (492)P199 (492)P200 (492)P201 (493)P201 (493)P202 (493)P202 (493)P202 (494)P202 (494)P203 (494)P203 (494)P203 (494)P203 (494)P203 (495)P203 (495)P203 (495)P203 (495)P203 (495)《C程序设计(第三版)》部分 (496)目录 (496)(前言)pIX (496)(前言)pIX (496)(前言)pX (496)(前言) p VII (497)p 2 (497)p 2 (498)p 2 (498)p 3 (498)p 3 (498)p4~p5 (499)P6 (500)P6 (500)P37 (500)P38 (500)P40 (501)P40 (501)P49 (501)P50 (501)P54 (502)P56 (502)P56 (502)P56 (503)P58 (503)P63 (503)P64 (503)P64 (505)P69~71 (505)P72 (506)P73 (506)P73 (506)P85 (506)P91 (507)P94 (507)P95,96 (507)p105 (508)P113 (508)P113 (508)P120 (508)P156 (509)P156 (509)P162~163 (509)P163~164 (509)P171 (510)P179 (510)P193 (510)P194 (511)P204 (511)P229 (511)P245 (511)P255 (512)P257 (512)P258 (513)P265~266 (513)P281~282 (513)P310 (514)P310 (514)P310 (514)P365 (514)P377 (515)题解 (516)P38 (516)P38 (516)P40 (517)P50~51 (517)P50~52 (518)P58~59 (518)P70 (519)P71~72 (520)P73 (521)P74 (523)P76 (523)P79~80 (524)P91~92 (526)P94 (526)P134~135 (527)P135~138 (528)P146 (528)前言p12评:long long complex,bool根本是子虚乌有的。
(完整版)《C语言程序设计》-谭浩强(第四版)教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
第29-30 课时
《C语言程序设计》教案
第31-32 课时
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
第37-38 课时
《C语言程序设计》教案
第39-40 课时
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案。
C语言程序设计(谭浩强)第四版-课后答案解析
第一章程序设计和C语言【第15页】1-5#include <stdio.h>int main ( ){ printf ("**************************\n\n");printf(" Very Good!\n\n");printf ("**************************\n");return 0;}1-6#include <stdio.h>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf("The largest number is %d\n",max);return 0;}第2章算法——程序的灵魂【第36页】暂无答案第3章最简单的C程序设计——顺序程序设计【第82页】3-1#include <stdio.h>#include <math.h>int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <stdio.h>#include <math.h>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5); // 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次 p5=p*pow(1+r0/4,4*5); // 存活期存款。
C语言程序设计谭浩强(第四版)期末复习重点
C语言程序设计谭浩强(第四版)期末复习重点第一章程序设计和C语言1.1.什么是计算机程序程序:一组计算机能识别和执行的指令。
只要让计算机执行这个程序,计算机就会自动地、有条不紊地进行工作..计算机的一切操作都是由程序控制的,离开程序,计算机将一事无成。
1.2什么是计算机语言计算机语言:人和计算机交流信息的、计算机和人都能识别的语言。
计算机语言发展阶段:机器语言(由0和1组成的指令)符号语言(用英文字母和数字表示指令)高级语言(接近于人的自然语言和数学语言)面向过程的语言(非结构化的语言、结构化语言);面向对象的语言1.3C语言的发展及其特点C语言是一种用途广泛、功能强大、使用灵活的过程性编程语言,既可用于编写应用软件,又能用于编写系统软件。
因此C语言问世以后得到迅速推广。
C语言主要特点:语言简洁、紧凑,使用方便、灵活。
(只有37个关键字、9种控制语句;程序书写形式自由,源程序短)运算符丰富。
(34种运算符;把括号、赋值、强制类型转换等都作为运算符处理;表达式类型多样化)数据类型丰富。
(包括:整型、浮点型、字符型、数组类型、指针类型、结构体类型、共用体类型;C99又扩充了复数浮点类型、超长整型、布尔类型;指针类型数据,能用来实现各种复杂的数据结构的运算。
)具有结构化的控制语句。
(如ifele语句、while语句、dowhile语句、witch语句、for语句用函数作为程序的模块单位,便于实现程序的模块化;C语言是完全模块化和结构化的语言)语法限制不太严格,程序设计自由度大。
(对数组下标越界不做检查;对变量的类型使用比较灵活,例如,整型量与字符型数据可以通用;C语言允许程序编写者有较大的自由度,因此放宽了语法检查)允许直接访问物理地址,能进行位操作,可以直接对硬件进行操作。
(C语言具有高级语言的功能和低级语言的许多功能,可用来编写系统软件;这种双重性,使它既是成功的系统描述语言,又是通用的程序设计语言)用C语言编写的程序可移植性好。
C程序设计(第四版)(谭浩强)完整版 课后习题答案
C程序设计(第四版)(谭浩强)第一章课后习题答案P006 1.1 向屏幕输出文字.#include<stdio.h>//预编译. 代码均调试成功,若有失误大多不是代码问题.自已找找.int main(){printf("Welcome to \n");return 0; //与int main对应,为了程序可移植性,建议全用int main + return 0;.}P008 1.2 求两个数的和.#include<stdio.h>int main(){int a,b,sum;a=5;b=4;sum=a+b;printf("The sum is %d .\n",sum);return 0;}P008 1.3 调用函数比较两个数的大小.#include<stdio.h>int main(){int max(int x,int y); //被调用函数在主函数后面,用前先声明.int a,b,c;scanf("%d,%d",&a,&b); //输入时要按格式来,此处的逗号,用空格会发生错误.c=max(a,b); //a,b作为实参传入被调用函数中.printf("The max is %d .\n",c);return 0;}int max(int x,int y) //定义了两个形参.{int z; //z属于局部变量,可与主函数中相同名字.if (x>y)z=x;elsez=y;return(z); //z作为整个程序的出口值,赋给主函数中的c.}P015 0.6 三个数的大小.(数字0表示课后练习题)#include<stdio.h>int main(){int a,b,c,d; //d是用于存储最大值的.int max(int x , int y , int z); //测试可知,在VS2008中,可以不预先声明.printf("Please input 3 numbers :\n");scanf("%d %d %d",&a,&b,&c);d=max(a,b,c); //调用函数中有三个形参,这里需要传入三个实参,才可运算.printf("The max is :%d .\n",d); // d可以换成max(a,b,c).}int max(int x , int y , int z){int m;if (x>y && x>z) //求三者之大的一种方法.m=x;if (y>x && y>z)m=y;if (z>y && z>x)m=z;return (m); //返回值m给主函数中的d.}C程序设计(第四版)(谭浩强)第2章课后习题答案算法——程序的灵魂#include<stdio.h>int main(){int i,s=1; //在执行数值操作前一定要先有个初值.for(i=1;i<6;i++) //这里是到6.{s=s*i; //相乘}printf("The sum is %d .\n",s);return 0;}#include<stdio.h> //作出要求:换成1到11间奇数相乘.int main(){int i,s=1; //在执行数值操作前一定要先有个初值.for(i=1;i<12;i++) //这里是到,但题目要求的是取单数.也可以是i=i+2{if(i%2!=0) //i对取模,值为非为奇数;为则为偶数.s=s*i;elsecontinue; //跳过这个for循环的这一次,执行下一次.}printf("The sum is %d .\n",s);return 0;}P019 2.2 按要求输出80分以上的学生信息.暂时没法做.P019 2.3 判断2000-2500年中的闰年,并输出.年的概念是地球围绕太阳一周的时间(所谓公转周期)称为一年,这个周期是相当稳定的,很长时间也不会变动1秒,但是真正的一年是365.2423天(目前)。
谭浩强《C程序设计》习题(算法——程序的灵魂)【圣才出品】
圣才电子书 十万种考研考证电子书、题库视频学习平台
才能执行。答案选择 C 选项。
3.以下叙述中错误的是( )。 A.一个 C 程序可以包含多个丌同名的函数 B.一个 C 程序叧能有一个主函数 C.C 程序在书写时,有严格的缩迚要求,否则丌能编译通过 D.C 程序的主函数必须用 main 作为函数名 【答案】C 【解析】一个 C 程序有且叧有一个主函数 main。一个 C 程序可以包含多个丌同名字的 子函数。C 程序在书写时没有严格的缩迚要求。答案选择 C 选项。
【解析】在 C 程序中,main 函数的位置可以仸意,而且丌管 main 函数位置怎么变化, 程序都会以 main 函数作为入口,选项 B 错误;每个 C 程序(而丌是每个 C 程序文件)必 须有且叧能有一个 main 函数,选项 A 错误;main 函数丌能被其他函数调用,选项 C 错误; 函数的定义丌能放在另一个函数体内,但是声明可以,答案选择 D 选项。
5.下列叙述中错误的是( )。 A.C 程序可以由一个戒多个函数组成
2 / 69
圣才电子书 十万种考研考证电子书、题库视频学习平台
B.C 程序可以由多个程序文件组成 C.一个 C 语言程序叧能实现一种算法 D.一个 C 函数可以单独作为一个 C 程序文件存在 【答案】C 【解析】一个 C 程序可以有一个戒多个程序文件,也可以有一个戒多个函数,所以一 个 C 语言程序可以实现多种算法,答案选择 C 选项。
4.以下叙述中正确的是( )。 A.C 语言规定必须用 main 作为主函数名,程序将从此开始执行 B.可以在程序中由用户指定仸意一个函数作为主函数,程序将从此开始执行 C.C 语言程序将从源程序中第一个函数开始执行 D.main 的各种大小写拼写形式都可以作为主函数名,如:MAIN,Main 等 【答案】A 【解析】用户丌能指定某函数为主函数,C 语言规定,程序从 main 函数开始执行,从 main 函数退出,C 语言函数名区别大小写。答案选择 A 选项。
C语言程序设计第2章算法---程序的灵魂
否
输出 是
year%400为0 否year闰年输出year 闰年
输出year 非闰年
输出
year 非闰年
2020/7/9
苏州大学计算机科学与技术学院
16
第2章 小结
➢关键知识点
算法: 了解和积累自己的算法知识 算法的描述形式
传统流程图: 掌握 N-S流程图: 掌握
2020/7/9
苏州大学计算机科学与技术学院
闰年” ,然后转到S6 S5: 其他情况输出year的值和“不是闰年” S6: 停止
2020/7/9
苏州大学计算机科学与技术学院
10
传统流程图
➢流程图是用一些图框来表示各种操作 ➢用图形表示算法,直观形象,易于理解
起止框 输入输出框 判断框 处理框
流程线
连接点
注释框
2020/7/9
苏州大学计算机科学与技术学院
➢算法的描述方法有:
自然语言 传统流程图 结构化流程图 伪代码 ……
2020/7/9
苏州大学计算机科学与技术学院
8
算法描述方法
➢问题:
判定2012年是否为闰年,并将结果输出
➢闰年的条件:
能被4整除,但不能被100整除的年份都是闰年 ,如2008、2012、2048年
能被400整除的年份是闰年,如2000年 不符合这两个条件的年份不是闰年
2020/7/9
苏州大学计算机科学与技术学院
9
算法的自然语言描述
➢ 算法的自然语言描述如下:
S1:2000year S2:若year不能被4整除,则输出year 的值和“不
是闰年”。然后转到S6 S3:若year能被4整除,不能被100整除,则输出
C程序设计 第2章 算法——程序的灵魂
开始 1→sum 2→deno 1→sign (-1)*sign→sign
sign*(1/deno) →term
sun+term→sum deno+1→deno N deno>100 Y
1→sum 2→deno 1→sign (-1)*sign→sign sign*1/deno→term sum+term→sum deno+1→deno 直到deno>100 输出sum
N
i>50 Y 1→i
Y
输出ni、gi
gi≥80
N
N
i>50 Y 结束 N
i+1→i
i>50 Y 结束
1→i 1→i
是
gi≥80
否
输入ni、gi 1
输出ni和gi
i+1 →i 直到i>5
图2.30 N—S图
gi≥80
否
输出ni和gi
i+1 →i 直到i>5
六、例2.3 判定2000—2500年中的每 一年是否为闰年,并将结果输出
① year不能 被4整除 ③year被100 整除,又能 被400整除 闰年 非闰年
②year被4整除, 但不能被100整除 闰年
④其他 非闰年
开始 2000→year year不能被 4整除 Y
N
year不能被 100整除 Y 输出year “是闰年”
N
输出year “不是闰年” Y year不能被 400整除 N
输出sum
结束
用伪代码表示的算法: begin 1→sum 2→deno 1→sign while deno≤100 { (-1)*sign →sign sign*1/deno →term sum+term →sum deno+1 →deno } print sum end
谭浩强 C语言程序设计教程(由曾怡视频修改) 第2章 程序设计的灵魂-算法
什么是程序设计语言?
在程序设计过程中,用于编写程序的语言。
编写C语言程序的大体步骤:
问题定义 总体/详细设计 编程 运行
一个算法应当具有五大特性:
1、有穷性:算法包含的操作步骤有限 2、确定性:
算法每一步的操作步骤都是确定的,不能模棱两可
3、有零个或多个输入:
在执行算法时从外界取得必要的信息
4、有一个或多个输出:即算法的求解 5、有效性:算法中每一个步骤都应当能有效执行
…
…
2)选择 结构框图
若条件P成立,则执行A操作; 否则执行B操作。
成立 A操作
条件P
不成立
B操作
if ( x > y ) z=x; else z = y;
顺序结构
选择结构
3)循环 结构框图
当型(While型)循环结构
直到型(Until型)循环 结构
2、三种基本结构的共同特点:
单入口单出口 结构内的每一部分都有机会被执行 不存在“死循环” 3、结构化程序设计的优点:
累 试 法 枚 举 法
细化
细化
cocks=0 当cocks≤19时 {hens=0 当hens ≤33时 {chicks=100-cocks-hens; 如果( 5*cocks+3*hens+chicks/3=100)则输出; hens加1; } cocks加1 }
2)用计算机语言写出程序 /*文件名:ex020030*/ #include<stdio.h> int main(void) { int cocks,hens,chicks; cocks=0; while(cocks<=19) { hens=0; while(hens<=33) { chicks=100-cocks-hens; if(5*cocks+3*hens+chicks/3==100 ) printf("cocks=%d,hens=%d,chicks=%d\n",cocks,hens,chicks); hens++; } cocks++; } return 0; } 3)调试程序
(完整版)《C语言程序设计》-谭浩强(第四版)教案
课程名称
C语言程序设计
教材
C语言程序设计(第四版) 作者:谭浩强 清华大学出版社
考核方式
考试课程.
总成绩:课堂参与占10%;试验报告占20%;期末考试占70%(闭卷考试)。
教
学
基
本
目
的
和
要
求
C语言是近年来国内外得到迅速推广使用的一种计算机语言。C语言程序设计课程是计算机专业和信息管理专业的核心专业基础课,它功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的优点。既适用于应用软件编写,又适用于系统软件的编写.在现代的工业机器人的众多语言中,大多编程风格以C语言非常类似,学生学好C语言,对将来的工作中,从事工业机器人现场编程是非常有帮助的。
课程的教学目标
本课程的教学目标是:通过理论和实践教学,使学生较好地掌握C语言各方面的知识,掌握基本的程序设计过程和技巧,具备初步的高级语言程序设计能力,并能熟练应用VC++6。0集成环境进行C语言的编写、编译与调试,能应用C语言解决一般编程问题的水平。
教
学
重
点
和
难
点
一、程序设计和C语言
重点:计算机程序、计算机语言、C语言编译软件的安装、最简单的C语言程序
课后自我
总结分析
备注
《C语言程序设计》教案
第3-4课时
授课内容
第1章 VC++6。0、VS2015的安装和使用
教学目的
和要求
了解C语言常用的编译器;掌握VC++6。0、VS2015的下载与安装;
掌握VC++6.0、VS2015的使用
(完整版)《C语言程序设计》课后习题答案(第四版)谭浩强
第1章程序设计和C语言11.1什么是计算机程序11.2什么是计算机语言11.3C语言的发展及其特点31.4最简单的C语言程序51.4.1最简单的C语言程序举例61.4.2C语言程序的结构101.5运行C程序的步骤与方法121.6程序设计的任务141-5 #include <stdio.h>int main ( ){ printf ("**************************\n\n");printf(" Very Good!\n\n");printf ("**************************\n");return 0;}1-6#include <stdio.h>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf("The largest number is %d\n",max); return 0;}第2章算法——程序的灵魂162.1什么是算法162.2简单的算法举例172.3算法的特性212.4怎样表示一个算法222.4.1用自然语言表示算法222.4.2用流程图表示算法222.4.3三种基本结构和改进的流程图262.4.4用N S流程图表示算法282.4.5用伪代码表示算法312.4.6用计算机语言表示算法322.5结构化程序设计方法34习题36第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例373.2数据的表现形式及其运算393.2.1常量和变量393.2.2数据类型423.2.3整型数据443.2.4字符型数据473.2.5浮点型数据493.2.6怎样确定常量的类型513.2.7运算符和表达式523.3C语句573.3.1C语句的作用和分类573.3.2最基本的语句——赋值语句593.4数据的输入输出653.4.1输入输出举例653.4.2有关数据输入输出的概念673.4.3用printf函数输出数据683.4.4用scanf函数输入数据753.4.5字符数据的输入输出78习题823-1 #include <stdio.h>#include <math.h>int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <stdio.h>#include <math.h>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5); // 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
开始
1sum 2deno 1sign (-1)*signsign sign*(1/deno)term sum+termsum deno+1deno deno>100 Y 输出sum 结束
N
例2.10 例2.5判断素数的算法用流程图表 示。对一个大于或等于3的正整数,判断 它是不是一个素数。
1t
2i t*it i+1i N
如果需要将最后结果 输出:
i>5
Y
结束
开始
例2.6 将例2.1的算 法用流程图表示。 求1×2×3×4×5
1t
2i t*it i+1i N
如果需要将最后结果 输出:
i>5
Y 输出t
结束
例2.7 例2.2的算法用流程图表示。有50 个学生,要求将成绩在80分以上的学生的 学号和成绩输出。
一个程序除了算法和数据结构这主要要 素外,还应当采用结构化程序设计方法 进行程序设计,并且用某一种计算机语 言表示
算法、数据结构、程序设计方法和语言 工具是一个程序设计人员应具备的知识
算法是解决“做什么”和“怎么做”的 问题
程序中的操作语句,是算法的体现
不了解算法就谈不上程序设计
2.1 什么是算法
第2章 算法---程序的灵魂
一个程序主要包括以下两方面的信息:
(1) 对数据的描述。在程序中要指定用到哪些 数据以及这些数据的类型和数据的组织形式 这就是数据结构(data structure)
(2) 对操作的描述。即要求计算机进行操作的 步骤
也就是算法(algorithm)
数据是操作的对象 操作的目的是对数据进行加工处理,以 得到期望的结果 著名计算机科学家沃思(Nikiklaus Wirth)提出一个公式: 算法 + 数据结构 = 程序
(1) 有穷性。一个算法应包含有限的操 作步骤,而不能是无限的。 (2) 确定性。算法中的每一个步骤都应 当是确定的,而不应当是含糊的、模棱 两可的。
2.3算法的特性
一个有效算法应该具有以下特点:
(3) 有零个或多个输入。所谓输入是指在执 行算法时需要从外界取得必要的信息。 (4) 有一个或多个输出。算法的目的是为了 求解,“解” 就是输出。
S4:如果i≤50,返回到步骤S2,继续执行, 否则,算法结束
例2.3 判定2000—2500年中的每一年是 否闰年,并将结果输出。 闰年的条件:
(1)能被4整除,但不能被100整除的年份都是 闰年,如2008、2012、2048年
(2)能被400整除的年份是闰年,如2000年
不符合这两个条件的年份不是闰年
例如2009、2100年
设year为被检测的年份。算法表示如下: S1:2000year S2:若year不能被4整除,则输出year 的 值和“不是闰年”。然后转到S6 S3:若year能被4整除,不能被100整除, 则输出year的值和“是闰年”。然后转到S6 S4:若year能被400整除,则输出year的 值和“是闰年” ,然后转到S6 S5: 其他情况输出year的值和“不是闰年” S6:year+1year S7:当year≤2500时,转S2,否则停止
1 1 1 1 1 例2.4 求 1 2 3 4 99 100
S1:sign=1 S2:sum=1 1 S3:deno=2 S4:sign=(-1)*sign 1/3 S5:term=sign*(1/deno) 1-1/2+1/3 S6:sum=sum+term 4 满足,返回S4 S7:deno=deno+1 S8:若deno≤100返回S4;否则算法结束 sign—当前项符号 term—当前项的值 sum—当前各项的和 deno—当前项分母
2.三种基本结构
(2) 选择结构
Y A
p N
Y B A
p
N
2.4.3 三种基本结构和改进的流程图 输出1,2,3,4,5
2.三种基本结构
(3) 循环结构
① 当型循环结构 p1 Y A N
0x x<5 Y 输出x的值
N
x+1x
2.4.3 三种基本结构和改进的流程图 输出1,2,3,4,5
2.三种基本结构
2.4.3 三种基本结构和改进的流程图
1.传统流程图的弊端
传统的流程图用流程线指出各框的执行顺 序,对流程线的使用没有严格限制 使用者可以毫不受限制地使流程随意地转 来转去,使人难以理解算法的逻辑
2.4.3 三种基本结构和改进的流程图
2.三种基本结构
(1) 顺序结构
A B
2.4.3 三种基本结构和改进的流程图
1 1 1 1 1 例2.4 求 1 2 3 4 99 100
S1:sign=1 S2:sum=1 -1 S3:deno=2 S4:sign=(-1)*sign -1/2 S5:term=sign*(1/deno) 1-1/2 S6:sum=sum+term 3 满足,返回S4 S7:deno=deno+1 S8:若deno≤100返回S4;否则算法结束 sign—当前项符号 term—当前项的值 sum—当前各项的和 deno—当前项分母
如果包括输入数据部分
开始 1i 输入ni、gi Y
开始 1i
gi≧80
N
输出ni、gi i+1i N
i+1i
N
i>50
i>50
Y 结束
①
Y
如果包括输入数据部分
开始 1i 输入ni、gi Y
①
1i
gi≧80
N
输出ni、gi i+1i N
i+1i
N
i>50
i>50
Y 结束
①
Y
例2.8 例2.3判定闰年的算法用流程图表 示。判定2000—2500年中的每一年是否 闰年,将结果输出。
year不能 被4整除 非闰年 闰年
year被100 整除,又能 被400整除
year被4整 除,但不能 被100整除 闰年 逐渐缩小判 断的范围
其他 非闰年
1 1 1 1 1 例2.4 求 1 2 3 4 99 100
规律:
①第1项的分子分母都是1 ② 第2项的分母是2,以后每一项的分母子都是 前一项的分母加1 ③ 笫2项前的运算符为“-”,后一项前面的运 算符都与前一项前的运算符相反
1 1 1 1 1 例2.4 求 1 2 3 4 99 100
S1:sign=1 99次循环后sum的值 就是所要求的结果 S2:sum=1 S3:deno=2 S4:sign=(-1)*sign S5:term=sign*(1/deno) S6:sum=sum+term S7:deno=deno用流程图表示算法 N
起止框
输入输出框
判断框
处理框
流程线
连接点
注释框
①
2.4.2用流程图表示算法
③
③
② 流程图是用一些图框来表示各种操作
用图形表示算法,直观形象,易于理解
③
位置不够
① 起止框 输入输出框 ②
判断框 防止交叉 处理框
流程线
连接点
注释框
开始
例2.6 将例2.1的算 法用流程图表示。 求1×2×3×4×5
(3) 循环结构
② 直到型循环结构 x+1x
A N p2 Y 输出x的值
0x
N
x≧5
Y
以上三种基本结构,有以下共同特点:
(1) 只有一个入口 (2) 只有一个出口 一个判断框有两个出口 一个选择结构只有一个出口 (3) 结构内的每一部分都有机会被执行到。也 就是说,对每一个框来说,都应当有一条从入 口到出口的路径通过它 (4) 结构内不存在“死循环”
输入3个数
求3个数的 黑箱子 最大数
3个数中最大数
2.4怎样表示一个算法
常用的方法有:
自然语言 传统流程图 结构化流程图 伪代码 ……
2.4怎样表示一个算法
2.4.1 用自然语言表示算法
2.4.2 用流程图表示算法
2.4.3 三种基本结构和改进的流程图
2.4.4 用N-S流程图表示算法 2.4.5 用伪代码表示算法 2.4.6 用计算机语言表示算法
例2.5 给出一个大于或等于3的正整数,判 断它是不是一个素数。 所谓素数(prime),是指除了1和该数本 身之外,不能被其他任何整数整除的数 例如,13是素数,因为它不能被2,3,4 ,…,12整除。
判断一个数n(n≥3)是否素数:将n作为 被除数,将2到(n-1)各个整数先后作为除 数,如果都不能被整除,则n为素数
2.4.1 用自然语言表示算法
2.2节介绍的算法是用自然语言表示的
用自然语言表示通俗易懂,但文字冗长,容 易出现歧义性 用自然语言描述包含分支和循环的算法,不 很方便 除了很简单的问题外,一般不用自然语言
一个入口
x≧0 两个出口 …… 流程图是用一些图框来表示各种操作 …… 用图形表示算法,直观形象,易于理解
开始
输入n 2i n%ir r=0 N i+1i N Y 输出n是素数
i> n Y 输出n是素数
结束
通过以上几个例子可以看出流程图是表示 算法的较好的工具 一个流程图包括以下几部分:
(1) 表示相应操作的框 (2) 带箭头的流程线 (3) 框内外必要的文字说明
流程线不要忘记画箭头,否则难以判定各 框的执行次序
S1:输入n的值 S2:i=2 (i作为除数) S3:n被i除,得余数r S4:如果r=0,表示n能被i整除,则输出n“ 可改为n/2 n 不是素数”,算法结束;否则执行S5 S5:i+1i S6:如果i≤n-1,返回S3;否则输出n “是素 数”,然后结束。