这一部分学习的是算法,在我看来算法是一个非常重要的东西,他可以帮助我们在写程序的时候理清思路,如果我们熟悉算法,那么我们在那道题目的时候就会迅速的把握住题目的核心,找到求解问题的方法和步骤。在算法中,有四种方式可以使用,我最常用的是伪代码。

简单的算法举例

1.求1*2*3*4*5

算法步骤:

S1:先求1*2,得到结果2

S2:将步骤1得到的乘积2再乘以3,得到结果6

S3:将6再乘以4,得24

S4:将24再乘以5,得120

———————————————————————————————————————————

算法步骤:

S1:令p=1,或写成1=>p(表示将1存放在变量p中)

S2:令i=2,或写成2=>i(表示将2存放在变量i中)

S3:使p和i相乘,乘积仍存放在变量p中,可表示为p*i=>p

S4:使i的值增加1,即i+1=>i

S5:如果i不大于5,返回重新执行S3及其后的步骤S4和S5;否则算法结束。最后得到p的值就是5!的值

———————————————————————————————————————————

以上方式属于伪代码的表示方式一种,用这种方式表示的算法具有一般性,通用性和灵活性

2.有50个学生,要求输出成绩在80以上的学生的学号和成绩

变量说明:

n:表示学生学号

下标i:表示第几个学生

n1:表示第一个学生的学号

ni:表示第i个学生的学号

g:表示学生的成绩

g1:表示第一个学生的成绩

gi:表示第i个学生的成绩

———————————————————————————————————————————

算法步骤:

S1:1=>i

S2:如果gi≥80,则输出ni和gi,否则不输出

S3:i+1=>i

S4:如果i≤50,返回到S2继续执行,否则,算法结束

3.判定2000-2500年中的每一年是否为闰年,并将结果输出

判定条件:

如果year不能被4整除,则为非闰年

如果year能被4整除但是不能被100整除,则为闰年

如果year能被100整除,同时可以被4整除,则为闰年

如果year为其他条件,则为非闰年

以上是自然语言叙述,通过自然语言的叙述可以帮助我们理解题目并写出伪代码或者画出流程图进一步向程序转化,优点是容易理解,缺点是容易出现二义性,并且通常很冗长

———————————————————————————————————————————

算法步骤:

S1:2000=>year

S2:如果year不能被4整除,则输出year的值和“不是闰年”。然后转到S6,检查下一年份

S3:如果year能被4整除但是不能被100整除,则输出year的值和“是闰年”。然后转到S6

S4:如果year能被:400整除则输出year的值和“是闰年”,然后转到S6

S5:输出year的值和不是闰年

S6:year+1=>year

S7:当year≤2500时,转S2继续执行,否则算法停止

4.求1-1/2+1/3-1/4+……+1/99-1/100

变量说明:

sign:表示当前项的数值符号

term:表示当前项的值

sum:表示当前项的累加和

deno:表示当前项的分母

———————————————————————————————————————————

算法步骤:

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,否则算法结束

5.给出一个大于或等于3的正整数,判断它是不是一个素数

解题思路:

所谓素数(prime),是指除了1和该数本身之外,不能被任何整数整除的数

算法步骤:

S1:输入n的值

S2:i=2(i作为除数)

S3:n被i除,得余数r

S4:如果r=0,表示n能被i整除,则输出n“不是素数”,算法结束,否则执行S5

S5:i+1=>i

S6:如果i≤n-1,返回S3;否则输出n的值以及“是素数”,然后结束

算法的特性

有穷性

一个算法应包含有限的操作步骤,而不能是无限的

确定性

算法中的每一个步骤都应该是确定的,而不应当是含糊的、模棱两可的

有零个或多个输入

所谓输入是指在执行算法时需要从外界取得必要的信息

有一个或多个输出

算法的目的是为了求解,“解”就是输出

有效性

算法中的每一个步骤都应当能有效地执行,并得到确定的结果

算法的表示

自然语言,传统流程图,结构化流程图,伪代码

算法的流程图表示举例

6.将1的算法求1*2*3*4*5用流程图表示

