C语言与程序概述
C语言是现在世界上应用最广泛、最受欢迎的计算机语言之一。C语言已经经历了30多年的发展,并且仍在继续进步。
1.1 C语言的历史沿革
本节将介绍C语言的诞生、标准化过程及重要特点:
- C语言的诞生 :A语言——B语言——C语言;
- C语言的发展历程 :K&R C标准——C89或ANSI C标准——C99标准(本学习遵循C99标准);
- C语言的特点:
▪ 使用方便(32个关键字);
▪ 结构化编程(函数,控制语句);
▪ C语言是中级语言(结合了低级语言的直接访问物理内存的优点,和高级语言的便于结构化编程的优点);
▪ 执行效率高(对代码位级操作);
▪ C程序可移植性好(不同计算机和不同操作系统)。 - 第一个C程序——Hello,world!
这个程序的功能是向屏幕打印一个字符串“Hello,world!”
范例1-1
#include <studio.h>
int main(void){ /*main函数*/
printf("Hello,world!\n"); /*输出"Hello,world!"*/
return 0;
}
【运行结果】
【代码解析】这是一个简单的C语言源程序,它必须在一个编译环境中编译链接后才能运行。所有的C程序都有一个main函数,即程序第3行。main函数是程序的入口,程序运行时,先进入main函数,然后依次执行main函数体中的语句。在范例1-1中,进入main函数,先执行第4行语句调用printf函数,输出字符串“Hello,world!”;再执行第5行return语句,return语句会导致函数结束,程序随之结束。
1.2 数据结构与算法
一般来说,程序由 数据结构 和 算法 两个部分组成。数据结构是一个个的实体,而算法是将它们联系在一起的各种手段。
1.2.1 什么是数据结构
数据结构是程序存储、组织数据的方式。
数据结构描述了数据元素之间的逻辑关系,数据必须存储在内存中。数据在内存中的存储结构是数据结构的实现形式,是数据结构在内存中的物理表示。数据结构是程序中处理数据的基本单位,在程序中作为一个整体来使用。
数据结构1——数组结构:
数组是一种可以存放数据的容器,其数据在内存中连续存放,访问数组时,可 以直接使用数组名加下标的形式,比如一数组存有42名学生的信息,数组名是stuArray,数组序号从0开始排。
若要访问第三个学生的信息,只需使用stuArray[[2]]即可。这种数据结构适用于频繁读取数据的情况。
数据结构2——链表结构:
链表也是一种可以存放数据的容器,但其数据在内存中分散存放的。链表中的相邻元素间存在一些关系,这种关系有很多种形式,最典型的一种是每个链表元素都包含下一个元素的地址信息,通过该元素的信息就可以查找到下一个元素。
若同样访问第三个同学的信息,需要先访问第一个同学的信息,从中获得第二个同学的地址信息,然后访问第二个同学的内存,从中获得第三个同学的地址信息,之后才能访问第三个同学的信息。也就是说,在数组中访问一个元素,必须先按顺序从第一个元素往后依次访问,直至得到要访问的元素。这种数据结构适用于删除数据的操作。
1.2.2 什么是算法
算法就是解决一个问题的完整的步骤描述,是指完成一个任务准确而完整的步骤描述。
算法的优劣有两个判别标准:
▪ 空间复杂度——执行算法需要占用的内存空间(代价)
▪ 时间复杂度——执行算法需要消耗的时间资源(效率)
1.3 程序设计概述
结构化程序设计之设计方法——自顶向下、逐步细化,同时严格使用三种基本控制结构(顺序结构、选择结构和循环结构)来构造程序。
▪ 顺序结构:按照它们出现的先后顺序执行的。
▪ 选择结构:程序中存在一些分支,程序通过对一些条件的判断选择执行的分支。
▪ 循环结构:反复执行一系列操作,直到条件为假时跳出。
算法描述方法——算法语言、图形描述、形式语言
▪ 算法语言:有伪代码、各种程序设计语言、计算机语言等;
▪ 图形描述:有流程图、N-S图,图的描述应与算法语言的描述对应;
▪ 形式语言:用数学的方法,可以避免自然语言的二义性。
伪代码:介于程序语言和自然语言之间的算法描述。在编程时,当设计好一个算法后,都要先将它们使用伪代码描述出来,再使用程序语言来实现,其作用就像写文章要先列好提纲一样。
程序流程图:算法的图形描述方式。
N-S流程图:按照结构化设计的思想,N-S流程图为三种基本结构设计了特殊的结构图,并以它们为基础来描述其余所有的算法。
练习:使用伪代码描述使用冒泡排序法将序列从混乱到达排序的算法,并画出其程序流程图或N-S流程图。
伪代码:
算法开始:
设i值为N-1;
当i>0
{
设j值为0;
当j<1
{
如果array[j] > array[j+1]
{
交换第j个元素和第j+1个元素;
}
j自增1;
}
i自减1;
}
算法结束
小结
本笔记介绍了C语言的历史,包括C语言的诞生和C语言的标准化过程。同时,为学习C语言预备了一些基本知识,包括数据结构、算法和结构化程序设计等。