1.什么是程序和算法

公式:程序=算法+数据结构
程序的三种基本结构:顺序、选择、循环
1.算法(Algorithm)
在C语言中,算法是通过一系列语句(如循环、条件判断、赋值等)来定义的,这些语句告诉计算机如何执行特定的任务或解决特定的问题。
算法的设计需要考虑到问题的复杂性、数据的处理方式以及所需的计算资源等因素。
C语言提供了丰富的控制结构(如if-else、for、while等)和运算符,使得程序员能够灵活地实现各种算法。

2.数据结构(Data Structure)
C语言本身并不直接提供高级的数据结构(如C++中的STL容器或Java中的集合类),但它允许程序员通过结构体(struct)、联合体(union)、枚举(enum)以及指针等机制来定义自己的数据结构。
这些自定义的数据结构可以模拟出数组、链表、栈、队列、树、图等常见的数据结构。
通过合理地使用这些数据结构,C语言程序可以高效地管理和处理数据。

3.程序=算法+数据结构
在C语言中,一个完整的程序通常是由多个算法和数据结构组成的。
算法定义了解决问题的步骤和逻辑,而数据结构则提供了存储和操作数据的方式。
程序员需要根据问题的需求,选择合适的算法和数据结构,并将它们组合在一起,以实现程序的功能。
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.

2.算法的特性

有效的算法具有的特点:
1. 有穷性
定义:算法必须在有限步骤内完成,即算法不能陷入无限循环,而应在有限次迭代后得出结果。

2. 确定性
定义:算法中的每一步都是明确无误的,不存在二义性。

3.有0个或多个输入
定义:所谓输入是指在执行算法时需要从外界取得必要的信息。 

4.有1个或多个输出
定义:算法的目的就是为了求解,“解”就是输出,无输出的算法没有任何意义

5. 有效性
定义:算法中的每一个步骤都应当有效的执行,并且得到确定的结果
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.

3.算法的表示方法

1. 自然语言
定义:使用人类日常使用的语言(如中文、英文等)来描述算法。
特点:易于理解,但可能不够精确和规范,容易出现歧义。
应用场景:适用于算法描述的初步阶段或向非专业人员解释算法时使用。

2. 流程图
定义:用规定的图形符号来描述算法,包括起止框、处理框、输入输出框、判断框、连接点等。
特点:直观、清晰,能够很好地表示算法的逻辑结构和控制流程。但在描述大型复杂算法时,流程图的流向线较多,可能影响对算法的阅读和理解。
应用场景:适用于算法设计的初级阶段,帮助设计者理清思路,也常用于教学演示。

3. N-S图
定义:又称N-S结构化流程图、盒图,它将全部算法写在一个矩形框内,在该框内可包含它的从属框,用于表示算法的各种处理步骤和三种基本结构(顺序结构、选择结构、循环结构)。
特点:去除了流程方向线,使得算法的描述更加紧凑和易于理解。
应用场景:适用于算法设计的中高级阶段,特别是在需要清晰表达算法结构时。

4. 伪代码
定义:用介于自然语言与计算机语言之间的文字和符号来描述算法。它无固定的、严格的语法规则,书写格式自由,且易于修改。
特点:简洁、通用,能够很好地表达算法的逻辑结构和处理步骤,同时也有利于算法的编程实现。
应用场景:广泛用于算法设计、编程教学和科研论文中。

5. 程序设计语言(如C语言)
定义:直接使用C语言(或其他程序设计语言)编写的程序来实现算法。
特点:精确、规范,能够直接在计算机上执行。但相对于其他表示方法,其编写难度和复杂度较高。
应用场景:算法的最终实现阶段,即将算法转化为可执行的计算机程序。
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.