7.将2的算法有50个学生,要求输出成绩在80以上的学生的学号和成绩用流程图表示

8.将3判定闰年的算法用流程图表示

9.将4的算法求1-1/2+1/3-1/4+……+1/99-1/100用流程图表示

10.将5判断素数的算法用流程图表示

通过上面的举例我们可以发现如果使用流程图,那么程序每一步的运行都会显得非常直观

传统流程图的弊端

传统流程图用流程线指出各框的执行顺序,对流程线的使用没有严格限制。因此使用者可以不受限制地使流程图随意地转来转去,使流程图变得毫无规律,阅读时要花很大力气去追踪流程,使人难以理解算法的逻辑。

三种基本结构及其特点

三种基本结构:

从左到右分别是顺序结构,选择结构和循环结构

特点:

只有一个入口,只有一个出口,结构内每一部分都有机会被执行到,结构内不存在死循环

用N-S流程图表示算法

用伪代码表示算法

伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。每一行或每几行表示一个基本操作。因为伪代码不用图形符号,因此书写方便,格式紧凑,修改方便,容易看懂,也便于向计算机语言算法(即程序)过渡。

算法的伪代码举例

16.求5!

begin(算法开始)i=>p2=>iwhile i≤5{p*i=>pi+1=>i}print p
end(算法结束)

7.将9的算法求1-1/2+1/3-1/4+……+1/99-1/100用伪代码表示

begin(算法开始)1=>sign1=>sum2=>denowhile deno≤100{           (-1)*sign=>signtsign*(1/deno)=>termsum+term=>sumdeno+1=>deno}print sum
end(算法结束)

用计算机语言表示算法

18.将16的算法求5!用C语言表示

#include <stdio.h>
int main(){int i,p;p=1;i=2;while(i<=5){p=p*i;i=i+1;}printf("%d\n",p);return 0;
}

19.将17的算法求1-1/2+1/3-1/4+……+1/99-1/100用C表示

#include <stido.h>
int main(){int sign=1;double deno=2.0,sum=1.0,term;while(deno<=100){sign=-sign;term=sign/deno;sum=sum+term;deno=deno+1;}printf("%f\n",sum);return 0;
}

结构化程序设计方法

自顶而下,逐步细化,模块化设计,结构化编码

为了有效的利用计算机解决实际问题,在保证算法的前提下,还要考虑时间和空间的效率,一个好的算法应该具有较短的执行时间并占用较少的辅助存储空间。算法的复杂性是对算法所需时空资源的一种度量,当给定问题有多种算法的时候,设计和选择出复杂性尽可能低的算法是一个重要准则。

谭浩强 《C程序设计》(第五版)第二章相关推荐

  1. 谭浩强C程序设计第五版课后答案视频+代码讲解完整版(合集)持续跟新中~~~

    这里是一个谭浩强C程序设计第五版课后答案的合集 请看下面: 工欲善其事必先利其器 写C语言代码,首先得有安装一个趁手的工具,那么VS系列是最合适不过的了 这里是安装教程: VS2013安装教程和使用 ...

  2. C语言的学习第一天——谭浩强C程序设计第五版

    学习了谭浩强C程序设计第一章 编译器:VS2019 鹏哥C语言:c语言编程 C语言入门 c语言(C语言程序设计教程 c语言视频教程 c语言零基础入门教程 学习c语言 c语言视频教程 c语音 C语言教程 ...

  3. matlab将单词China译成密码,要将china译成密码 C++源代码 (谭浩强c++程序设计第3版答案)...

    要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母. 例如,字母"A"后面第4个字母是"E", "E ...

  4. 谭浩强C程序设计第四版答案

    只给出一些需要编程的答案,用的是谭浩强老师的书: 本文持续更新中- C程序设计课本中的一些笔记见:C程序设计笔记 我的目录 只给出一些需要编程的答案,用的是谭浩强老师的书: 本文持续更新中... C程 ...

  5. c语言程序灵魂编译后,谭浩强C程序设计第4版精讲视频课程

    谭浩强<C程序设计>(第4版)网授精讲班[教材精讲+考研真题串讲] 本课程由资深辅导教师马丽梅老师讲授,全面讲解教材的重点.难点.考点,教会学员理解并掌握该教材中的基本概念.基本原理和基本 ...

  6. C++程序设计(第二版)谭浩强----程序题课后习题答案第二章

    3. #include<iostream> using namespace std; int main() {char c1 = 'a', c2 = 'b', c3 = 'c', c4 = ...

  7. c++第九次作业(谭浩强c++程序设计第三版P400习题)

    1.改写为多文件程序???????????????? 2.比较函数重载和虚函数在概念和使用方式上的区别 1)概念上: 1>函数重载在同一个类中,虚函数是父类与子类 2>函数重载时重载的函数 ...

  8. 谭浩强C语言第四版第九章课后习题7--9题(建立,输出,删除,插入链表处理)...

    1 #include<stdio.h> 2 #include<stdlib.h> 3 #define N sizeof(link) 4 typedef struct stu 5 ...

  9. 谭浩强C程序设计(第五版)P82 习题六(求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积)——中职

    谭浩强C程序设计(第五版)P82 习题六 设圆半径r = 1.5,圆柱高h = 3,求圆周长.圆面积.圆球表面积.圆球体积.圆柱体积.用scanf输入数据,输出计算结果,输出时要求文字说明,取 小数点 ...

  10. 在c语言中,字符串topt65的长度是,谭浩强c__程序设计第13章.ppt

    谭浩强c__程序设计第13章 第13章 输入输出流 13.1 C++的输入和输出 13.2 标准输出流 13.3 标准输入流 13.4 文件操作与文件流 13.5 字符串流 13.1 C++的输入和输 ...

最新文章

  1. BZOJ 2780: [Spoj]8093 Sevenk Love Oimaster( 后缀数组 + 二分 + RMQ + 树状数组 )
  2. python list 深复制_Python中list的复制及深拷贝与浅拷贝探究
  3. IoT与大数据 如何激发数字营销最大潜能?
  4. 一个java中HashMap和HashSet的应用实例
  5. 大于2T硬盘通过UEFI启动+GPT分区表安装Server 2008 R2
  6. 雅虎扫描用户电子邮件,欧盟不干了:侵犯隐私!
  7. Spring框架利用PropertyPlaceholderConfigurer初始化加载多properties文件
  8. MyCat分片规则之字符串hash解析算法分片
  9. sql 按名称首字母拼音排序
  10. python ttk.notebook_python – 删除Ttk Notebook标签虚线
  11. html实现下拉跳转
  12. 渲染吃显卡还是CPU,如何高效3D渲染?
  13. thinkphp6 验证码总是提示不正确
  14. adc 采样时间 采样周期数 采样频率计算(以stm32为例)
  15. Web应用程序系统的多用户权限控制设计及实现-首页模块【5】
  16. 金蝶K3采购暂估案例教程3差额调整
  17. 科技百咖 | 天威诚信:韶光与共,不负前路
  18. 展讯平台 LCD(Mipi)移植步骤及问题归纳
  19. Features and Characteristics
  20. python应用程序无法正常启动0xc00007b_详细教您解决应用程序无法正常启动(0xc000007b)...

热门文章

  1. 我实现的第一个算法----归并排序
  2. 3D Multi-Object Tracking: A Baseline and New Evaluation Metrics论文阅读记录
  3. wdr7300千兆版和百兆版区别_tl-wdr7300是百兆还是千兆
  4. 带有详细书签的IT电子书大全
  5. hdu 1276 士兵队列训练问题 (详解)
  6. 激光测距仪的发展与介绍——TFN 10K KI 双目远距离激光测距仪
  7. 牛客小白月赛25 C白魔法师 (bfs | 并查集)
  8. 软考高项——【项目进度管理】
  9. Quill编辑器实现图片上传功能
  10. mkdir: Permission denied: user=root, access=WRITE, inode=/lcy/test5.txt:hdfs:hdfs:drwxr-xr-x